Giter Club home page Giter Club logo

canary-deployment-nodejsapp's Introduction

Canary Deployment NodejsApp

Pre-requisites:

- Install GIT
- EKS Cluster
- Install ALB-Ingress-Controller
- Install Istio
- Request a Cerficate using Certificate Manager
- Create Hosted Zone with our Domain Name
- External DNS Setup

EKS Cluster Setup:

EKS Cluster Setup

ALB Ingress Controller Setup:

ALB Ingress Controller

Istio Setup:

Istio

Create Hosted Zone with our Domain Name

image

Request a Cerficate using Certificate Manager

image

External DNS Setup:

External DNS

Install GIT:

yum install git -y

Install Docker:

yum install docker -y
service docker start

Clone code from github:

git clone https://github.com/cloudtechmasters/Canary-Deployment-NodejsApp.git
cd Canary-Deployment-NodejsApp

Build Maven Artifact:

npm install

Build Docker image for Springboot Application

docker build -t cloudtechmasters/node-web-app:v1 .

Docker login

docker login

Push docker image to dockerhub

docker push cloudtechmasters/node-web-app:v1

Upgrading for nodejs Application:

Edit our our application and Build docker image with new tag:

docker build -t cloudtechmasters/node-web-app:v2 .

Push Docker image to docker hub with tag v2:

docker push cloudtechmasters/node-web-app:v2

Deploy nodejs Application using below commands:

kubectl apply -f deployment-v1.yml
kubectl apply -f deployment-v2.yml
kubectl apply -f service.yml

Check Deployments, Pods and Services:

kubectl get deploy
kubectl get pods
kubectl get svc

Create an Istio Gateway, VirtualService and default destination rules

kubectl apply -f istio-rules.yml

Check Istio Gateway

kubectl get gateway -n istio-system
kubectl get virtualservice -n istio-system
kubectl get destinationRule -n istio-system

Run ingress for checking output with DNS name

kubectl apply -f ingress.yml

Check Load Balancer of ALB ingress controller attached to ingress or not

kubectl get ingress

Two records creates automatically in Route53 because of External DNS

image

Go to UI and check our external dns, which showing output application with HTTPS

https://nodejs.cloudtechmasters.ml/

image

Check application number of times you can get to know how our applicaiton will work based on Destination rules:

https://nodejs.cloudtechmasters.ml/

image

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.