Tekton
是一个强大且灵活的CICD开源框架,是实现云原生中CI的重要组件,它允许开发人员跨云构建
、测试
和部署
应用。
介绍
核心概念
What are the components of Tekton
Tekton Pipeline
- 最核心的组件,由一组 k8s CRDs 和相关的 Operator、Webhook 组成
- 作为 k8s 的扩展部署
Tekton Triggers
:触发器(可选),可触发 Pipeline 的实例化Tekton cli
:命令行工具 tkn
Tekton Dashboard
:web 界面(可选)Tekton Catalog
Tekton Hub
Tekton Operator
Tekton Pipeline
pipeline
Tekton Pipeline
模型由3个核心属于:
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
Tekton Trigger
图参考
Tekton Trigger
用来监听特定的事件,并根据条件触发匹配的 Tekton PipelineTekton Trigger
提供声明式 API- 允许用户按需定义监视的事件,并将其与指定的 Pipeline 关联创建出 PipelineRun
- 允许将事件中的某些属性注入到 Pipeline 中
Tekton Trigger
的 CRDs- EventListener
- Trigger
- TriggerBinding
- TriggerTemplate
- ClusterTriggerBinding
- Interceptor