Most probably you already know what Jenkins is and maybe you are already using it for years to help you to automate all kind of things, specially software development process with continuous integration and delivery.
From mid 2018 we have another guy on the stage: Jenkins X. This is the first post of a series of posts where we will talk about different aspects of this powerful and maybe not very well known tool.
Yes, you may think that this is just a new version naming of the classic Jenkins, but in this case is totally different. Jenkins X is a completely different beast.
Jenkins X is a new tool. They creators define it as an ‘open source opinionated way to do continuous delivery with Kubernetes, natively’. And yes, this is exactly what it is. 🙂 Jenkins X helps to deliver your application into a Kubernetes ecosystem. It uses DevOps best practices and helps you to increase the development speed.
Jenkins X combines and runs a selection of tools to achieve its final objective: simplify the CI/CD process of your applications into a Kubernetes cluster. Some of the tools that Jenkins X uses to accomplish that are: Helm, Tekton, Prow, Draft, Monocular, ChartMuseum, Nexus, etc.
It comes in two flavors:
- Using a Static Jenkins Server
- Supports GitHub, GitHub Enterprise, BitBucket Cloud, BitBucket Server, GitLab repositories
- Installs a legacy and monolithic Jenkins server in a JVM in a container in a k8s pod that uses the same Jenkinsfile (Groovy-DSL based)
- The entire Jenkins Server pod is always runing
- This is not a real native K8s CD and, as far as we know, this type of installation will be deprecated.
- Using Serverless Jenkins X pipelines with Tekton and Prow
- At the time of this writing, only supports GitHub due to Prow restrictions
- Uses a new jenkins-x.yml file to define the pipelines instead of Groovy-DSL Jenkinsfile
- All pipelines execution creates new pods on demand with all necessary micro-services that runs only when necessary
- We recommend this one 🙂
Jenkins X can create an entire Kubernetes cluster for you or can be installed in an existing cluster you have. Supports all major Kubernetes managed systems including EKS (Amazon), GKE (Google), AKS (Azure) and also IBM Cloud, OpenShift and Pivotal. And, of course, also supports on-premise Kubernetes installations.
With Jenkins X is very easy deploy applications into a Kubernetes cluster. When you commit your changes to a Git repository, a lot of things happen under the hood:
And the final result is your application installed in Staging or Production environments (these are the default ones but you can define as many environments you need!).
Yes, you may think that this is a very complex thing, but not everyone needs to understand all these details and/or understand of all the components and services involved in the build and deployment process. For the majority of users, the only important thing to know and/or understand is that pushing changes to Git will result in the execution of the pipeline (defined in the new jenkins-x.yml file) and have the application installed in the desired environment. Jenkins X simplifies all the process by making complicated processes simple ‘automagically’. 😉
If you want to know more about Jenkins X stay tuned. Would you like to implement Jenkins X in your Company? Please, contact us and we will be glad to help you. Feel the Geko way!