TECH BASICS
Getting started with Jenkins and Jenkins X

Part-1: Jenkins
If I mention open source continuous integration or continuous delivery (CI/CD) tools, the name of Jenkins will automatically pop-up. Easy set-up and deployment make it one of the most powerful tools present in the market which can support the entire software delivery pipeline.
Part-2: Jenkins X
An open-source project that offers automated CI/CD for cloud-native applications
on Kubernetes
. Jenkins X harnesses the power of Jenkins 2.0 and can work with open source tools like Helm, Nexus, Docker Registry, etc to easily build cloud-native applications. In simple language, Jenkins X has a set of tools that simplify operations and automate CI/CD for Kubernetes. I must insist you should read about cloud-native applications
over the internet.
Part-3: What’s the primary difference?
Jenkins is an open-source automation server that can be used to automate all types of tasks. It supports basic infra operations in on-premises as well as in cloud. On the other hand, Jenkins X is made specifically to work with Cloud-Native technologies. When I say Cloud-Native, I am referring to container-based technologies. Everything that is done with Jenkins X can be done with Jenkins.
Part-4: Jenkins architecture
Jenkins runs as a standalone application server called Jetty, in its own process with the built-in Java servlet container. It has 3 main components:
- Master Node
- Worker Node
- Web Interface
Master Node as the name says handles all configuration in Jenkins Eco-system. Jenkins master executes Jobs with help of worker nodes and uses plugins. Plugins are actually modules with different features.
Master-Slave connectivity can be achieved via 2 ways.
- SSH Protocol
- JNLP Protocol

Part-5: Jenkins X architecture
Jenkins X provides a built-in model for CI/CD. It comprises different tools for setting up a standard pipeline. The JX utility is capable of deploying these tools as well as creating environments in the k8s cluster using the concept of namespaces.

Part-6: Bootstrapping Jenkins
Jenkins requires java servlet containers such as Apache Tomcat for standard deployment. You need to have a system with JRE and Tomcat deployed and you can start working straight away. Apart from this, you can deploy Jenkins as a container using Docker or Kubernetes.
Jenkins Deployment Options -
- You can use the package manager (yum, apt, etc) to deploy
- You can download war file and deploy on tomcat
- You can use container images

In this demo, we will do it via package.
# Install JDK
$ sudo apt install openjdk-11-jdk# Install Tomcat
$ wget https://downloads.apache.org/tomcat/tomcat-8/v8.5.61/bin/apache-tomcat-8.5.61.tar.gz$ tar -xvzf apache-tomcat-8.5.61.tar.gz
$ cd apache-tomcat-8.5.61# Download Jenkins$ wget https://get.jenkins.io/war-stable/2.263.2/jenkins.war

Move compressed Jenkins war in webapps folder of tomcat and start it.
$ cd /jenkins/apache-tomcat-8.5.61/bin
$ ./startup.sh

Now Access the Jenkins URL on http://localhost:8080/jenkins/
Jenkins will present series of steps -

Plugin Deployment :-



Admin User Creation


That’s all, Your Jenkins Master is ready to work !

Home Page.

Part-7: Bootstrapping Jenkins X
To Start working with Jenkins X you need to download JX executable binary from github. Once jx application is ready on the system, you can move on to create a cluster for your CI/CD pipeline and workflow. You can either let Jenkins X create a new cluster for you or you can use an existing cluster.
# download
$ curl -L https://github.com/jenkins-x/jx/releases/download/v2.1.155/jx-linux-amd64.tar.gz | tar xzv # move it in path
$ sudo mv jx /usr/local/bin# validate
$ jx version

Jenkins X features are limited to Kubernetes-based clusters.
It needs cluster-admin level access to work on Kubernetes. Jenkins X can be easily installed on an existing cloud provider (e.g. GKE, AKS, EKS, etc.).
Jenkins X Deployment Options -
- Existing Kubernetes Cloud Services
- On-Premises Kubernetes Cluster
- Cluster build by Jenkins X
If you have on-premise k8s cluster use:-
jx install --provider=kubernetes --on-premise
In the case of cloud provider:-
jx create cluster gke --skip-installation
That’s it for this post, I will cover more details in upcoming posts.
Till then, Keep learning, Stay Safe.