小马过河R头像
关注
Tekton 教程:初学者简单指南封面图

Tekton 教程:初学者简单指南

在这里插入图片描述

通过这份通俗易懂的 Tekton 教程,你将学会如何在 Kubernetes 上构建第一条 CI/CD 流水线。本指南涵盖核心概念、组件构成、目录结构、动手实操、调试方法与最佳实践。如果你想从零读懂 Tekton 并亲手把它跑起来,这份指南就是为你准备的。

先决条件

要开始使用 Tekton,你需要具备以下条件:

  • 一个正在运行的 Kubernetes 集群(建议 1.28 及以上版本)
  • 已安装并配置好 kubectl,能够连接集群
  • 具备集群管理员权限(或至少能创建 CRD、RBAC 资源)
  • 一个可用的容器镜像仓库(Docker Hub、Harbor、ACR 等)
  • 具备 Kubernetes 和 YAML 的基础知识

以下为可选,但强烈建议:

  • Tekton CLI(tkn)
  • Tekton Dashboard(Web UI)

什么是 Tekton?

为了便于解释,我们沿用 CI/CD 里最常见的场景。

假设你的项目有 Dev、QA、Staging、Prod 四套环境。每次代码提交,你都要重复同样的动作:拉取代码、运行测试、构建镜像、推送仓库、更新部署。这些步骤在每次提交后基本不变。

如果全靠手工执行,容易出错;如果写一套自定义 shell 或 Python 脚本去串联,又难以维护和扩展——换一种语言、换一套环境,脚本就得重写。这正是 Tekton 要解决的问题。

Tekton 是一个 Kubernetes 原生的开源 CI/CD 框架。它把 CI/CD 的每一个环节都抽象成 Kubernetes 自定义资源(CRD):一次"拉取代码"是一个 Task,一条完整的"构建到部署"流程是一个 Pipeline。你用 YAML 声明"要做什么",Tekton 负责在集群里把它跑起来。

它和传统工具最大的不同在于三点:

  1. Kubernetes 原生:不是"支持" Kubernetes,而是只能运行在 Kubernetes 上,所有工作负载都以 Pod 形式执行,深度复用 K8s 的调度、存储、RBAC 与可观测能力。
  2. 声明式 + 容器化:流水线用 YAML 描述,每个步骤运行在独立的容器里,环境干净、可复现、可版本化。
  3. 可组合、可复用:Task 像积木一样可拼装、可共享,官方与社区维护了大量现成任务。

Tekton 是 CNCF 的孵化级(Incubating)项目,最初源自 Knative 的 build-pipeline 子项目,如今是云原生领域主流的 CI/CD 引擎之一,Jenkins X 也默认用它作为 CI 引擎。它的名字来自希腊语 τέκτων,意为"建造者"。

Tekton 与传统 CI/CD 工具的对比

维度JenkinsGitLab CITekton
运行方式Master/Agent,常驻服务Runner完全 Kubernetes 原生,按需创建 Pod
配置载体Jenkinsfile / Web UI.gitlab-ci.ymlKubernetes CRD(YAML)
环境隔离依赖 Agent 配置依赖 Runner每个 Step 运行在独立容器
扩展方式插件内置能力自定义 Task / Resolver
可移植性较低绑定 GitLab跨云、跨平台、跨语言

Tekton 的核心概念

Tekton 的执行模型是层层嵌套的。先把下面这些术语对齐,后面的操作才不会跑偏。

Step、Task、Pipeline 三层结构

概念类比作用
Step一条命令最小执行单元,运行在独立容器里
Task一道工序一组有序 Step,运行在同一个 Pod 里
Pipeline一条生产流水线多个 Task 组成的 DAG,定义完整交付流程

定义与实例分离

概念作用类比传统 CI/CD
Task定义"做什么"构建步骤模板
TaskRunTask 的一次执行实例一次构建执行
Pipeline定义 Task 的顺序与依赖Jenkins Pipeline
PipelineRunPipeline 的一次执行实例一次流水线执行

