Tekton Pipelines完全入门指南:如何在Kubernetes上5分钟搭建云原生CI/CD流水线
【免费下载链接】pipelineA cloud-native Pipeline resource.项目地址: https://gitcode.com/gh_mirrors/pipelin/pipeline
Tekton Pipelines 是一个开源的 Kubernetes 云原生 CI/CD 流水线引擎,它把构建、测试、部署等连续交付流程声明为标准的 Kubernetes 资源。本文带你从零开始:先用一条命令 5 分钟装好 Tekton Pipelines,再跑通第一个 Task,最后搭建一条真实的云原生 CI/CD 流水线,并附上调试技巧与资源目录速查。
什么是 Tekton Pipelines?🚀
一句话理解:Tekton Pipelines 让你在 Kubernetes 集群上用"声明式 YAML"定义 CI/CD 流水线。它具备三个鲜明特点(见 README.md):
| 特点 | 含义 | 对新手的好处 |
|---|---|---|
| ☁️云原生 | 运行在 Kubernetes 上,以容器为构建块 | 无需额外 Agent,集群即 CI 引擎 |
| 🔌解耦 | 一条 Pipeline 可部署到任意集群,Task 可独立运行 | 换仓库、换集群只需改参数 |
| 🧩类型化 | 资源(如镜像构建)有类型抽象 | 构建工具(kaniko / buildkit)可随意替换 |
核心概念只有 4 个,记住它们就懂了 80%:
- Task:最小执行单元,由若干 Step(容器)组成,对应 docs/taskruns.md
- TaskRun:一次 Task 的运行实例
- Pipeline:按依赖关系编排多个 Task 的流水线,对应 docs/pipelines.md
- PipelineRun:一次 Pipeline 的运行实例,对应 docs/pipelineruns.md
5分钟安装:一条命令部署 Tekton Pipelines
安装前检查
- 一个Kubernetes 1.28 及以上的集群(版本要求见 README.md 的 Required Kubernetes Version 一节)
- 配置好的
kubectl - 当前用户具备
cluster-admin权限
一键安装步骤
运行官方安装命令(详细步骤见 docs/install.md):
kubectl apply --filename https://infra.tekton.dev/tekton-releases/pipeline/latest/release.yaml验证安装成功
观察控制器组件是否全部就绪,全部显示1/1即安装完成:
kubectl get pods --namespace tekton-pipelines --watch仓库内也保留了完整的控制器部署清单,方便阅读源码对照,例如 config/controller.yaml、config/webhook.yaml,以及各自定义资源的 CRD 定义目录 config/300-crds/(如 300-pipeline.yaml、300-taskrun.yaml)。
💡 生产环境建议使用 Tekton Operator 管理升级与高可用,快速安装方式更适合上手体验。
快速上手:跑通第一个 Task 和 TaskRun
写一个最小 Task
Task 就是一个带步骤的容器任务。下面的最小示例只会打印一句话,适合验证环境:
apiVersion: tekton.dev/v1 kind: Task metadata: name: hello-world spec: steps: - name: hello image: ubuntu script: | echo "Hello, Tekton Pipelines!"保存为hello.yaml并应用:
kubectl apply -f hello.yaml创建 TaskRun 触发执行
TaskRun 通过taskRef引用 Task,运行后每个 Step 会在集群里变成一个真实的 Pod:
apiVersion: tekton.dev/v1 kind: TaskRun metadata: name: hello-run spec: taskRef: name: hello-world实时跟踪状态,直到出现Succeeded:
kubectl get taskrun --watch查看运行日志
先找到 Pod 名,再看step-hello容器的输出:
kubectl get pods kubectl logs <pod名称> -c step-hello日志的完整用法(包括 sidecar 日志、终止消息等)见 docs/logs.md。
搭建真实 CI/CD 流水线:你的第一条 Pipeline
Pipeline 的核心字段
一条 Pipeline 只需声明:参数(params)、工作区(workspaces)和任务列表(tasks)。任务之间用runAfter指定顺序,用workspaces共享数据。仓库自带的完整示例可直接学习:examples/v1/pipelineruns/pipelinerun.yaml
示例:拉代码 → 构建镜像
apiVersion: tekton.dev/v1 kind: Pipeline metadata: name: build-app spec: params: - name: repo-url type: string workspaces: - name: shared-data tasks: - name: fetch-source taskRef: name: git-clone # 社区常用 Task,克隆代码 workspaces: - name: output workspace: shared-data - name: build-image runAfter: [fetch-source] # 拉完代码再构建 taskRef: name: build-imagePipelineRun:一次运行只需绑定参数和存储
apiVersion: tekton.dev/v1 kind: PipelineRun metadata: name: build-app-run-1 spec: pipelineRef: name: build-app params: - name: repo-url value: "https://example.com/myapp.git" workspaces: - name: shared-data volumeClaimTemplate: spec: accessModes: ["ReadWriteOnce"] resources: requests: storage: 1Gi执行kubectl apply -f pipelinerun.yaml后,流水线即自动调度:先克隆代码,再构建镜像,共享同一块存储卷。Workspace 的更多玩法(PVC、emptyDir、subPath 等)见 docs/workspaces.md。
实用进阶:4 个新手必备特性
1️⃣params 与 results 传递数据上游 Task 的results可以直接作为下游 Task 的params传入,比如把克隆到的 commit SHA 传给构建步骤,让每次构建可追溯。变量替换语法见 docs/variables.md。
2️⃣when 表达式条件执行用when表达式按参数或上游结果决定某个 Task 是否运行,例如只在branch == main时才触发部署,实现"主干自动发布、分支只跑测试"。
3️⃣finally 任务:失败也执行的收尾finally中的 Task 无论流水线成功与否都会执行,适合放通知、清理、上报等收尾动作。
4️⃣远程 Task:直接从 Git 仓库或镜像仓库拉取不必把每个 Task 都存在集群里。Git Resolver 支持在 Pipeline 中直接引用远端仓库的 Task(resolverRef: git),实现"代码即流水线",配置方法见 docs/git-resolver.md 与 docs/resolution-getting-started.md。
此外,Matrix 特性可以一条 Task 展开成多实例并行执行(如一次构建多平台镜像),文档在 docs/matrix.md。
调试指南:状态、日志与常见问题
| 场景 | 命令 / 入口 |
|---|---|
| 查看运行状态 | kubectl get taskrun -w/kubectl get pipelinerun -w |
| 查看某次运行详情 | kubectl describe taskrun <名称> |
| 查看某一步日志 | kubectl logs <pod> -c step-<step名> |
| 排查 Pod 调度/启动失败 | kubectl describe pod <pod> |
小技巧:
- TaskRun 卡在
Pending:多半是 ServiceAccount 权限或调度资源问题,用kubectl describe看事件。 - 想看每一步的退出码与耗时,
describe输出的 Conditions 里都有。 - 更深入的调试手段(日志、指标、追踪)可参考 docs/debug.md 与 docs/metrics.md。
资源目录速查:文档都在哪里?📚
仓库内置了完整文档与示例,建议按此路径学习:
- 📖 安装:docs/install.md
- 📖 Task / TaskRun:docs/taskruns.md
- 📖 Pipeline 全字段说明:docs/pipelines.md
- 📖 工作区与数据共享:docs/workspaces.md
- 📖 变量替换:docs/variables.md
- 📚 官方示例(TaskRun 与 PipelineRun 各几十个):examples/v1/taskruns/ 与 examples/v1/pipelineruns/,如 step-script.yaml、pipelinerun-with-params.yaml
- 🏗️ 控制器内部机制(进阶):docs/developers/README.md 与 DEVELOPMENT.md
- 🗺️ 版本发布与路线图:releases.md、roadmap.md
写在最后
回到开头的问题——如何在 Kubernetes 上 5 分钟搭建云原生 CI/CD 流水线?答案就是三步:一条kubectl apply装好 Tekton Pipelines → 一个 YAML 跑通 TaskRun → 一条 Pipeline 串起拉代码到构建镜像的全流程。相比传统 CI 工具,Tekton Pipelines 的"云原生 + 声明式 + 可组合"特性,让流水线像 K8s 工作负载一样可版本化、可复用、可移植。下一步,建议直接从 examples/v1/ 中挑一个最贴近你业务的示例改起来,你会发现上手远比你想象的快。
【免费下载链接】pipelineA cloud-native Pipeline resource.项目地址: https://gitcode.com/gh_mirrors/pipelin/pipeline
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考