How you can achieve Continuous Deployment through Kubernetes

author

Aziro Marketing

Oct 24 - 0 min read

How you can achieve Continuous Deployment through Kubernetes
play-pause-btn

Audio : Listen to This Blog.

To achieve continuous deployment on AWS cluster through kubernetes we have to undertake the following tasks

  • Make an environment for continuous deployment
  • Create Jenkins job for CD

First of all we will discuss about how to make an environment for continuous deployment. Before creating a cluster on AWS EC2 through kubernetes, we need to install some software in the client machine. The client machine could be an EC2 instance or desktop. We assume that our client machine is EC2 instance.
These are the software we need to install on client machine:

  1. Java 8
  2. Maven 3.x
  3. aws-cli
  4. Docker.
  5. Jenkins
  6. Git

Now connect the EC2 instance through command line and change user to Jenkins. To connect EC2 instance, use the given command from the command line.

$ssh -i " ubuntu@

Example

$ssh -i "mypem.pem" ubuntu@ec2-35-160-126-78.us-west-2.compute.amazonaws.com

Change user to Jenkins. A Jenkins user should have access to all the above software.

Following are the Steps to Launch the Kubernetes Cluster on EC2:

A. Create AWS profile.
The command is given below for creating AWS profile

$aws configure --profile 

B. Now export AWS profile

$export AWS_DEFAULT_PROFILE = ;
$export KUBERNETES_PROVIDER=aws;

C. Download kubernetes version 1.5

$wget -q -o - https://github.com/kubernetes/kubernetes/releases/download/v1.5.7/kubernetes.tar.gz | bash
$tar -xvzf kubernetes.tar.gz

After unzipping the downloaded zip file, we get a kubernetes folder, which contains all the default configuration file for launching cluster on AWS, also we can override these configurations.
The default setting is available in the location /kubernetes/cluster/aws/config-default.sh. Here are some configurations which are overridden.

export KUBE_AWS_ZONE=eu-west-1c
export NUM_NODES=2
export MASTER_SIZE=m3.medium
export NODE_SIZE=m3.medium
export AWS_S3_REGION=eu-west-1
export AWS_S3_BUCKET=mycompany-kubernetes-artifacts
export KUBE_AWS_INSTANCE_PREFIX=k8s

A better way to export is to keep this configuration into “.bashrc” file.

D. Start and stop cluster
Go to the given location to get script for start and stop /kubernetes/cluster/
Here you will get kube-up.sh and kube-down.sh for start and stop respectively.
Also we can automate this to create a Jenkins job.
The next important thing is to create a Jenkins job for continuous deployment. So let’s consider an example of spring boot microservice to deploy on AWS cluster.
Assume a spring microservice has the following files which are mandatory for creating a Jenkins job.

  • Dockerfile : This file is use for creating Docker container.
  • Jenkinsfile: It has defined some steps on how Jenkins must perform a task in order to complete a job.

Following are the tasks performed which are contained in the Jenkinsfile

  1. Clone the workspace
  2. Build project with running Junit test cases.
  3. Create an docker image
  4. Push docker image to docker registry (docker hub)
  5. Execute kubectl command for deploy docker image to aws cluster.

Jenkinsfile code example.

node
{
  	checkout scm
  	stage('Run Test and Package')
  	{
     		sh 'mvn clean package'
  	}
  	stage('Create Docker Image')
	{
		docker.build("dockeraccout/myimage:1")
  	}
  	stage('Create Docker Image and push')
	{
		 sh "docker login -u  -p  -e "
		 docker.build("").push()
	}
	Stage(Deploy on cluster)
{
           sh 'kubectl  apply -f ./docker/deployment.yml'
	     sh 'kubectl apply -f ./docker/service.yml'
	}
}
How you can achieve Continuous Deployment through KubernetesHow you can achieve Continuous Deployment through KubernetesHow you can achieve Continuous Deployment through Kubernetes

LET'S ENGINEER

Your Next Product Breakthrough

Book a Free 30-minute Meeting with our technology experts.

Aziro has been a true engineering partner in our digital transformation journey. Their AI-native approach and deep technical expertise helped us modernize our infrastructure and accelerate product delivery without compromising quality. The collaboration has been seamless, efficient, and outcome-driven.

Customer Placeholder
CTO

Fortune 500 company