这里的关键在于:Task 和 Pipeline 只是静态定义,真正执行的是 TaskRun 与 PipelineRun。每执行一次就产生一条记录,携带完整的参数、状态与日志。

支撑概念

概念作用
Workspace在 Task 之间共享数据的存储卷(通常由 PVC 提供)
Params流水线参数,用于在不同环境中复用同一份定义
ResultsTask 的结构化输出,可传递给下游 Task(如镜像 digest)
Resolver从 Git、Bundle、Artifact Hub、集群等来源动态拉取 Task/Pipeline
Trigger基于事件(如 Git Push)自动实例化 PipelineRun

一次执行的完整链路

Pipeline(定义)
   │  创建 PipelineRun
   ▼
PipelineRun(一次运行)
   │  Tekton 为每个 Task 创建 TaskRun
   ▼
TaskRun(一个 Task 的一次运行)
   │  每个 TaskRun 启动一个 Pod
   ▼
Pod
   └── Step 容器1   Step 容器2   ...(共享 Workspace)

有一句话值得记住:一个 TaskRun 对应一个 Pod,Task 里的每个 Step 对应 Pod 里的一个容器。理解这一点,后面排查问题会顺畅很多。

Tekton 的组件与生态

Tekton 不是一个单体工具,而是一组可以独立安装的项目:

组件作用
Tekton Pipelines核心引擎,定义 Task/Pipeline 等 CRD 与控制器
Tekton Triggers事件驱动,根据 Git Push、PR 等事件触发流水线
Tekton CLI(tkn)命令行工具,管理与查看流水线
Tekton DashboardWeb UI,可视化查看执行状态与日志
Tekton Catalog官方/社区维护的可复用 Task、Pipeline 仓库
Tekton Chains供应链安全,为构建产物生成、存储和签名来源信息(provenance)
Tekton Operator以 Operator 方式安装、升级、卸载 Tekton 组件
Tekton Results执行结果的长期存储
Pipelines as Code用仓库中的注释或文件直接驱动流水线,贴近 GitOps

其中,Tekton Pipelines 是必装的核心,其余按需安装。

需要留意:Tekton 曾经的公共组件市场 Tekton Hub(hub.tekton.dev)已于 2026 年 1 月 8 日关停,其仓库随后归档。如今发现和复用社区任务,官方推荐改用 Artifact Hub 以及 Resolvers(git / bundles / cluster / hub)。这一点在"打包、复用与分发 Task"一节还会展开。

Tekton 的结构长什么样

Helm 用 Chart 目录来组织模板,Tekton 则用一组 YAML 清单来组织流水线。一条典型流水线的目录结构大致如下:

hello-tekton/
├── 00-namespace.yaml
├── 01-pvc.yaml                 # 工作区用的 PVC
├── 02-rbac.yaml                # ServiceAccount、Role、RoleBinding
├── 03-secret.yaml              # 镜像仓库凭据
├── task/
│   ├── git-clone.yaml          # 拉取代码的 Task
│   ├── build-and-push.yaml     # 构建并推送镜像的 Task
│   └── run-tests.yaml          # 运行测试的 Task
├── pipeline/
│   └── build-and-push.yaml     # 编排上述 Task 的 Pipeline
├── pipelinerun/
│   └── build-and-push-run.yaml # 一次具体执行
└── app/                        # 被构建的示例应用
    ├── app.py
    ├── Dockerfile
    └── k8s/
        └── deployment.yaml

可以看到,和 Helm 用 values.yaml 区分环境类似,Tekton 通过**参数(Params)与工作区(Workspaces)**让同一份 Pipeline 定义服务于多个环境——你只需要在 PipelineRun 里传入不同的值。

安装 Tekton

Tekton 的安装非常直接,官方已经把所需清单都准备好了。

安装核心组件 Tekton Pipelines

# 安装最新版 Tekton Pipelines
kubectl apply --filename https://infra.tekton.dev/tekton-releases/pipeline/latest/release.yaml

