I recently heard about Tekton as an alternative for Jenkins on Red Hat OpenShift. What got my attention was that Tekton uses Operators as building blocks, and Operators are something I am also interested in. I don't want to get ahead of myself, though; so we'll start with installing Tekton on Red Hat OpenShift. Installing on Kubernetes is also possible, but for now the focus is on OpenShift.
To install Tekton, you need to be cluster-admin on a Red Hat OpenShift cluster. The reason for that is that the Controller must run with anyuid
. Just have an OpenShift or Minishift cluster at your fingertips on which you can be cluster-admin.
We are going to use a dedicated project to install the Tekton Operators in:
oc new-project tekton-pipelines --display-name='Tekton Pipelines' oc adm policy add-scc-to-user anyuid -z tekton-pipelines-controller oc apply --filename https://storage.googleapis.com/tekton-releases/latest/release.yaml
This creates two deployments in the tekton-pipelines project, named tekton-pipelines-controller
and tekton-pipelines-webhook
. It is fast to start up, but to see if the pods are running, use the following oc
command and wait for the 'Running' status:
oc get pods --namespace tekton-pipelines --watch
Use CTRL + C to exit watch mode.
Now that Tekton is running, we need to define a Task with steps saying what to do. We also need a TaskRun definition saying which Task to run. We need two yaml files for that. How the files are named does not really matter, but I am using the convention to end them with -task.yaml
and -task-run.yaml
.
A Task definition file named echo-hello-world-task.yaml
:
apiVersion: tekton.dev/v1alpha1 kind: Task metadata: name: echo-hello-world-task spec: steps: - name: echo image: ubuntu command: - echo args: - "hello world"
And a TaskRun definition file named echo-hello-world-task-run.yaml
:
apiVersion: tekton.dev/v1alpha1 kind: TaskRun metadata: name: echo-hello-world-task-run spec: taskRef: name: echo-hello-world-task
We will apply the two files with the following commands:
oc apply -f echo-hello-world-task.yaml oc apply -f echo-hello-world-task-run.yaml
As soon as both files are applied they will get directly executed. To follow the output of the TaskRun, use the command:
oc get taskruns/echo-hello-world-task-run -o yaml
Look through the output and search for:
status: conditions: - lastTransitionTime: 2019-07-08T18:48:15Z status: "True" type: Succeeded
If it looks almost the same as above, you have executed the first part of what will become a complete Tekton pipeline.
Last updated: September 10, 2020