Fresh off the heels of KubeCon 2018 in Seattle, The Continuous Delivery Foundation was formed a little over a year ago in March 2019 which Harness is a member of. The charter projects were familiar projects to myself of Spinnaker and Jenkins/Jenkins X. Though there was another project I have never heard of before which was Tekton and I was very curious to learn more about the project. Using the answer box aka Google, the project was very green and even searching for “Tekton” would not have the project readily available. Even as today, the Tekton website is still being worked on as the project is rounding out a year.
Fast forward to today, the project continues to grow. Though Tekton is appearing to be more of an engine now e.g powering OpenShift Pipelines and even Jenkins X Pipelines. I went through an exercise by using Tekton by itself with a fresh pair of eyes. The goal is similar to other comparisons we made around Spinnaker and Jenkins X if we have an image e.g Nginx, how can we deploy to an awaiting Kubernetes cluster, in my case, Amazon EKS.
The video is about an hour-long where I go through the Tekton Tutorial. The wirings seemed to work together in Tekton; where I drew the line in the sand was creating source-to-image build steps. When looking at Tekton for yourself, I recommend the IBM Tekton Tutorial which does a good job listing out Tekton concepts. I was able to get Nginx deployed from zero to deployed including installing a Harness Delegate into my EKS cluster in about 5 minutes at the end of the video.
The “Tektonic” Video
Without further ado, here is the video. Compared to the other videos a new day didn’t elapse and no need for a change of shirt.
Methodology
Deploying an image is a good starting point for many people along their journey. Depending on existing development methodologies, moving to a GitOps-based approach can be difficult. Tekton with proper wiring can follow a stringent GitOps model or can wean away once the proper Tekton Objects are generated and in place per pipeline.
Leveraging Tekton there are several objects that you need to create. Familiarizing yourself with a Tekton Task and a Tekton Pipeline, both have Run objects which are needed to execute. Since Tekton leverages Custom Resource Definitions you do need to keep track of these objects.
I chose to run my Kubernetes Cluster in AWS with Amazon EKS. Starting out with the Tekton Setup requires a persistent area in which I was able to spin up quickly in Amazon S3 as I am an administrator on my account. Since I did not leverage source-to-image or other persistent Tekton Pipeline steps, the S3 bucket was never written to.
As Tekton is moving towards being an engine, once you have access to Tekton you have access to what Tekton has access to. I could not find at the time any sort of permissions out of the box from the project which access control is a pillar of the Harness Platform.
Towards the end, I fired up the Harness Platform and was able to get success pretty quickly.
This is thanks in part to the Harness CD Abstraction Model where loading up the moving parts is easy and assembling the pipeline is made rapid off of the parts.
In comparison below is the wiring needed for a basic Tekton Pipeline.
The Harness Platform is purpose-built to accept a wide swath of workloads and confidence building steps in a convention-based fashion. The Harness Platform can supercharge your Continuous Delivery goals by allowing many methodologies to be orchestrated by the platform in an easy to consume fashion.
Having the ability to have looked over several tools such as Spinnaker, Argo, and now Tekton, there is a lot of engineering expertise required in these tools. At DeliverConf, a recent talk talked about the need for composition; decomposing your pipeline into exactly what you need when you need it which code-heavy solutions allude to. The difficulty in that is coupling your deployables and infrastructure(s) to have the right components at the right time to execute a deployment. It is very reminiscent of designing the actual piece of software you are deploying; managing features across the journey.
We have taken a different approach with the Harness Platform. We have baked in an easy to consume interface acting as a system of record with convention-based deployments and deployment patterns. Sign up for a Harness Trial today to free yourself from building a platform for your platform.