# 如需安装指定版本(例如 v1.9.3 LTS),把 latest 换成 previous/<版本号>
kubectl apply --filename https://infra.tekton.dev/tekton-releases/pipeline/previous/v1.9.3/release.yaml

安装会创建 tekton-pipelines 命名空间,其中包含控制器与 Webhook 等核心组件。用下面的命令观察安装进度,等到所有 Pod 的 READY 都是 1/1 即可:

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

安装 Triggers(可选,用于事件触发)

kubectl apply --filename https://infra.tekton.dev/tekton-releases/triggers/latest/release.yaml
kubectl apply --filename https://infra.tekton.dev/tekton-releases/triggers/latest/interceptors.yaml

安装 Dashboard(可选,Web UI)

# 默认以只读模式安装
kubectl apply --filename https://infra.tekton.dev/tekton-releases/dashboard/latest/release.yaml

如果需要通过 Dashboard 直接创建、修改资源,改用 release-full.yaml(读写模式)。

安装 Tekton CLI(tkn)

# macOS
brew install tektoncd-cli

# Debian / Ubuntu
sudo apt update && sudo apt install -y tektoncd-cli

其他平台可以直接从 github.com/tektoncd/cli 的 Releases 页面下载对应二进制。安装完成后:

tkn version

版本选择提示

Tekton Pipelines 提供多条 LTS 分支。以当前周期为例,v1.9.x 属于 LTS(支持至 2027-01-30),而 v1.6.x、v1.3.x 等较老的 LTS 分支会先后到达 EOL。生产环境建议固定使用某条 LTS 分支,而不是盲目跟 latest。

Tekton 教程的 Github repo

本教程的示例清单建议你放在自己的 Git 仓库中管理(例如 hello-tekton)。除此之外,非常值得参考的官方资源有:

  • Tekton 官方文档:https://tekton.dev/docs/
  • Tekton 官方示例:github.com/tektoncd/pipeline 的 examples 目录
  • 官方可复用任务:github.com/tektoncd-catalog 组织下的 git-clone、kaniko、golang、buildpacks 等

从头开始创建第一个 Task

Task 是 Tekton 里不可再分的最小工作单元。我们从最简单的 Task 开始。

最简单的 Task

创建 task/hello.yaml:

apiVersion: tekton.dev/v1
kind: Task
metadata:
  name: hello-tekton
spec:
  params:
    - name: who
      type: string
      default: "Tekton"
  results:
    - name: greeting
      description: 生成的问候语
  steps:
    - name: say-hello
      image: alpine:3.20
      script: |
        #!/bin/sh
        set -e
        echo "Hello, $(params.who)!"
        printf "Hello, %s!" "$(params.who)" > $(results.greeting.path)

说明:

  • params:声明参数,default 提供默认值,调用时用 $(params.<name>) 引用。
  • results:声明结构化输出,脚本把结果写进 $(results.<name>.path) 指定的文件。
  • steps:这里的每个 Step 都会运行在自己的容器(image)里。

应用它:

kubectl apply -f task/hello.yaml
kubectl get task

但请注意:只创建 Task 是没有用的。Task 只是一个静态定义,要得到结果,必须借助 TaskRun。

TaskRun:让 Task 跑起来

创建 taskrun/hello-run.yaml:

apiVersion: tekton.dev/v1
kind: TaskRun
metadata:
  generateName: hello-tekton-run-
spec:
  taskRef:
    name: hello-tekton
  params:
    - name: who
      value: "Tekton 初学者"
kubectl create -f taskrun/hello-run.yaml

小提示:这里用的是 metadata.generateName(自动生成带随机后缀的名字)而不是 metadata.name,因此必须用 kubectl create;只有带固定 metadata.name 的资源才能用 kubectl apply。

查看执行状态与日志:

tkn taskrun list
tkn taskrun logs --last -f

看到 Hello, Tekton 初学者! 就说明你的第一个 Task 跑通了。

