-
Notifications
You must be signed in to change notification settings - Fork 6
Milestone 3
- 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.

- 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:
-
Without Social Media Login http://149.165.156.145:30030/
-
With Social Media Login (ngrokking) http://a7b7376421a0.ngrok.io/
- To create a network, router, security groups, floating IPs, key-pairs, and instances
- Starting Instances
- Setup Kubernetes in each Instance
- Connecting Worker to Master
- 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.
source TG-CCR180043-openrc.sh
provide IU Jetstream password
ssh-keygen
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
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. The UI can be accessed at the URL Master-IP-Address:Port-Number. However, social media authentication services like Firebase fails to redirect to such URL. Hence, we need to resolve above raw URL using ngrok:
cd ..
curl --output ngrok.zip https://bin.equinox.io/c/4VmDzA7iaHb/ngrok-stable-linux-amd64.zip
unzip ngrok.zip
rm -rf ngrok.zip
./ngrok authtoken 1pt9BqUMTvfmK5n1FVrDQ1iu1d4_g96yAVNGfNwJaAq4zcSh
./ngrok http http://149.165.156.145:30030/ --log=stdout > ngrok.log &
cat ngrok.log
The above process will create global localhost in the form of "http://random-id-number.ngrok.io/". This new URL can be found in the output of the above cat command. This new URL can now be used after updating it in the Firebase Authorized Domain (OAuth redirects) section.
7. To destroy kubernetes cluster and deallocate resources use the below commands. Before, running following commands, you need to exit the Kubernetes cluster - Master nodeby entering "exit" command. This will get back to the original Linux instance (mentioned in Step-1). Now run below commands:
source TG-CCR180043-openrc.sh
cd ~/PingIntelligence/
bash ./jetstream_kubespray/inventory/kubejetstream/terraform_destroy.sh
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.
