Skip to content
返回部署

Tekton 流水线

K8s 原生 CI/CD,Task、Pipeline 和 Run 作为 CRD。

CI/CD高级

为什么

Tekton 是 K8s 原生 CI/CD — Task 和 Pipeline 是 CRD,运行是 pod。云原生、可扩展,集成 ArgoCD/Flux 做 GitOps。

DORA 2024 DevOps 状态报告显示精英团队部署频率比低绩效团队高 973 倍。带自动化测试的 CI/CD 管道将变更失败率降至 5-15%,而手动部署为 40-60%。

何时使用

K8s 原生 CI/CD 用 Tekton。非 K8s 避免(用 GH Actions)。

如何做

1. 安装 — tekton-pipelines 控制器 2. Task — 容器中可复用步骤 3. Pipeline — Task 图 4. 资源 — git 输入、镜像输出 5. 运行 — PipelineRun 触发执行 6. 目录 — tekton catalog 可复用 task 7. 触发 — 事件监听器 webhook

示例

# task.yaml — npm test apiVersion: tekton.dev/v1beta1 kind: Task metadata: { name: npm-test } spec: steps: - image: node:20 script: |- npm ci npm test # pipeline.yaml apiVersion: tekton.dev/v1beta1 kind: Pipeline metadata: { name: ci } spec: tasks: - name: test taskRef: { name: npm-test } - name: build runAfter: [test] taskRef: { name: npm-build } # 运行流水线 apiVersion: tekton.dev/v1beta1 kind: PipelineRun metadata: { name: ci-run } spec: { pipelineRef: { name: ci } }

常见问题

  • ⚠Task 失败 — 查 pod 日志,kubectl logs -n tekton-pipelines
  • ⚠无 git 资源 — 用 catalog 中 git-clone task
  • ⚠环境间配置漂移 — 使用基础设施即代码(Terraform/Pulumi)保持 dev/staging/prod 一致

最佳实践

  • ✓用 Tekton Catalog task — 可复用、社区维护
  • ✓共享存储用 workspace — 经 PVC 在 task 间传递
  • ✓设置健康检查和优雅关闭 — 处理 SIGTERM 以在退出前排空进行中的请求

常见问题解答