参数、工作区与结果

  • 参数(Params):让同一个 Task 可以服务于不同环境。
  • 工作区(Workspaces):用于在 Task 之间共享数据(如源码、构建产物),底层通常是一个 PVC。
  • 结果(Results):让 Task 把结构化信息(如镜像 digest)传给下游。

这三者是写出可复用流水线的关键,下面会全部用到。

从头开始创建一条完整的 Pipeline

接下来构建一个真实场景:拉取代码 → 构建镜像 → 推送镜像仓库。

第一步:准备工作区(PVC)

多个 Task 之间要传递源码,需要一个共享存储。创建 01-pvc.yaml:

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: tekton-source-pvc
spec:
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 1Gi
kubectl apply -f 01-pvc.yaml

如果 Task 可能被调度到不同节点,建议把 accessModes 改为 ReadWriteMany,并使用支持它的 StorageClass。

第二步:拉取代码的 Task

创建 task/git-clone.yaml:

apiVersion: tekton.dev/v1
kind: Task
metadata:
  name: git-clone
spec:
  params:
    - name: repo-url
      type: string
      description: 需要克隆的 Git 仓库地址
    - name: revision
      type: string
      default: main
  workspaces:
    - name: output
      description: 克隆结果输出的工作区
  steps:
    - name: clone
      image: alpine/git:latest
      workingDir: $(workspaces.output.path)
      script: |
        #!/bin/sh
        set -e
        git clone $(params.repo-url) .
        git checkout $(params.revision)

第三步:构建并推送镜像的 Task

这里以 Kaniko 为例——它无需 Docker 守护进程,可在容器内直接构建镜像,非常适合 Kubernetes 环境。

创建 task/build-and-push.yaml:

apiVersion: tekton.dev/v1
kind: Task
metadata:
  name: build-and-push
spec:
  params:
    - name: image
      type: string
      description: 目标镜像地址,例如 registry.example.com/hello-tekton:latest
  workspaces:
    - name: source
      description: 包含 Dockerfile 的源码工作区
    - name: dockerconfig
      description: 镜像仓库凭据配置
      optional: true
  steps:
    - name: build-and-push
      image: gcr.io/kaniko-project/executor:v1.23.2-debug
      env:
        - name: DOCKER_CONFIG
          value: $(workspaces.dockerconfig.path)
      args:
        - --dockerfile=$(workspaces.source.path)/Dockerfile
        - --context=$(workspaces.source.path)
        - --destination=$(params.image)
        - --cache=true

关于凭据:dockerconfig 工作区绑定一个包含 config.json 的 Secret(即 docker login 后生成的凭据文件)。如果只是推送到内网公开仓库,也可以先省略它。

备注:Kaniko 的原始仓库已被 Google 归档,社区在 osscontainertools/kaniko 继续维护;生产环境也可选用 Buildah、Cloud Native Buildpacks 等,官方 Catalog 均提供对应 Task。

第四步:用 Pipeline 编排 Task

创建 pipeline/build-and-push.yaml:

apiVersion: tekton.dev/v1
kind: Pipeline
metadata:
  name: build-and-push-pipeline
spec:
  params:
    - name: repo-url
      type: string
    - name: revision
      type: string
      default: main
    - name: image
      type: string
  workspaces:
    - name: source
    - name: dockerconfig
  tasks:
    - name: fetch-source
      taskRef:
        name: git-clone
      workspaces:
        - name: output
          workspace: source
      params:
        - name: repo-url
          value: $(params.repo-url)
        - name: revision
          value: $(params.revision)

    - name: build-push
      runAfter:
        - fetch-source
      taskRef:
        name: build-and-push
      workspaces:
        - name: source
          workspace: source
        - name: dockerconfig
          workspace: dockerconfig
      params:
        - name: image
          value: $(params.image)

要点:

  • runAfter 明确依赖关系,build-push 必须等 fetch-source 完成后才启动。
  • 如果不写 runAfter,多个 Task 默认会并行执行,这也正是 Tekton 支持 DAG 编排的体现。
  • $(params.xxx) 在 Pipeline 层接收外部值,再转发给各个 Task,实现"一份定义、多环境复用"。

