快速开始

本文档帮助新用户快速了解并使用 Tekton Pipelines 创建一个简单的 CI/CD 工作流。

目录

介绍

Tekton 是一个开源的云原生 CI/CD(持续集成和持续交付/部署)解决方案。它提供了 Kubernetes 原生的构建模块,用于创建容器化、标准化和可移植的 CI/CD 流水线。

使用场景

  • 创建自动化的构建、测试和部署工作流
  • 以 Kubernetes 原生方式运行 CI/CD 流水线
  • 在无特权访问的情况下构建容器镜像
  • 实现跨多个云提供商的标准化部署流程
  • 为您的 CI/CD 系统创建可重用组件

预计阅读时间

15-20 分钟

前提条件

  • 一个 Kubernetes 集群(您可以使用 minikube 进行本地测试)
  • 在集群上安装了 Tekton Pipelines
  • 安装并配置了 kubectl 以访问您的集群
  • 安装了 Tekton CLI (tkn),以便更方便地操作 Tekton 资源

流程概览

步骤操作描述
1创建一个“Hello World” Task创建一个输出问候消息的基础 Task
2创建一个“Goodbye” Task创建第二个接受参数的 Task
3创建 Pipeline创建一个将两个 Task 按顺序组合的 Pipeline
4运行 Pipeline执行 Pipeline 并查看结果
5清理删除创建的资源

逐步操作指南

步骤 1:创建一个“Hello World” Task

Task 是 Tekton Pipeline 的基本构建块。它由一系列在容器中顺序执行的步骤组成。

  1. 创建一个名为 hello-task.yaml 的文件,内容如下:
apiVersion: tekton.dev/v1
kind: Task
metadata:
  name: hello
spec:
  steps:
    - name: echo
      image: ubuntu
      command:
        - echo
      args:
        - "Hello World!"
TIP

请将 ubuntu 镜像替换为实际可访问的镜像,以下同理。

  1. 将 Task 应用到您的集群:

    kubectl apply -f hello-task.yaml
  2. TaskRun 对象用于实例化并执行该 Task。创建另一个名为 hello-world-run.yaml 的文件,内容如下:

apiVersion: tekton.dev/v1
kind: TaskRun
metadata:
  name: hello-task-run
spec:
  taskRef:
    name: hello
  1. TaskRun 应用到您的集群:

    kubectl apply -f hello-world-run.yaml
  2. 监控 TaskRun 执行情况:

    kubectl get taskrun hello-task-run

    您应该看到类似如下输出:

    NAME            SUCCEEDED   REASON      STARTTIME   COMPLETIONTIME
    hello-task-run  True        Succeeded   1m         2m
  3. 查看日志:

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

    您应该看到类似如下输出:

    Hello World!

步骤 2:创建一个带参数的“Goodbye” Task

现在我们创建第二个接受参数的 Task,使其更灵活。

  1. 创建一个名为 goodbye-task.yaml 的文件,内容如下:
apiVersion: tekton.dev/v1
kind: Task
metadata:
  name: goodbye
spec:
  params:
    - name: username
      type: string
      description: The username to say goodbye to
      default: "World"
  steps:
    - name: goodbye
      image: ubuntu
      command:
        - echo
      args:
        - "Goodbye $(params.username)!"
  1. 将 Task 应用到您的集群:

    kubectl apply -f goodbye-task.yaml

步骤 3:创建 Pipeline

Pipeline 定义了一系列有序的 Task,按特定执行顺序组成您的 CI/CD 工作流。

  1. 创建一个名为 hello-goodbye-pipeline.yaml 的文件,内容如下:
apiVersion: tekton.dev/v1
kind: Pipeline
metadata:
  name: hello-goodbye
spec:
  params:
    - name: username
      type: string
      description: The username to say goodbye to
      default: "World"
  tasks:
    - name: hello
      taskRef:
        name: hello
    - name: goodbye
      runAfter:
        - hello
      taskRef:
        name: goodbye
      params:
        - name: username
          value: "$(params.username)"

该 Pipeline:

  • 定义了一个名为 username 的参数
  • 包含两个 Task:hellogoodbye
  • 指定 goodbyehello 完成后运行
  • 将 Pipeline 参数传递给 goodbye Task
  1. 将 Pipeline 应用到您的集群:

    kubectl apply -f hello-goodbye-pipeline.yaml

步骤 4:运行 Pipeline

PipelineRun 用于执行 Pipeline 并提供所需参数。

  1. 创建一个名为 hello-goodbye-pipeline-run.yaml 的文件,内容如下:
apiVersion: tekton.dev/v1
kind: PipelineRun
metadata:
  name: hello-goodbye-run
spec:
  pipelineRef:
    name: hello-goodbye
  params:
    - name: username
      value: "Tekton"
  1. 将 PipelineRun 应用到您的集群以启动 Pipeline:

    kubectl apply -f hello-goodbye-pipeline-run.yaml
  2. 监控 Pipeline 执行:

tkn pipelinerun logs hello-goodbye-run -f

您应该看到类似如下输出:

[hello : echo] Hello World!
[goodbye : goodbye] Goodbye Tekton!

步骤 5:清理

删除本教程中创建的资源:

kubectl delete -f hello-task.yaml
kubectl delete -f hello-task-run.yaml
kubectl delete -f goodbye-task.yaml
kubectl delete -f hello-goodbye-pipeline.yaml
kubectl delete -f hello-goodbye-pipeline-run.yaml