重要
Tekton 是 K8s 原生的 CI/CD 框架,通过 CRD 定义 Task、Pipeline、PipelineRun 等资源。本文记录实际使用的场景和常见坑点。
环境说明
- K8s 集群 + Tekton v0.16
1.简介
基于 Tekton 实现以下 CI/CD 场景:
- 镜像部署
- 源码构建 + 镜像部署
- 源码文件上传 HDFS
- 微服务依赖关系编排
2.说明
2.1 安装
| |
2.2 Docker-in-Docker
nuctl(nuclio 客户端)需要访问 Docker daemon:
| |
原因:Tekton Task 中的容器默认不挂载 Docker socket。需要使用 dind-sidecar 模式。
2.3 构建镜像
Kaniko 容器可以在不挂载 Docker socket 的情况下构建镜像:
2.4 Task 之间传递数据
通过 results 在 Task 间传递数据:
| 方向 | 配置位置 | 关键字 |
|---|---|---|
| 传出 | Task 定义 | results |
| 传入 | Pipeline 定义 | params + $(tasks.<name>.results.<key>) |
2.5 任务编排
| 方式 | 适用场景 |
|---|---|
runAfter | 明确依赖顺序的串行任务 |
when | 条件判断,根据前一个 Task 结果决定是否执行 |