第五步:用 PipelineRun 执行

创建 pipelinerun/build-and-push-run.yaml:

apiVersion: tekton.dev/v1
kind: PipelineRun
metadata:
  generateName: build-and-push-run-
spec:
  pipelineRef:
    name: build-and-push-pipeline
  params:
    - name: repo-url
      value: https://github.com/<your-org>/hello-tekton.git
    - name: revision
      value: main
    - name: image
      value: registry.example.com/hello-tekton:latest
  workspaces:
    - name: source
      persistentVolumeClaim:
        claimName: tekton-source-pvc
    - name: dockerconfig
      secret:
        secretName: docker-config

至此,一条完整的 CI/CD 流水线定义就完成了。最终的文件结构如下:

hello-tekton/
├── 01-pvc.yaml
├── task/
│   ├── git-clone.yaml
│   └── build-and-push.yaml
├── pipeline/
│   └── build-and-push.yaml
└── pipelinerun/
    └── build-and-push-run.yaml

验证 Tekton 资源

在真正执行前,先做静态校验,能省下大量排查时间。

用 dry-run 检查语法

kubectl apply -f pipeline/build-and-push.yaml --dry-run=server

--dry-run=server 会走一遍服务端校验,字段拼错、类型不对都会直接报错。

查看已创建的资源

kubectl get tasks
kubectl get pipelines
tkn pipeline describe build-and-push-pipeline

tkn pipeline describe 会列出 Pipeline 的参数、工作区以及各 Task 的依赖关系,是确认编排是否符合预期的好办法。

运行并查看结果

kubectl create -f pipelinerun/build-and-push-run.yaml

查看执行状态

# 列出所有流水线运行
tkn pipelinerun list

# 持续跟踪最近一次运行的日志
tkn pipelinerun logs --last -f

也可以直接用 kubectl 查看相关资源:

kubectl get pipelinerun
kubectl get taskrun
kubectl get pods

你会看到 Tekton 为每个 Task 启动了一个 Pod,Pod 里的多个容器对应 Task 的多个 Step。当镜像成功推送到仓库后,tkn pipelinerun list 中该运行的 SUCCEEDED 会显示为 True。

多环境复用

和 Helm 用不同 values.yaml 服务于多环境一样,Tekton 只需在 PipelineRun 里换一组参数即可:

# 生产环境:换成生产镜像地址与分支
kubectl create -f pipelinerun/build-and-push-run-prod.yaml

把它接入 CI/CD 流水线时,你可以写一段自定义逻辑,按环境传入不同的参数文件。

更新流水线与回滚部署

更新流水线定义

Pipeline、Task 都是 Kubernetes 资源,修改后重新 apply 即可:

# 修改 pipeline/build-and-push.yaml 后
kubectl apply -f pipeline/build-and-push.yaml

需要注意:被 PipelineRun 引用过的 Pipeline,其 spec 在多数情况下是不可变的。若要改变编排,通常的做法是新建版本(如 build-and-push-pipeline-v2),或直接新建一个 PipelineRun 使用新的定义。每一次 PipelineRun 都会保留完整的执行记录,这正是 Tekton 天然的"审计与追溯"能力。

回滚部署

Tekton 负责"构建与交付",应用本身的回滚交给 Kubernetes 原生的 Deployment 机制:

# 查看历史版本
kubectl rollout history deployment/hello-tekton

# 回滚到上一个版本
kubectl rollout undo deployment/hello-tekton

# 回滚到指定版本
kubectl rollout undo deployment/hello-tekton --to-revision=2

如果你采用 GitOps(例如配合 Argo CD),回滚通常就是把 Git 里的清单改回上一个提交。

打包、复用与分发 Task

复用社区任务

