Cloud Native 23 min read

Getting Started with Tekton: Installation, Components, and CI/CD Pipeline Examples

This guide introduces Tekton, a cloud-native CI/CD framework, explains its benefits, components, installation steps, core concepts, and provides a complete example that defines tasks, pipelines, Docker image building, and execution on a Kubernetes cluster.

DevOps Cloud Academy
DevOps Cloud Academy
DevOps Cloud Academy
Getting Started with Tekton: Installation, Components, and CI/CD Pipeline Examples

Tekton is a powerful, flexible, cloud‑native open‑source CI/CD framework that originated from the Knative build‑pipeline project and provides a standardized way to define pipelines on Kubernetes.

Key benefits include customizability, reusability, extensibility via the Tekton Catalog, standardization using Kubernetes CRDs, and scalability across clusters.

Components

Tekton Pipelines

: core CRDs for building pipelines. Tekton Triggers: event‑driven pipeline instantiation. Tekton CLI ( tkn): command‑line interface. Tekton Dashboard: web UI for pipeline visibility. Tekton Catalog: community‑driven collection of tasks and pipelines. Tekton Hub: web UI for browsing the catalog. Tekton Operator: Kubernetes operator for installing Tekton.

Installation

Install Tekton Pipelines by applying the release manifest:

kubectl apply --filename https://storage.googleapis.com/tekton-releases/pipeline/previous/v0.24.1/release.yaml

If the default GCR images are unavailable, use a custom manifest that points to Docker Hub images:

kubectl apply -f http://my-oss-testing.oss-cn-beijing.aliyuncs.com/k8s/tekton/release.yaml

Verify the tekton-pipelines namespace and pods are running:

$ kubectl get pods -n tekton-pipelines
NAME                                 READY   STATUS    RESTARTS   AGE
tekton-pipelines-controller-...     1/1     Running   0          92s
tekton-pipelines-webhook-...        1/1     Running   0          92s

Optionally install the Tekton CLI on macOS with Homebrew:

brew tap tektoncd/tools
brew install tektoncd/tools/tektoncd-cli

Confirm the installation:

$ tkn version
Client version: 0.15.0
Pipeline version: v0.24.1
Dashboard version: v0.17.0

Core Concepts

Tekton defines several CRD resources: Task: ordered steps executed in separate Pods. Pipeline: ordered collection of Tasks. TaskRun: concrete execution of a Task. PipelineRun: concrete execution of a Pipeline. ClusterTask: Task available cluster‑wide. PipelineResource: input or output artifacts such as Git repos or images.

Example: Testing a Go Application

Create a Task definition ( task-test.yaml) that clones a Git repo and runs go test:

# task-test.yaml
apiVersion: tekton.dev/v1beta1
kind: Task
metadata:
  name: test
spec:
  resources:
    inputs:
    - name: repo
      type: git
  steps:
  - name: run-test
    image: golang:1.14-alpine
    workingDir: /workspace/repo
    command: ['go']
    args: ['test']

Create the Task and start a TaskRun (or use tkn task start) providing a PipelineResource of type git named demo-git that points to https://github.com/cnych/tekton-demo.

Docker Hub Authentication

Store Docker registry credentials in a Kubernetes Secret and bind it to a ServiceAccount:

# harbor-auth.yaml
apiVersion: v1
kind: Secret
metadata:
  name: harbor-auth
  annotations:
    tekton.dev/docker-0: http://harbor.k8s.local
type: kubernetes.io/basic-auth
stringData:
  username: admin
  password: Harbor12345
# sa.yaml
apiVersion: v1
kind: ServiceAccount
metadata:
  name: build-sa
secrets:
- name: harbor-auth

Build and Push Docker Image Task

Define a Task ( task-build-push.yaml) that builds an image with Docker and pushes it to Harbor:

# task-build-push.yaml
apiVersion: tekton.dev/v1beta1
kind: Task
metadata:
  name: build-and-push
spec:
  resources:
    inputs:
    - name: repo
      type: git
    outputs:
    - name: builtImage
      type: image
  params:
  - name: pathToDockerfile
    type: string
    default: /workspace/repo/Dockerfile
  - name: pathToContext
    type: string
    default: /workspace/repo
  steps:
  - name: build-and-push
    image: docker:stable
    script: |
      #!/usr/bin/env sh
      docker login harbor.k8s.local
      docker build -t $(resources.outputs.builtImage.url) -f $(params.pathToDockerfile) $(params.pathToContext)
      docker push $(resources.outputs.builtImage.url)
    volumeMounts:
    - name: dockersock
      mountPath: /var/run/docker.sock
  volumes:
  - name: dockersock
    hostPath:
      path: /var/run/docker.sock

Create the corresponding PipelineResource for the image and a TaskRun that references the build-sa ServiceAccount.

Pipeline Assembly

Combine the test and build tasks into a Pipeline ( pipeline.yaml) that runs the test first and, upon success, builds and pushes the image:

# pipeline.yaml
apiVersion: tekton.dev/v1beta1
kind: Pipeline
metadata:
  name: test-build-push
spec:
  resources:
  - name: repo
    type: git
  tasks:
  - name: test
    taskRef:
      name: test
    resources:
      inputs:
      - name: repo
        resource: repo
  - name: build-and-push
    taskRef:
      name: build-and-push
    runAfter:
    - test
    resources:
      inputs:
      - name: repo
        resource: repo

Run the pipeline with a PipelineRun that supplies the demo-git resource and uses the build-sa ServiceAccount:

# pipelinerun.yaml
apiVersion: tekton.dev/v1beta1
kind: PipelineRun
metadata:
  name: test-build-push-run
spec:
  serviceAccountName: build-sa
  pipelineRef:
    name: test-build-push
  resources:
  - name: repo
    resourceRef:
      name: demo-git

The article demonstrates a complete end‑to‑end Tekton CI/CD workflow on Kubernetes, covering installation, core concepts, task and pipeline definitions, Docker registry authentication, and execution commands.

Original Source

Signed-in readers can open the original source through BestHub's protected redirect.

Sign in to view source
Republication Notice

This article has been distilled and summarized from source material, then republished for learning and reference. If you believe it infringes your rights, please contactadmin@besthub.devand we will review it promptly.

Cloud Nativeci/cdKubernetesDevOpsPipelinetekton
DevOps Cloud Academy
Written by

DevOps Cloud Academy

Exploring industry DevOps practices and technical expertise.

0 followers
Reader feedback

How this landed with the community

Sign in to like

Rate this article

Was this worth your time?

Sign in to rate
Discussion

0 Comments

Thoughtful readers leave field notes, pushback, and hard-won operational detail here.