Cat in a pipeline
How can we make the entire software production process, from design and development to testing to going live, simpler and more effective? How can we create a sense of harmony through the elements of the developmental process that take place in various clouds and hybrid environments? It seems like the answer to all these questions lies in a robot cat.
Now, more than ever, time is one of the most crucial factors in the software market. The business return of developments greatly depends on how much time it takes to produce, test, deliver and launch applications. It logically follows that the more elements of the production process are involved and automated in a unified system, the more effective the process will be. It is becoming increasingly popular to use solutions and platforms that take the particular work phase to a more abstract level in a growing number of stages of the development-testing-launching process, thus significantly simplifying the process. Programming is supported by low-code platforms, whilst the installation and operation of software is typically managed through a container-based application management system, mainly in Kubernetes. Are there any solutions that are able to integrate all the production phases, thus accelerating the effectiveness of the CI/CD (Continuous Integration, Continuous Delivery, Continuous Deployment) process?
There are numerous applicants vying for this role (from Buildkite to AWS CodePipeline and Jenkins), but none of them are suitable for all projects, so the software isn’t capable of functioning as a universal pipeline. However, Tekton has risen to the challenge – with its robot cat logo – aiming for nothing less than establishing the next generation of the CI/CD methodology.
What could take the delivery-pipeline technology to the next level?
Let’s start with a few principles, the platform must be declarative and must be intrinsically familiar with the concept of the“pipeline” (interconnecting pipes) and the logic behind its creation, without the need to code this in advance.
It’s important for the established pipeline to be convertible,offering a number of variations. Also, it is indispensable for the process created through its use to be reproducible (i.e. always producing the same outcome from the same parameters). Additionally, in order for a solution to become generally acceptable for conducting the CI/CD process, a primary requirement is for it to be able to manage all the processes taking place in the various clouds in a unified manner.
- This latter requirement includes the greatest novelty necessary for the paradigm shift. In order for a CI/CD platform to be truly able to cooperate with all clouds that are necessary from a development standpoint, it must more or less satisfy the following conditions:
- be open source software
- be capable of editing different application elements organised into containers
- safely and dynamically manage vast numbers of containers
- satisfy the condition of scalability
Simply put, a platform is “good” if it is familiar with the technology of the containers (i.e. the Docker methodology)and it is capable of macro-level management and scaling of containers, thus adapting to the Kubernetes system.
Integration, but how?
Tekton successfully satisfied the conditions above, i.e. the Kubernetes-integration. The application management platform offers numerous objects and resources for developers (including pods,deployments, services, etc.) in a pre-defined manner. Yet this set can also be expanded with self-defined, newly created objects, so-called CRDs (Custom Resource Definitions). The solution offered by Tekton is to integrate the pipeline and related elements and operations in the Kubernetes system into such CRDs, thus making it suitable for managing the pipeline and executing the tasks received through it.
The most basic element of the technology is the Step, which consists of a single, simple operation – which is then incorporated into Kubernetes as a container. The task-based object consists of sequentially executed series of steps. This object becomes accessible for the application management software through the previously mentioned CRD solution. The next stage in the hierarchy is the pipeline CRD itself, which consists of multiple tasks. This allows us to build a graph of the tasks and to define how to and when to run the various branches. After the static objects,we must also mention the runtime CRD, which contains the tasks and order of operations for running the tasks and pipelines.
As we can see, Tekton is capable of integrating practically all the important pipeline functions in Kubernetes. Therefore, it has everything it needs to fulfil its purpose and create a general application management pipeline capable of managing all platforms. Thanks to this generalisation, we can greatly increase the efficiency of software development in the future.