We are planning to setup Highly Available Jenkins setup in container platform using kubernetes. We are looking at setting up one Active master and another master in standby mode. Jenkins data volume is going to be stored in a global storage that is shared between the two master containers.
In case the active master is not available then requests should fail over to other master. And the slaves should be communicating only with active master.
How do we accomplish Jenkins HA setup in active/passive mode in kubernetes. please provide your suggestions.
We would like to achieve as shown in the diagram from below link
If you are OK with an opinionated framework , then JenkinsX may help you. It comes by default with the features as required by you.
There have been active considerations to emulate active/passive setup for containers, but note that as a product feature this really is not a must have and hence not built in. This very well may be implemented as an OOB feature integration wherein you have to craft your applications to at least do the following:
If you are looking for something bare minimal than, configuring liveness/readiness probes may just do the trick for you. As always, you should avoid getting into a practice of mass mutating pod labels with ad-hoc patches for role selection
This contradicts with how one should IMHO run applications in Kubernetes. Active/passive is a concept for the past century.
Instead, configure a health check for the Jenkins Deployment. If that fails, Kubernetes will automatically kill the task and start a replacement (which will be available only a few seconds after detecting the active one being unhealthy).