DEV Community

Cover image for Tekton 101
mkdev.me for mkdev

Posted on • Edited on • Originally published at mkdev.me

Tekton 101

In this article, we are going to have an initial technical view of how to install Tekton and set up your first pipeline, diving deep into every detail.

Remember that this is not our first article about Tekton. If you want to learn how it works internally, there is an article by Kirill Shirinkin called "What is Tekton", so I recommend you first read this article and then come back here.

Let's start with Tekton, our powerful Kubernetes-native tool for building CI/CD systems.

First, we are going to install Tekton on our Kubernetes cluster.

kubectl apply --filename https://storage.googleapis.com/tekton-releases/pipeline/latest/release.yaml 
Enter fullscreen mode Exit fullscreen mode

By running this command, we're applying a set of resources that Tekton needs to operate. This lays the foundation that will allow us to create and run pipelines in the future.

To ensure everything is in order, we'll check the pods in the 'tekton-pipelines' namespace. If Tekton was installed correctly, we should see several running pods.

kubectl get pods --namespace tekton-pipelines 
Enter fullscreen mode Exit fullscreen mode

Perfect! The pods you see are Tekton's internal components, working together to enable us to define and run pipelines.

A pipeline in Tekton consists of 'Tasks', which define specific steps of work. Think of a 'Task' as an individual function, and a pipeline as a series of those functions running in a specific order or parallel, as defined.

Let's define our first 'Task'. This will be a simple 'Hello World'.

apiVersion: tekton.dev/v1beta1 kind: Task metadata: name: hello spec: steps: - name: say-hello image: ubuntu command: - echo args: ["Hello World"] 
Enter fullscreen mode Exit fullscreen mode

Here, we're defining a 'Task' that simply prints 'Hello World' using an Ubuntu image. Each 'Task' in Tekton is defined as a series of steps using container images to execute commands.

Once defined, we apply the 'Task' to our cluster.

kubectl apply -f hello-task.yaml 
Enter fullscreen mode Exit fullscreen mode

And now, using tkn, Tekton's command line tool, we'll start it. In the next videos, we will see how the Event Listener works, but today we are focusing on the tkn command.

tkn task start --showlog hello 
Enter fullscreen mode Exit fullscreen mode

Great! You should see a 'Hello World' in the output.

Now, we'll build a pipeline that uses this 'Task'. A pipeline is essentially a sequence of 'Tasks' that run in order or in parallel, as defined.

apiVersion: tekton.dev/v1beta1 kind: Pipeline metadata: name: hello-pipeline spec: tasks: - name: greet taskRef: name: hello 
Enter fullscreen mode Exit fullscreen mode

This pipeline is simple and only includes one 'Task'. However, later on, we will add more 'Tasks' and set their order of execution, dependencies, and parallelism.

Let's apply this pipeline and then start it.

kubectl apply -f hello-pipeline.yaml tkn pipeline start hello-pipeline --showlog 
Enter fullscreen mode Exit fullscreen mode

But let's move forward. To pass parameters from the pipeline to the tasks, we'll start with this task:

apiVersion: tekton.dev/v1beta1 kind: Task metadata: name: generate-random-number spec: params: - name: limit description: The upper limit for random number generation. default: "100" type: string steps: - name: generate-it image: alpine:latest command: - /bin/ash args: ['-c', 'echo "Random Number: $(($RANDOM % $(params.limit)))"'] 
Enter fullscreen mode Exit fullscreen mode

As you can see, there is a step that generates a random number using a parameter that, in this case, has 100 as the default value. Now, let's see what the pipeline looks like.

apiVersion: tekton.dev/v1beta1 kind: Pipeline metadata: name: generate-multiple-numbers spec: tasks: - name: first-random-number taskRef: name: generate-random-number params: - name: limit value: "50" - name: second-random-number taskRef: name: generate-random-number params: - name: limit value: "200" - name: third-random-number taskRef: name: generate-random-number params: - name: limit value: "1000" 
Enter fullscreen mode Exit fullscreen mode

As you can see, in the pipeline, we call the task three times with different parameters. So, if we now execute it using the tkn CLI:

➜ tekton tkn pipeline start generate-multiple-numbers --showlog PipelineRun started: generate-multiple-numbers-run-9rrmp Waiting for logs to be available... [second-random-number : generate-it] Random Number: 58 [first-random-number : generate-it] Random Number: 2 [third-random-number : generate-it] Random Number: 172 
Enter fullscreen mode Exit fullscreen mode

And that's it! Now you have a solid foundation to explore more of what Tekton can offer. Until next time!


Here' the same article in video form for your convenience:

.

Top comments (0)