Tekton入门
Tekton 入门指南:云原生 CI/CD 利器
一、Tekton 是什么
Tekton 是一个开源的云原生 CI/CD(持续集成/持续交付)框架,使用 Go 语言开发,专为 Kubernetes 环境设计。它允许开发者通过声明式 YAML 文件在 Kubernetes 集群中定义和执行流水线,从而完成代码构建、测试、镜像打包和部署等任务。
历史背景
Tekton 的前身是 Knative 的子项目 build-pipeline,最初目的是为 Knative 的 build 模块增加流水线功能。后来它独立出来,定位为通用的 CI/CD 工具。
2026 年 3 月,Tekton 正式从 CD Foundation(CDF)转入 CNCF(云原生计算基金会),成为 CNCF 的孵化项目$TRAE_REF。这标志着 Tekton 与 Kubernetes、Knative、Argo 等项目站到了同一阵营,是其发展历程中的重要里程碑。
为什么需要 Tekton
传统的 CI/CD 工具(如 Jenkins、GitLab CI)虽然也支持在 Kubernetes 上运行,但它们本质上是将 K8s 作为"扩展"来使用,并非原生设计。Kubernetes 作为新一代基础设施,迫切需要一套"生于 K8s、长于 K8s"的 CI/CD 方案。Tekton 基于 Kubernetes CRD(自定义资源)+ Controller 模式实现,所有流水线任务都以 Pod 形式运行,天然具备弹性伸缩、资源隔离、跨集群部署等能力。
二、Tekton 的六大优势
可移植:跨平台、跨语言、跨部署环境。Tekton 定义的流水线可以在任何 Kubernetes 集群上运行,不受具体环境限制。
可定制:Tekton 的每个实体(Task、Pipeline)都是完全可定制的。平台工程师可以定义细粒度的构建模块,供开发团队在不同场景下灵活组合使用。
可复用:一旦定义好 Task 或 Pipeline,组织内任何人都可以直接引用,无需重复造轮子。这使得构建复杂流水线的效率大幅提升。
可扩展:Tekton Catalog 是社区驱动的 Task 仓库,包含数百个经过验证的预制组件(Maven 构建、Docker 镜像打包、Helm 部署等),开箱即用。
标准化:Tekton 作为 Kubernetes 扩展安装和运行,使用成熟的 K8s 资源模型。流水线定义采用声明式 YAML,天然支持版本控制和 GitOps 工作流。
可伸缩:增加工作负载只需向集群添加节点即可,Tekton 随集群自动扩展,无需重新定义资源分配或修改流水线配置。
三、Tekton 组件概览
Tekton 由多个子项目组成,各司其职:
| 组件 | 功能说明 |
|---|---|
| Tekton Pipelines | 核心引擎,定义了一组 Kubernetes CRD(Task、Pipeline 等),是组装 CI/CD 流水线的基石 |
| Tekton Triggers | 事件驱动组件,允许基于外部事件(如 GitHub PR 合并、代码推送)自动触发流水线执行 |
| Tekton CLI | 命令行工具(tkn),用于与 Tekton 交互,管理 Task、Pipeline 等资源 |
| Tekton Dashboard | 基于 Web 的图形界面,用于查看和管理 PipelineRun、TaskRun 的状态与日志 |
| Tekton Catalog | 社区贡献的高质量 Task 和 Pipeline 仓库,可直接复用 |
| Tekton Hub | 基于 Web 的 Catalog 浏览界面,方便搜索和发现可用组件 |
| Tekton Operator | 通过 Kubernetes Operator 模式管理 Tekton 组件的安装、升级和卸载 |
| Tekton Chains | 为流水线构建的产物(镜像、构件)生成、存储和签名来源证明,保障供应链安全 |
四、核心概念详解
理解 Tekton 的关键在于掌握五个核心概念,它们形成了一套分层清晰的流水线建模语言。
4.1 Task —— 最小执行单元
Task 是 Tekton 中最小的可复用单元,定义了一组有序的 Step。每个 Step 对应一个容器中执行的命令,例如代码拉取、编译构建、镜像打包、应用部署等。Tekton 会为每个 Step 启动一个独立的 Container。
Task 本身只是"模板",不包含具体执行上下文。它强调无状态和幂等性——只要输入一致,输出就确定。
4.2 TaskRun —— Task 的实例化
TaskRun 是 Task 的一次具体执行。它绑定实际的输入参数(如 Git 仓库地址、镜像标签)、超时策略、重试逻辑等,并驱动底层控制器创建专属 Pod 来运行 Task 中的 Step。
一个 TaskRun 对应一个 Pod,每个 Step 对应 Pod 中的一个 Container。
4.3 Pipeline —— 编排多个 Task
Pipeline 是按照有向无环图(DAG)顺序排列的 Task 集合。它定义了多个 Task 之间的依赖关系(通过 runAfter 字段控制执行顺序),支持参数传递、并行执行、条件分支(when 表达式)等。
Pipeline 同样是"模板",不直接执行。
4.4 PipelineRun —— Pipeline 的实例化
PipelineRun 是 Pipeline 的一次执行入口。它注入运行时参数,并承载完整的执行上下文:触发来源、超时设置、ServiceAccount 权限、日志路径等。每次执行都会在集群中创建一条可追踪的 PipelineRun 记录。
4.5 使用场景区分
- Task:适用于较简单的工作负载,比如运行单元测试、代码 lint 检查、构建缓存等。Task 在单个 Pod 中执行。
- Pipeline:适用于复杂工作负载,比如静态分析 + 测试 + 构建 + 部署的完整流程。
4.6 层级关系一张图
PipelineRun (执行入口)
└── Pipeline (模板:定义 Task 的有序集合)
├── Task A (模板:定义一组 Step)
│ ├── Step 1 → Container
│ └── Step 2 → Container
├── Task B (模板)
│ └── Step 1 → Container
└── Task C (模板)
├── Step 1 → Container
└── Step 2 → Container五、安装部署实战
5.1 版本兼容性
Tekton 各组件的版本与 Kubernetes 版本有对应关系,安装前务必确认。以下是截至 2026 年 9 月的参考对照:
| Tekton Pipelines 版本 | 最低 Kubernetes 版本 |
|---|---|
| v1.15.x (LTS,当前最新) | v1.27+ |
| v1.12.x (LTS) | v1.26+ |
| v1.9.x (LTS) | v1.25+ |
| v0.44.x 及更早 | v1.23 ~ v1.24 |
建议:生产环境优先选择 LTS(Long Term Support)版本,可获得长期的安全补丁和关键 bug 修复。当前最新 LTS 为 v1.15.0,支持至 2027 年 7 月$TRAE_REF。
5.2 安装 Tekton Pipelines
# 下载并部署(以 v1.15.0 LTS 为例)
kubectl apply -f https://infra.tekton.dev/tekton-releases/pipeline/previous/v1.15.0/release.yaml
# 查看 Pod 状态
kubectl get pods --namespace tekton-pipelines --watch
# 当所有 Pod 的 READY 列显示 1/1 时,安装完成提示:如果集群无法直接拉取 gcr.io 镜像,可以借助 GitHub Action 或 Skopeo 工具将镜像同步到自己的私有仓库或 Docker Hub,然后替换资源清单中的镜像地址。5.3 安装 Tekton Triggers
# 下载并部署 Triggers(版本需与 Pipelines 匹配)
kubectl apply -f https://infra.tekton.dev/tekton-releases/triggers/previous/v0.27.0/release.yaml
kubectl apply -f https://infra.tekton.dev/tekton-releases/triggers/previous/v0.27.0/interceptors.yaml
# 查看 Pod 状态
kubectl get pods --namespace tekton-pipelines -l app.kubernetes.io/part-of=tekton-triggers5.4 安装 Tekton Dashboard
# 部署 Dashboard(release-full 版本支持读写操作)
kubectl apply -f https://infra.tekton.dev/tekton-releases/dashboard/previous/v0.50.0/release-full.yaml
# 查看 Pod 状态
kubectl get pods --namespace tekton-pipelines -l app.kubernetes.io/part-of=tekton-dashboardDashboard 默认通过 ClusterIP 暴露服务。如需外部访问,可配置 Ingress 或 kubectl port-forward:
# 临时端口转发(适合本地测试)
kubectl port-forward -n tekton-pipelines svc/tekton-dashboard 9097:9097然后访问 http://localhost:9097 即可打开 Dashboard。
5.5 安装 Tekton CLI
# 下载二进制文件(以 Linux amd64 为例)
CLI_VERSION="0.38.0"
curl -LO https://github.com/tektoncd/cli/releases/download/v${CLI_VERSION}/tkn_${CLI_VERSION}_Linux_x86_64.tar.gz
tar xvzf tkn_${CLI_VERSION}_Linux_x86_64.tar.gz -C /usr/local/bin/ tkn
# 验证安装
tkn version也可以将 tkn 添加为 kubectl 插件,方便使用:
ln -s /usr/local/bin/tkn /usr/local/bin/kubectl-tkn
kubectl plugin list # 验证插件是否生效六、快速上手
安装完成后,可以通过以下资源快速入门:
- 官方快速开始:
https://tekton.dev/docs/getting-started/ - GitHub 示例仓库:
https://github.com/tektoncd/pipeline/tree/main/examples—— 包含 Task、TaskRun、Pipeline、PipelineRun、挂载卷、结果存储等完整示例 - Tekton Hub:
https://hub.tekton.dev—— 浏览和搜索社区贡献的预制 Task,如git-clone、maven、kaniko、helm-upgrade等
七、总结
Tekton 的核心价值在于将 CI/CD 流水线变成 Kubernetes 的一等公民。它不是简单的"又一个 CI 工具",而是一套基于 CRD + Controller 的标准化流水线建模语言。
在实际项目中,Tekton 常与 Argo CD 搭配形成"CI + CD 黄金组合":Tekton 负责代码构建、测试、镜像打包与安全扫描(CI),Argo CD 负责 GitOps 式的声明同步与自动部署(CD)。两者各司其职,共同构成云原生的完整交付链路。



w


