TIP

使用“简单且可操作”的示例帮助用户快速体验关键功能。

供参考,你可以查看 快速入门示例

快速入门

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

介绍

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

使用场景

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

预计阅读时间

15-20 分钟

先决条件

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

流程概述

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

分步指导

第 1 步:创建“Hello World”任务

任务是 Tekton 流水线的基本构建块。它由一系列在容器中按顺序运行的步骤组成。

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

    kubectl apply -f hello-task.yaml
    
  2. TaskRun 对象实例化并执行该任务。创建另一个名为 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”任务

现在让我们创建第二个任务,接受参数以使其更加灵活。

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

    kubectl apply -f goodbye-task.yaml
    

第 3 步:创建流水线

流水线定义了一系列按特定执行顺序排列的任务,作为 CI/CD 工作流的一部分。

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

该流水线:

  • 定义了一个名为 username 的参数
  • 包含两个任务:hellogoodbye
  • 指定 goodbye 应在 hello 完成后运行
  • 将流水线参数传递给 goodbye 任务
  1. 将流水线应用到您的集群:

    kubectl apply -f hello-goodbye-pipeline.yaml
    

第 4 步:运行流水线

一个 PipelineRun 用于执行流水线并提供所需的参数。

  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 应用到您的集群以启动流水线:

    kubectl apply -f hello-goodbye-pipeline-run.yaml
    
  2. 监控流水线的执行:

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