正如前面提到的,Tekton Hub 公共实例已关停,如今复用社区任务主要靠 Resolvers。以下是通过 hub resolver 从 Artifact Hub 拉取任务的写法:

  tasks:
    - name: fetch-source
      taskRef:
        resolver: hub
        params:
          - name: type
            value: artifact
          - name: catalog
            value: tekton-catalog-tasks
          - name: kind
            value: task
          - name: name
            value: git-clone
          - name: version
            value: "0.9"

也可以直接用 Git 作为来源(git resolver),或把任务打包成 OCI 镜像分发(bundles resolver)。这样做的好处是:Task 不被"写死"在集群里,而是按版本从可信来源动态解析,更利于统一治理与版本管理。

把 Task 打包成分发单元

# 将本地 Task 打包并推送到 OCI 仓库
tkn bundle push registry.example.com/tekton-tasks/git-clone:v0.1 -f task/git-clone.yaml

打包之后,别人就可以通过 bundles resolver 直接引用你发布的版本。

用 Triggers 实现自动触发

到这一步,流水线还需要手动创建 PipelineRun。Tekton Triggers 能让它被事件自动唤起。其核心对象如下:

对象作用
EventListener事件入口,通常通过 HTTP 暴露以接收 Webhook
TriggerBinding从事件负载中提取字段,存为参数
TriggerTemplate用参数实例化资源(如 PipelineRun)
Trigger把 Binding 与 Template 组合起来,可附带 Interceptor
Interceptor在 Binding 之前做过滤、校验、转换

一个简化的 TriggerBinding 示例:

apiVersion: triggers.tekton.dev/v1beta1
kind: TriggerBinding
metadata:
  name: github-push-binding
spec:
  params:
    - name: git-revision
      value: $(body.head_commit.id)
    - name: git-repo-url
      value: $(body.repository.clone_url)

在 GitHub 仓库的 Webhook 中填入 EventListener 暴露的地址,之后每次 push 都会自动实例化一个 PipelineRun——真正实现"代码提交即构建"。

调试 Tekton

Tekton 提供了丰富的调试手段,建议按下面的顺序排查:

  • tkn pipeline describe <name>:查看 Pipeline 的参数、工作区与依赖关系。
  • tkn pipelinerun describe <name>:查看某次运行的状态与失败原因。
  • tkn pipelinerun logs -f <name>:查看实时日志;--last 表示最近一次。
  • tkn taskrun logs -f <name>:单独查看某个 TaskRun 的日志。
  • kubectl describe pod <pod>:当 TaskRun 一直 Pending 时,用它查看调度、拉镜像与存储挂载问题。
  • kubectl get events --sort-by=.lastTimestamp:查看集群事件,定位 PVC、权限等异常。

常见的错误

1. TaskRun 一直处于 Pending

多半是调度或存储问题。检查节点资源、PVC 是否绑定成功、StorageClass 是否可用:

kubectl describe pod <pod-name>
kubectl get pvc

2. 工作区(Workspace)未绑定

如果 PipelineRun 没有为 Pipeline 声明的每个 workspace 绑定来源,运行会直接失败。请确认每个 workspace 都在 PipelineRun 中给出了 persistentVolumeClaim 或 secret。

3. 拉取镜像失败(ErrImagePull / ImagePullBackOff)

常见于集群访问不了镜像仓库(例如 gcr.io)。解决思路是把镜像同步到内网仓库,或改用可访问的镜像地址。官方示例中的镜像有时会带 mirror.gcr.io 等前缀,请按你所在网络环境替换。

4. 权限不足

Task 默认使用 default ServiceAccount。执行 kubectl 类操作、推送镜像等需要相应权限时,要创建专用的 ServiceAccount、Role 和 RoleBinding,并在 PipelineRun 里通过 taskRunTemplate.serviceAccountName 指定。

5. 用 kubectl apply 创建带 generateName 的资源报错

kubectl apply 需要固定的 metadata.name。如果资源用的是 generateName,请改用 kubectl create。

6. 修改后的 Pipeline 无法 apply

如前所述,被引用过的 Pipeline spec 可能不可变。请新建版本或新建 PipelineRun。

