Learn How Continuous Delivery is Implemented in Kubernetes

Source:- 126kr.com

In a modern development environment, continuous integration and development are central to the success of a software development project. To be successful when using a continuous delivery approach, you need to avail short lived development and test environments for handling code changes. The ability to quickly create and terminate containers in Docker and Kubernetes is a feature that very well supports the continuous delivery model. In this tutorial, we will abbreviate continuous development/continuous integration as CI/CD.

As a developer, CI/CD offers you an opportunity to develop better software and quickly deliver solutions to your clients. Despite the benefits offered by CI/CD, you will face challenges in implementation because of the large number of micro services you need to handle as well as keeping up with innovations related to containers. Tools have been developed to support developers and in this we will discuss how we can use Jenkins and Fabric 8 in implementing CI/CD. Another tool that can be used to implement CI/CD is Gulp, but we will not discuss it in this tutorial because of space limitations.

Fabric 8 is an open source platform which offers you an environment to implement CI/CD. Continuous delivery is enabled through micro-services creation, building, testing and deployment. Continuous improvement is enabled through tools to run and manage CD pipelines. Fabric 8 can be used together with Docker, Kubernetes, Google Container Engine and OpenShift V3.

The features that are provided by Fabric 8 are briefly mentioned below: –

A web based developer console which enables creation, editing, deployment and testing of micro-services.

Management tools for central logging, metrics collection and Java container management.

Apache Camel integration, RESTful and SOAP API visualization and management

Java tools to enable Java developers fully exploit Kubernetes.

Implementing CI/CD using Jenkins

To install gofabric 8 on a local Linux computer you first need to install the kvm driver. The commands below are used to download version 0.7.0 to a specific directory and install it.

1
2
3
4
5
 
 sudochmod +x /usr/local/bin/docker-machine-driver-kvm
 
sudoaptinstalllibvirt-binqemu-kvm

The command below will install gofabric 8.

curl -sShttps://get.fabric8.io/download.txt | bash

To complete installation, we need to add gofabric 8 to our path. Open bashrc in an editor, add the path at the end, save and reload.

To start a cluster and download the tools needed to run a single node cluster, use this command

gofabric8start

After starting your cluster, you can open the browser console using this command gofabric8 console.

In the previous section, we demonstrated how to run a cluster locally. The easiest way to set up gofabric in the cloud is through stackpoint which supports Amazon, Google and Azure public clouds. Login to your stack point account here https://stackpoint.io . After logging in, click on select a provider then choose the cloud you would like to use. In this tutorial, we will demonstrate the use of Google Compute Engine (GCE) so, select that. To connect to our cloud, we need to provide credentials. To create credentials login to your GCE console here https://console.cloud.google.com and create a new project. Click on Products and Services, API manager, Credentials and then select service account key.

After creating your key, copy and paste it in credentials box on Stackpoint, then click create, and click on submit.

Provide a cluster name and any customizations you need, then click on submit.

Your cluster will be created.

To start using our cluster, we need to wait for the cluster to complete building, download kubeconfig, export kubeconfig path and set its context using the commands below.

1
2
3
exportKUBECONFIG=~/Downloads/kubeconfig
 
kubectlconfiguse-contextstackpoint

We can then check our cluster information using this command

kubectlgetnodes

Another technology that we can use to implement CI/CD is Jenkins. A plugin is available in the form of a Docker container to simplify Jenkins setup. To pull the image and create a container, we can use the commands below.

1
2
3
sudodockerpullcsanchez/jenkins-kubernetes
 
sudodockercreate --namejenkins-k8scsanchez/jenkins-kubernetes

The above approach to setting up Jenkins data will be stored in jenkins-k8s container.

To use another container for data storage, we can setup Jenkins using the command below.

1
sudodockerrun --volumes-fromjenkins-k8s -p 8080:8080 -p 50000:50000 -v /var/jenkins_homecsanchez/jenkins-kubernetes

After setting up Jenkins successfully, the message shown below will be displayed.

After creating our container we need to navigate to http://localhost:8080 and login as admin user using the password provided to start configuring Jenkins.

After logging in you will be requested to install the most useful plugins to the Jenkins community or select plugins you would like to install. After the plugins are installed, you will be notified of successful installation.

The first configuration we need is creating an admin user. Provide information required such as user name, password and email address.

Create a new job. You will need to provide project settings such name and project type among others.

To configure Kubernetes settings, click on Manage Jenkins, Configure System, Cloud, Add a New Cloud, then Kubernetes. Fill in the required parameters depending on your environment. An example of information required is shown below. After providing information, click on save and apply.

When you would like to use Jenkins as one of your slaves, there is a jnlp-slave image available on Docker hub.

In this post, we introduced CI/CD and noted it provides developers with benefits but presents some challenges. We noted Jenkins, fabric 8 and Gulp are technologies that have been developed to support implementation of CI/CD in Kubernetes. We demonstrated how to install kvm driver and set up a gofabric 8 cluster locally. We also demonstrated how to setup a kubernetes cluster on GCE using Openstack. Finally, we demonstrated how to set up Jenkins.

Subscribe
Notify of
guest

This site uses Akismet to reduce spam. Learn how your comment data is processed.

0 Comments
Inline Feedbacks
View all comments
0
Would love your thoughts, please comment.x
()
x