Tekton 组件介绍
· Task
Task 为构建任务,是 Tekton 中不可分割的最小单位,正如同 Pod 在 Kubernetes 中的概念一样。在 Task 中,可以有多个 Step,每个 Step 由一个 Container 来执行。
· TaskRun:
PipelineRun 被创建出来后,会对应 Pipeline 里面的 Task 创建各自的 TaskRun。一个 TaskRun 控制一个 Pod,Task 中的 Step 对应 Pod 中的 Container。当然,TaskRun 也可以单独被创建。
· Pipeline:
Pipeline 由一个或多个 Task 组成。在 Pipeline 中,用户可以定义这些 Task 的执行顺序以及依赖关系来组成 DAG(有向无环图)。
· PipelineRun:
PipelineRun 是 Pipeline 的实际执行产物,当用户定义好 Pipeline 后,可以通过创建 PipelineRun 的方式来执行流水线,并生成一条流水线记录。
· PipelineResource:
表示Pipeline输入资源,比如GitHub上的源码,或者Pipeline输出资源,例如一个容器镜像或者构建生成的jar包等。
· Step、Task 和 Pipeline
· 输入与输出资源
Tekton支持的常用类型资源:Git、Pull Request、Image、Cluster、Storage、CloudEvent
· TaskRun 与 PipelineRun
TaskRun/PipelineRun在集群上实例化和执行Task/Pipeline,将资源与Task对象和Pipeline对象串联起来,通过运行来完成一次CI/CD工作流。TaskRun和PipelineRun可以通过手动创建、Dashboard上创建和触发Trigger自动 创建等方式完成创建。
· Step、Task 、Pipeline、TaskRun、PipelineRun
- Tekton Trigger 资源对象及模型
TriggerTemplate、TriggerBinding、EventListener
·
- TriggerTemplate
TriggerTemplate是可以模板化资源的资源,拥有可以在资源模板中任何位置替换的参数。
·
- TriggerBinding
TriggerBinding用来绑定事件(events)/触发器(Trigger),捕获事件中的字段并将其存储为参数。TriggerBinding从TriggerTemplate中分离开来是鼓励它们之间的重用。
·
- TriggerListener
EventListener是k8s的自定义资源,允许用户以声明的方式处理带有JSON数据体的HTTP传入事件。EventListener需对外开放服务,才能让事件进来。用户可以声明TriggerBinding以从事件中提取字段,并将其应用于 TriggerTemplate以创建Tekton资源。此外,EventListener允许使用事件拦截器进行轻量级的事件处理。
·
- 工作原理
开发者将代码提交给GitLab,然后Gitlab将推送事件给EventListener,接着Trigger基于TriggerBinding的配置从数据体中提取信息,装载在参数并传入TriggerTemplate中进行解析,最后实例化tekton的资源(task,taskrun,pipeline等对象)。要是实例化生成taskrun和pipelineRun,那就可以实现对流水线的触发。整个过程分工明确,每个对象都能做到解耦复用。
- Tekton Dashboard
是Tekton Pipeline和Tekton Trigger的通用Web界面,可通过Dashboard实现Tekton资源的创建、执行和检查等工作。
· Tekton CLI
提供名为 tkn 的命令行界面,利用它与Tekton进行交互。
· Tekton Catalog
Tekton Catalog 是一个高质量、由社区贡献的构建模块(tasks、pipelines)仓库
· Tekton Hub
用于访问 Tekton Catalog 的Web图形界面。
· Tekton Operator
Tekton Operator 是一个k8s Operator 项目,可便捷在k8s集群上安装、更新以及删除Tekton项目。