Understanding CI/CD paradigms on Kubernetes – in-cluster and out-of-cluster
Continuous integration and deployment to Kubernetes can take many forms.
Most DevOps engineers will be familiar with tools such as Jenkins, TravisCI, and others. These tools are fairly similar in that they provide an execution environment to build applications, perform tests, and call arbitrary Bash scripts in a controlled environment. Some of these tools run commands inside containers, while others don't.
When it comes to Kubernetes, there are multiple schools of thought in how and where to use these tools. There is also a newer breed of CI/CD platforms that are much more tightly coupled to Kubernetes primitives, and many that are architected to run on the cluster itself.
To thoroughly discuss how tooling can pertain to Kubernetes, we will split our pipelines into two logical steps:
- Build: Compiling, testing applications, building container images, and sending to image repositories...