Skip to content

Milestone 3

Sudip Padhye edited this page Mar 31, 2021 · 24 revisions

TASKS:

  • Dockerized all Microservices
  • Established CI/CD pipeline using Jenkins
  • Deployed containerized microservices using Kubernetes
  • Automation Scripts for management of VMs and Deployment of Kubernetes
  • Deployed entire system on vanilla Jetstream VMs

Our first step was to create dockerized versions of each micro-service. After that, we integrated all microservices to be continuously deployed using Jenkins Thus, Jenkins provided continuous deployment by pushing every new git commit into docker hub ( docker registry) Continuous deployment was achieved via ssh-ing into our kubectl pod through the Jenkins pipeline. Each new build inside the docker hub deploys the image into the Kubernetes cluster.



Flow

  • Push commit on Github repo on specific microservice branch
  • This will trigger a Jenkins build for a new docker image
  • Jenkins will also check on the test cases written for that image before pushing the image on Docker Hub
  • Once a new image is created, Jenkins will SSH to Kubernetes Server and deploy the new microservice image. This will also remove the previous version of that microservice

Website Deployed:


Getting Started

  1. To create a network, router, security groups, floating IPs, key-pairs, and instances
  2. Starting Instances
  3. Setup Kubernetes in each Instance
  4. Connecting Worker to Master
  5. Deploying Ping Intelligence app on Kubernetes Cluster

Note: In order to create another set of instances and deploying Kubernetes, you will need to deallocate previously allocated resources using Step-6 and then start afresh from Step-1.

1. Download openrc.sh file to the Atmosphere instance/local system/VM (requirement: Linux based OS)

2. Run the following command:

  source TG-CCR180043-openrc.sh

provide IU Jetstream password

3. Create SSH Key (press enter for options)

  ssh-keygen 

4. Copy paste the below command

  git clone https://github.com/airavata-courses/PingIntelligence.git && cd PingIntelligence && git checkout automation-script &&
  git clone https://github.com/zonca/jetstream_kubespray &&
  cd jetstream_kubespray &&
  git checkout -b branch_v2.15.0 origin/branch_v2.15.0 &&
  cd .. &&
  bash pingintelligence-automation-script.sh

5. Enter the cluster, Setup Kubernetes Cluster and deploy app using the following command:

  sudo su
  git clone https://github.com/airavata-courses/PingIntelligence.git &&
  cd PingIntelligence &&
  git checkout kubernetes_files &&
  kubectl apply -f ../PingIntelligence/ &&
  sleep 100 &&
  kubectl get pods -o wide 

at the end of this process, you will be able to see all the running pods on the Cluster

6. To destroy the Kubernetes cluster and deallocate resources use the below commands. Before, running the following commands, you need to exit the Kubernetes cluster - Master node by entering "exit" command. This will get back to the original Linux instance (mentioned in Step-1). Now run the below commands:

  source TG-CCR180043-openrc.sh
  cd ~/PingIntelligence/
  bash ./jetstream_kubespray/inventory/kubejetstream/terraform_destroy.sh

Jenkins

We have deployed our Jenkins server at http://149.165.168.194:8080/

Username & Password in the submitted file on canvas

If instances are created using the above method then it will have a different SSH key and the same needs to be updated in the Jenkins Credentials Section.

Clone this wiki locally