Tekton是一个强大且灵活的CICD开源框架,是实现云原生中CI的重要组件,它允许开发人员跨云构建、测试和部署应用。
介绍
- Tekton 负责构建 CI Pipeline,如镜像制作、Sona扫描等
- Tekton 由 Continuous Delivery Foundation 和 Linux Foundation 维护
- Tekton 使用 Github Action 的部分镜像也是可以的
- 使用 Tekton 项目,用户可以构建 Kubernetes 风格的 Pipeline,控制微服务的生命周期
- pipelinesascode
核心概念
What are the components of Tekton
Tekton Pipeline- 最核心的组件,由一组 k8s CRDs 和相关的 Operator、Webhook 组成
- 作为 k8s 的扩展部署
Tekton Triggers:触发器(可选),可触发 Pipeline 的实例化Tekton cli:命令行工具tknTekton Dashboard:web 界面(可选)Tekton CatalogTekton HubTekton Operator
Tekton Pipeline
Tekton Pipeline 模型由3个核心属于:
-
Pipeline- 一组
Task组成的集合,可按定义以不同方式运行:串行、并行和DAG
- 一组
-
Step- CI/CD 工作流中的一个具体操作,如
go test ./... - 每个
Step都会通过一个特定的Container(k8s Pod)运行,类似于 Github Action
- CI/CD 工作流中的一个具体操作,如
-
Task- 一组
Step组成的序列,按照定义的顺序依次运行于同一个 Pod 的不同容器中 - 可共享一组环境变量、卷存储等
- 一个
Task的输出可由后续的Task引用
- 一组
-
TaskRun和PipelineRunTaskRun代表 Task 一次具体的执行过程PipelineRun代表 Pipeline 一次具体的执行过程,本身不执行任何具体任务,由安装特定顺序的 TaskRun 组成- Task 和 Pipeline 附加到具体的资源上,创建出
TaskRun和PipelineRun,类似于类的实例化,但需要有参数组成(测试的输入) - 支持手动和 Trigger 自动触发
-
Parameters使具体的 Task 和 Pipeline 资源定义出的示例更加有通用性的关键要素之一- 如将 git 仓库的 URL 定义为 Parameters,使拉取代码的 Task 更具有通用性
- 之前称为为 Input/Output
Resource
- Tekton 支持的 Resource:
- git repo
- pull Request:一次特定的 pr
- Image:容器镜像
- Cluster:k8s 集群
- Storage:Blob 存储上的 object 或 Directory
- CloudEvents
数据共享
Pipeline 上一个 Task 的多个 Step 之间或一个 Pipeline 的多个 Task 之间,有共享数据的需求,如前一个 Task 的结果需要被后一个 Task 引用
解决方案:
Result:由 Task 声明,由 Task 中的 Step 生成的结果保存于临时文件(/tekton/results/<NAME>)中,后由同一个 Task 的 Step 引用,或有后续其他 Task 的 Step 引用- 通过变量引用文件
$(results.<NAME>.path) - 由 Tekton 的 Result API 负责实现,仅可用于共享小于 4096 字节的数据
- 通过变量引用文件
Workspace:由 Task 声明的,由 TaskRun 在运行时提供的文件系统- 通常对应于 Kubernetes 上的 ConfigMap、Secret、EmptyDir、静态 PVC 类型的卷、或者由 VolumeClaimTemplate 动态申请的 PVC
- emptyDir 的生命周期与 Pod 相同,因此仅能在一个 TaskRun 的各个 Step 间共享数据
- 若需要跨 Task 共享数据,则需要使用 PVC
- 通常对应于 Kubernetes 上的 ConfigMap、Secret、EmptyDir、静态 PVC 类型的卷、或者由 VolumeClaimTemplate 动态申请的 PVC
Tekton Trigger
Tekton Trigger用来监听特定的事件,并根据条件触发匹配的 Tekton Pipeline- 如代码仓库的push事件触发镜像制作
Tekton Trigger提供声明式 API- 允许用户按需定义监视的事件,并将其与指定的 Pipeline 关联创建出 PipelineRun
- 允许将事件中的某些属性注入到 Pipeline 中
Tekton Trigger的 CRDs- EventListener
- Trigger
- TriggerBinding
- TriggerTemplate
- ClusterTriggerBinding
- Interceptor
最近更新
最新评论