type
status
date
slug
summary
category
tags
create_time
Oct 16, 2025 05:20 PM
icon
password
my_create_time
📝 前言
在云原生时代,CI/CD 工具的核心诉求 是与 Kubernetes 的原生生态无缝衔接。
传统的 Jenkins 需要依赖外部 Agent、插件体系复杂、集群化部署困难,而 Tekton 则完全基于 Kubernetes CRD 构建,将流水线定义、执行、状态追踪都交由 K8S 控制器管理。
🧭 背景介绍
在云原生持续交付的演进中,CI/CD 系统经历了三个阶段:
阶段 | 特点 | 代表工具 |
传统阶段 | 独立部署,Agent 固定,依赖主从结构 | Jenkins、TeamCity |
云托管阶段 | 平台托管,易用但可扩展性有限 | GitHub Actions、GitLab CI |
云原生阶段 | 基于 Kubernetes,声明式、可扩展、事件驱动 | Tekton、Argo Workflows |
Tekton 正是这一第三阶段的代表 —— Kubernetes 原生的 CI/CD 基础设施框架。
📋 前提条件
- 已部署 Kubernetes 集群
PS:可参看之前文章一键部署:第四部分:使用 sealos 部署集群
🚀 本章小节
1️⃣ Tekton 架构与核心概念
Tekton 并不是单一组件,而是一组可组合的 CRD 控制器集合:
概念 | 说明 |
Task | 可复用的任务定义,例如构建镜像、运行测试、推送镜像等 |
Pipeline | 由多个 Task 串联或并行执行的完整流水线 |
PipelineRun | 某次具体的流水线运行实例 |
Workspace | 任务之间共享的持久卷或工作目录 |
Trigger | 监听外部事件(如 Git Push、Webhook)触发流水线 |
Result | 用于传递 Task 输出结果 |
Tekton 的所有执行过程都是 K8S 原生的 Pod 调度,这意味着它与容器运行时、命名空间隔离、ServiceAccount 权限模型无缝结合。
2️⃣ 安装Tekton
这里直接使用官方最新版本进行安装:
3️⃣ 安装 Tekton Dashboard(可选)
这里还可以安装一个可视化的管理面板,当然如果不需要直接通过YAML也是可以创建流水线的:
安装成功后可以通过
Ingress
或者NodePort
进行暴露访问:
4️⃣ 编写第一个 Task:构建镜像
Tekton 的 Task 是最基本的构建单元。
下面是一个使用 Kaniko 构建 Docker 镜像的示例:
Kaniko 不依赖
docker.sock
,适用于容器内构建环境。正式使用建议是直接使用社区已经做好的
Kaniko Task
:5️⃣ 定义 Pipeline:串联多个任务
流水线通过引用多个 Task 实现自动化构建。
先安装官方的 git-clone task:
上面的示例中:
- 第一个 Task 拉取代码(可复用官方
git-clone
任务)
- 第二个 Task 构建镜像并推送到镜像仓库。
此时流水线还没有运行,只是创建出来了一个模板。
5️⃣ 执行 PipelineRun
Tekton 运行流水线的实例叫 PipelineRun:
执行完成后,Tekton 将:
- 克隆仓库到工作目录;
- 使用 Buildah 构建 Docker 镜像;
- 推送到指定镜像仓库(需提前配置 registry 登录权限,如通过 Secret 注入)。
6️⃣ 最佳实践建议
- 使用 Tekton Catalog
Tekton 官方维护了 tektoncd/catalog,可直接复用任务模板(如 git-clone、kaniko、kubectl)。
- 与 GitOps 结合
Tekton 负责构建镜像,ArgoCD 负责部署发布,形成 CI + CD 闭环。
- 参数化多环境管理
通过
PipelineRun.params
定义 dev / staging / prod 环境变量,实现一套流水线多环境复用。✅ 总结
Tekton 以 Kubernetes 原生 CRD + Controller 模式 实现了构建即声明、执行即资源的理念。
它的最大特点是“无侵入”:无需额外 Agent,无需守护进程,所有任务天然分布式、可伸缩。
所需的代价可能就是学习成本了~
有关文章的任何疑问,欢迎您在底部评论区留言,一起交流~
- 作者:青萍叙事
- 链接:https://blog.lusyoe.com/article/tekton-k8s-cicd-guide
- 声明:本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。