Modern orchestration platforms in CI/CD

With the mass adoption of modern orchestration systems, a split in CI/CD paradigm has occurred. This has led to a shift towards the separation of packaging (build pipelines) and delivery (deployment pipelines).

Initially, everything used to be seen as an organic whole, cause we were creating build and deployment pipelines using a single tool, for example, Bamboo, Jenkins or GitLab. However, now such entities are considered separately having an artefact (packaged service) to be created using a separate tool and run on an orchestration platform such as Nomad, Kubernetes (K8s) or OpenShift. This approach became a universal packaging method for all platforms as it creates a docker image.

At the moment, Kubernetes has 80% of the market, and this is worth considering, as it got everything “out-of-the-box” (Ingress and ALB/NLB mapping, secrets management, etc.).

Curiously enough that you can use any legacy platform (say, Bamboo or Jenkins) in order to build an image. Major task here is to create an artefact, i.e. build your project and pack it into a docker image.

Modern orchestration platforms also require a new Git-centric deployment paradigm to work properly. Such promotes an immutable and declarative approach of the deployment process. To deliver an application packaged as a docker image, we just need to specify that the orchestration platform should control the deployment state in the Git system. Thus, we describe the platform’s state we want to achieve directly in Git. Btw, the most popular solution today is ArgoCD.

It’s worth noticing that this approach was not to everyone’s taste, since this changes the paradigm on one hand and complicates the work on another. Many solution providers have come up with hybrid options, such as Jenkins X, which uses old routines but could work with modern orchestration systems. Such hybrid systems are rather time-consuming in deployment and maintenance as well as resource-intensive (memory, disk and CPU consumption), however, allow you to continue working with K8s the old-fashioned way.

So we would advise you to take a closer look at this new Git-centric deployments paradigm and build your project using any platform that allows you to create a docker image (say, GitLab) and then deliver it to K8s cluster using ArgoCD.