From a479e2c13a60541e269b392775bf56e41da741f0 Mon Sep 17 00:00:00 2001 From: Daniel Jones Date: Thu, 13 Jan 2022 11:57:22 +0000 Subject: [PATCH] expand and reorder tekton, argo --- content/blog/ci-shootout-conclusion.md | 50 ++++++++++++++------------ 1 file changed, 27 insertions(+), 23 deletions(-) diff --git a/content/blog/ci-shootout-conclusion.md b/content/blog/ci-shootout-conclusion.md index 0d225d6b..71cef9fb 100644 --- a/content/blog/ci-shootout-conclusion.md +++ b/content/blog/ci-shootout-conclusion.md @@ -238,8 +238,32 @@ It is difficult to recommend any new installs of Jenkins. Most competitors are b > > * have a choice +## Tekton and Argo Workflows commonalities + +Both systems have a lot in common, so let's discuss the design constraints that they share before considering them in isolation. They really are very similar, and you'll be able to achieve similar outcomes with either. + +### Kubernetes-only + +Tekton and Argo Workflows are both Kubernetes-native, which means they get to leverage a great container scheduler by default, and are built using modern paradigms. + +There's one obvious problem with being Kubernetes-based though - what happens if you don't have a Kubernetes cluster? What if you're writing a pipeline to _create_ a Kubes cluster? + +I've genuinely been in a conversation with platform engineers who have never known a world before Kubernetes, who are mystified how to do CI without a Kubernetes cluster. + +### Webhooks, public internet access + +Neither Tekton nor Argo Workflows make it easy to poll external _things_ (eg Git repos, S3 buckets, FTP servers...), and instead the Kubernetes cluster running these systems need to be addressable from where-ever your code lives. If you're hosting code on public GitHub, then that means your cluster needs to be reachable from the outside world. + +This isn't really feasible in an air-gapped, regulated environment like a bank. + +### Single entry point + +Tekton and Argo Workflows pipelines can only be triggered for one reason - a single code repository changing. If you have lots of reasons for a build to happen (perhaps you're integrating many upstream releases) then you're going to have to do a lot of work to stitch many jobs and pipelines together. + ## Tekton +Tekton gives the impression of a set of building blocks from which more productive CI/CD solutions can be made. There's flexibility to be had here, but the low level of abstraction means there are lots of building blocks to put together. + ### Tekton Hub Tekton hub is a great idea. As anyone who's spent a few years in the industry will tell you, most CI pipelines end up repeating a lot of simple but error-prone tasks. Being able to leverage those from the community is great, and should be a productivity boon. @@ -247,7 +271,7 @@ Tekton hub is a great idea. As anyone who's spent a few years in the industry wi > ### Use Tekton if you: > > * are building a higher level of abstraction -> * want to get started quickly +> * have bespoke needs, and want to craft your own CI/CD system > * use Slack alerting rather than a build monitor > > ### Don't use Tekton when you: @@ -259,6 +283,8 @@ Tekton hub is a great idea. As anyone who's spent a few years in the industry wi ## Argo Workflows +The suite of Argo components combine to make provide a higher level of abstraction than Tekton. + > ### Use Argo Workflows if you: > > * want to get started quickly @@ -270,28 +296,6 @@ Tekton hub is a great idea. As anyone who's spent a few years in the industry wi > * cannot use webhooks > * need to trigger builds for multiple reasons -## Tekton and Argo Workflows commonalities - -Both systems have a lot in common, so it makes sense to address those together. - -### Kubernetes-only - -Tekton and Argo Workflows are both Kubernetes-native, which means they get to leverage a great container scheduler by default, and are built using modern paradigms. - -There's one obvious problem with being Kubernetes-based though - what happens if you don't have a Kubernetes cluster? What if you're writing a pipeline to _create_ a Kubes cluster? - -I've genuinely been in a conversation with platform engineers who have never known a world before Kubernetes, who are mystified how to do CI without a Kubernetes cluster. - -### Webhooks, public internet access - -Neither Tekton nor Argo Workflows make it easy to poll external _things_ (eg Git repos, S3 buckets, FTP servers...), and instead the Kubernetes cluster running these systems need to be addressable from where-ever your code lives. If you're hosting code on public GitHub, then that means your cluster needs to be reachable from the outside world. - -This isn't really feasible in an air-gapped, regulated environment like a bank. - -### Single entry point - -Tekton and Argo Workflows pipelines can only be triggered for one reason - a single code repository changing. If you have lots of reasons for a build to happen (perhaps you're integrating many upstream releases) then you're going to have to do a lot of work to stitch many jobs and pipelines together. - ## Concourse ### Single pane of glass