Fast-track your old school Jenkins architecture with Kubernetes

Why is Jenkins so famous?

It is well known that Jenkins is one of the first Java-based open-source automation testing tools that appeared in the market before the cloud era. It allows developers to test their products or software on-the-go. It also offers a wide range of plugins for continuous integration and delivery. Many developers and businesses use it extensively and it enjoys excellent community support. 

In this article, we’ll discuss some significant challenges with Jenkins architecture and how one can evolve from old architecture to modern cloud-based architecture. 

Why are companies looking for better solutions? 

Even though Jenkins has a large market share today, it was not designed for automated cloud environments. It was designed primarily for manual installations. Though an old tool like Jenkins is essential, it’s incredibly challenging to keep up with the cloud ecosystem that is storming the tech world. Jenkins setup, maintenance, integration and deployment are tedious and can often be a nightmare. 

If the entire testing environment of a product is built on Jenkins, then there are several pipelines and master-worker pairs to manage distributed builds. This increases the need for server maintenance leading to high engineering costs.

Such products cannot entirely abandon their age-old resources and invest in new ones. Most organizations prefer a middle ground solution where Jenkins can be more distributed and can only spin master/workers when needed.

One of our customers was also using Jenkins on-premise. They were looking for a solution that could scale and automate processes painlessly.

So, what is the best solution? 

We recommended and implemented the most efficient solution of setting up Jenkins entirely on Kubernetes (K8s) architecture.

K8s is an open-source framework that offers automated deployment, scaling and management services for containerized applications. K8s acts as a base for Jenkins dynamic deployment (master-worker architecture). It wisely utilizes your resources and ensures that your servers and the underlying infrastructure are not overloaded. The overall server maintenance is remarkably simpler and eliminates server overheads.

There are various public cloud service providers such as Amazon Web Services (AWS), Microsoft Azure and Google Cloud Platform (GCP) who offer advanced features to manage Kubernetes architecture. The costs can differ dramatically across cloud providers.

Considering our customer’s environment, budget, and technical challenges, we set up a K8s with GCP. We established Jenkins in the Google Kubernetes Engine (GKE) environment for production. The deployment remained scalable across all existing K8s clusters by tuning cluster-specific parameters. 

Conclusion

By leveraging Jenkins on the K8s cluster an organization can significantly benefit by:

  • Reducing inefficient resource utilization and saving costs
  • Improving scalability using dynamic slaves
  • Improving CI/CD processes
  • Automatically spinning and deleting slaves

So, if your business is still running on old technology, it’s time to move forward. GS Lab offers DevOps-specific services that include cloud security, cloud infrastructure, Kubernetes integration with AWS, GCP, and Azure.

Author
Madhura Naniwadekar | Lead Software Engineer

Madhura has more than 8 years of experience in the areas of DevOps, Networking, Cloud and Automation. She has hands-on experience of  Golang, Python, K8s and several cloud automation tools. She has expertise in cloud development and automation/monitoring/CI-CD for public clouds such as Google, AWS, Microsoft Azure. Madhura is an open sourcerer with many contributions in Ansible.