Getting started with Tasks

Set up and run your first Tekton Task

This tutorial shows you how to

  1. Create a Kubernetes cluster with minikube.
  2. Install Tekton pipelines.
  3. Create a Task.
  4. Use TaskRun to instantiate and run your Task.

Prerequisites

  1. Install minikube. You only have to complete the step 1, “Installation”.

  2. Install kubectl.

Create your Kubernetes cluster

Create a cluster

minikube start --kubernetes-version v1.24.4

The process takes a few seconds, you see an output symilar to the following, depending on the minikube driver that you are using:

😄  minikube v1.25.1
✨  Using the docker driver based on existing profile
👍  Starting control plane node minikube in cluster minikube
🚜  Pulling base image ...
🔄  Restarting existing docker container for "minikube" ...
🐳  Preparing Kubernetes v1.23.1 on Docker 20.10.12 ...
    ▪ kubelet.housekeeping-interval=5m
    ▪ Generating certificates and keys ...
    ▪ Booting up control plane ...
    ▪ Configuring RBAC rules ...
🔎  Verifying Kubernetes components...
    ▪ Using image gcr.io/k8s-minikube/storage-provisioner:v5
🌟  Enabled addons: storage-provisioner, default-storageclass
🏄  Done! kubectl is now configured to use "minikube" cluster and "default" namespace by default

You can check that the cluster was successfully created with kubectl:

kubectl cluster-info

The output confirms that Kubernetes is running:

Kubernetes control plane is running at https://127.0.0.1:39509
CoreDNS is running at
https://127.0.0.1:39509/api/v1/namespaces/kube-system/services/kube-dns:dns/proxy

To further debug and diagnose cluster problems, use 'kubectl cluster-info dump'.

Install Tekton Pipelines

  1. To install the latest version of Tekton Pipelines, use kubectl:

    kubectl apply --filename \
    https://storage.googleapis.com/tekton-releases/pipeline/latest/release.yaml
    
  2. Monitor the installation:

    kubectl get pods --namespace tekton-pipelines --watch
    

When both tekton-pipelines-controller and tekton-pipelines-webhook show 1/1 under the READY column, you are ready to continue. For example:

$ kubectl get pods --namespace tekton-pipelines --watch

NAME                                           READY   STATUS              RESTARTS   AGE
tekton-pipelines-controller-6d989cc968-j57cs   0/1     Pending             0          3s
tekton-pipelines-webhook-69744499d9-t58s5      0/1     ContainerCreating   0          3s
tekton-pipelines-controller-6d989cc968-j57cs   0/1     ContainerCreating   0          3s
tekton-pipelines-controller-6d989cc968-j57cs   0/1     Running             0          5s
tekton-pipelines-webhook-69744499d9-t58s5      0/1     Running             0          6s
tekton-pipelines-controller-6d989cc968-j57cs   1/1     Running             0          10s
tekton-pipelines-webhook-69744499d9-t58s5      1/1     Running             0          20s

Hit Ctrl + C to stop monitoring.

Create and run a basic Task

A Task, represented in the API as an object of kind Task, defines a series of Steps that run sequentially to perform logic that the Task requires. Every Task runs as a pod on your Kubernetes cluster, with each step running in its own container.

  1. To create a Task, open your favorite editor and create a file named hello-world.yaml with the following content:

    apiVersion: tekton.dev/v1beta1
    kind: Task
    metadata:
      name: hello
    spec:
      steps:
        - name: echo
          image: alpine
          script: |
            #!/bin/sh
            echo "Hello World"        
    
  2. Apply the changes your cluster:

    kubectl apply --filename hello-world.yaml
    

    The output confirms that the Task was completed successfully.

    task.tekton.dev/hello created
    
  3. To run this Task, you must instantiate it using TaskRun. Create another file named hello-world-run.yaml with the following content:

    apiVersion: tekton.dev/v1beta1
    kind: TaskRun
    metadata:
      name: hello-task-run
    spec:
      taskRef:
        name: hello
    
  4. Apply the changes to your cluster to launch the Task:

    kubectl apply --filename hello-world-run.yaml
    
  5. Verify that everything worked correctly:

    kubectl get taskrun hello-task-run
    

    The output of this command shows the status of the Task

     NAME                               SUCCEEDED    REASON       STARTTIME   COMPLETIONTIME
     hello-task-run          True         Succeeded    22h         22h
     

    The value True under SUCCEEDED confirms that TaskRun completed with no errors.

  6. Take a look at the logs:

    kubectl logs --selector=tekton.dev/taskRun=hello-task-run
    

    The output displays the message:

    Hello World
    

Cleanup

If you want to continue and create a pipeline, do not delete your cluster and proceed to the next tutorial.

To delete the cluster that you created for this quickstart run:

minikube delete

The output confirms that your cluster was deleted:

🔥  Deleting "minikube" in docker ...
🔥  Deleting container "minikube" ...
🔥  Removing /home/user/.minikube/machines/minikube ...
💀  Removed all traces of the "minikube" cluster.