Tekton 最佳实践

  • 用 Workspace 传递数据,不要让 Task 之间通过隐式的临时目录耦合。
  • 凭据统一用 Secret 管理,并遵守最小权限原则,为流水线分配专用 ServiceAccount。
  • 每个环境一个命名空间,配合 RBAC 隔离环境与权限。
  • 固定引用版本:无论通过 resolver 还是 raw 链接引用 Task,都应锁定具体版本号,而不是使用 latest。
  • 为 Step 声明资源限制与超时,避免个别任务拖垮集群。
  • 生产环境选用 LTS 版本,并跟随安全更新(Tekton 历史上出现过多起 resolver 相关安全漏洞)。
  • 给 Task 和 Pipeline 写清楚 description 与文档,可维护性远比想象中重要。
  • 命名规范:资源名使用小写,单词间用连字符(-)分隔。
  • YAML 中的字符串尽量加引号,尤其是版本号、布尔样式字符串。

Tekton 命令总结备忘

# ---------- 版本 ----------
tkn version                              # 查看 tkn 版本

# ---------- Pipeline ----------
tkn pipeline list                        # 列出 Pipeline
tkn pipeline describe <pipeline-name>    # 查看 Pipeline 详情
tkn pipeline start <pipeline-name>       # 交互式启动一个 Pipeline
tkn pipeline logs <pipeline-name> -f     # 查看日志

# ---------- PipelineRun ----------
tkn pipelinerun list                     # 列出运行记录
tkn pipelinerun describe <run-name>      # 查看某次运行详情
tkn pipelinerun logs --last -f           # 跟踪最近一次运行的日志
tkn pipelinerun delete <run-name>        # 删除某次运行

# ---------- Task ----------
tkn task list                            # 列出 Task
tkn task describe <task-name>            # 查看 Task 详情
tkn task start <task-name>               # 启动一个 Task

# ---------- TaskRun ----------
tkn taskrun list                         # 列出 TaskRun
tkn taskrun describe <run-name>          # 查看 TaskRun 详情
tkn taskrun logs --last -f               # 跟踪日志

# ---------- Bundle(打包分发) ----------
tkn bundle push <image> -f <task.yaml>   # 把 Task 打包并推送为 OCI 镜像

# ---------- 原生 kubectl ----------
kubectl apply -f <file>                  # 创建/更新资源(需固定 name)
kubectl create -f <file>                 # 创建资源(支持 generateName)
kubectl get pipelinerun,taskrun,pods     # 查看运行相关资源
kubectl rollout undo deployment/<name>   # 回滚应用部署

总结

Tekton 是 Kubernetes 原生的 CI/CD 框架:它把流水线的每个环节都变成 Kubernetes 资源,用声明式 YAML 描述"要做什么",用 Pod 容器执行"具体怎么做"。在这份 Tekton 教程中,我们梳理了核心概念(Step、Task、TaskRun、Pipeline、PipelineRun、Workspace、Results),认识了组件生态,并从零创建、验证、运行了一条完整的流水线,还涉及了更新回滚、任务复用、事件触发、调试与最佳实践。

如果说 Helm 解决的是"如何把应用打包并部署到 Kubernetes",那么 Tekton 解决的就是"如何把构建、测试、部署这一整套流程,变成 Kubernetes 里一等公民的自动化流水线"。两者结合,正好覆盖云原生交付的完整链路。

延伸阅读

  • Tekton 官方文档:https://tekton.dev/docs/
  • Tekton 代码仓库:https://github.com/tektoncd
  • 官方可复用任务:https://github.com/tektoncd-catalog
  • Artifact Hub(发现 Tekton 资源):https://artifacthub.io/

转载自 CSDN-专业IT技术社区

原文链接:https://blog.csdn.net/qq_41035650/article/details/167277068

文章来源转载

评论

赞0

评论列表

微信小程序
QQ小程序

关于作者

点赞数:0
关注数:0
粉丝:0
文章:0
关注标签:0
加入于:--