快速开始

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

简介

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

用例

  • 创建自动化构建、测试和部署工作流
  • 以 Kubernetes 原生方式运行 CI/CD pipeline
  • 在不需要特权访问的情况下构建容器镜像
  • 在多个云提供商之间实现标准化的部署流程
  • 为您的 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 镜像替换为实际可访问的镜像,下面同样适用。

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

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

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

    kubectl apply -f hello-world-run.yaml
  5. 监控 TaskRun 的执行:

    kubectl get taskrun hello-task-run

    您应该会看到类似以下的输出:

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

    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)!"
  2. 将 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:hello 和 goodbye
    • 指定 goodbye 应在 hello 完成后运行
    • 将 Pipeline 参数传递给 goodbye Task
  2. 将 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"
  2. 将 PipelineRun 应用到您的集群以启动 Pipeline:

    kubectl apply -f hello-goodbye-pipeline-run.yaml
  3. 监控 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

高级配置

当您熟悉了基本的 Task 和 Pipeline 之后,可以利用高级功能来增强您的工作流: