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进行暴露访问:
notion image

4️⃣ 编写第一个 Task:构建镜像

Tekton 的 Task 是最基本的构建单元。
下面是一个使用 Kaniko 构建 Docker 镜像的示例:
Kaniko 不依赖 docker.sock,适用于容器内构建环境。
正式使用建议是直接使用社区已经做好的 Kaniko Task

5️⃣ 定义 Pipeline:串联多个任务

流水线通过引用多个 Task 实现自动化构建。
先安装官方的 git-clone task:
上面的示例中:
  1. 第一个 Task 拉取代码(可复用官方 git-clone 任务)
  1. 第二个 Task 构建镜像并推送到镜像仓库。
此时流水线还没有运行,只是创建出来了一个模板。

5️⃣ 执行 PipelineRun

Tekton 运行流水线的实例叫 PipelineRun
执行完成后,Tekton 将:
  1. 克隆仓库到工作目录;
  1. 使用 Buildah 构建 Docker 镜像;
  1. 推送到指定镜像仓库(需提前配置 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,无需守护进程,所有任务天然分布式、可伸缩。
所需的代价可能就是学习成本了~
💡
有关文章的任何疑问,欢迎您在底部评论区留言,一起交流~
 

评论
Loading...