Tekton 概述
Tekton 是用于构建 CI/CD 系统的云原生解决方案。它由 Tekton Pipelines(提供构建块)和支持组件(例如 Tekton CLI 和 Tekton Catalog)组成,使 Tekton 成为一个完整的生态系统。Tekton 是Linux 基金会项目 CD 基金会的一部分。
Tekton 作为 Kubernetes 集群上的扩展安装和运行,并包含一组 Kubernetes 自定义资源,这些资源定义了可以为pipelines创建和重用的构建块。安装 Tekton Pipelines 后即可通过 Kubernetes CLI (kubectl) 和 API 调用使用,就像 Pod 和其他资源一样。
Tekton 优势
1. 可定制。 Tekton 是完全可定制的,具有高度的灵活性。平台工程师可以定义非常详细的构建块目录,供开发人员在各种场景中使用。
2. 可重复使用的。Tekton 是完全可移植的,因此一旦定义,组织内的任何人都可以使用给定的pipelines并重用其构建块。这使得开发人员能够快速构建复杂的pipelines,而无需“重新造轮子”。
3. 可扩展。Tekton Catalog 是社区驱动的 Tekton 构建块存储库。您可以使用 Tekton Catalog 中的预制组件快速创建新pipelines并扩展现有pipelines。
4. 标准化。Tekton 作为 Kubernetes 集群上的扩展安装和运行,并使用完善的 Kubernetes 资源模型。Tekton 工作负载在 Kubernetes 容器内执行。
5. 可扩展。要增加工作负载容量,您只需向集群添加节点即可。Tekton 可随您的集群进行扩展,无需重新定义资源分配或对pipelines进行任何其他修改。
Tekton 系统组件
Tekton Pipelines:是 Tekton 的基础。它定义了一组 Kubernetes自定义资源,这些资源充当构建块,您可以从中组装 CI/CD pipelines。
Tekton Triggers:允许您根据事件实例化pipelines。例如,每次将 PR 与 GitHub 存储库合并时,您都可以触发pipelines的实例化和执行。您还可以构建启动特定 Tekton 触发器的用户界面。
Tekton CLI:提供了一个名为 的命令行界面tkn,它构建在 Kubernetes CLI 之上,允许您与 Tekton 交互。
Tekton Dashboard:是 Tekton Pipelines 的基于 Web 的图形界面,可显示有关管道执行的信息。目前该项目正在进行中。
Tekton Catalog:由社区贡献的Tekton构建块(building blocks,例如Tasks和Pipelines等),用户可直接使用。
Tekton Hub:是一个基于 Web 的图形界面,用于访问 Tekton Catalog。
Tekton Operator: Kubernetes Operator,允许您在 Kubernetes 集群上安装、更新和删除 Tekton 项目。
Tekton Chain:提供了用于为使用 Tekton Pipelines 构建生成、存储和签署来源的工具。
Tekton 概念模型
Tekton Pipelines的Pipeline模型中存在三个核心术语:Step、Task和Pipeline。
Step
1. CI/CD工作流中的一个具体操作,例如Python web app的单元测试,或者是Java程序的编译操作;
2. 每个step都会通过一个特定Container(Pod中)运行;
Task
1. 由一组Step组成的序列,按照定义的顺序依次运行于同一个Pod内的不同容器中;
2. 可共享一组环境变量,以及存储卷
Pipeline
1. 由一组Task组成的集合,可按照定义以不同的方式运行:串行、并行和DAG;
2. 一个Task的输出可由其后Task引用;
TaskRun and PipelineRun
pipelineRun ,顾名思义,是 pipeline 的具体执行过程。例如,您可以要求 Tekton 每天运行两次 CI/CD 工作流程,每次执行都将成为Kubernetes 集群中可跟踪的pipelineRun资源。您可以使用pipelineRuns查看 CI/CD 工作流程的状态,包括每个Task执行的具体信息。
taskRun是Task的具体执行过程。 当您选择在pipeline之外运行任务时,TaskRun也可用,您可以通过它查看Task中每个步骤执行的详细信息。
具体运行时,Task和Pipeline连接至配置的Resource之上,进而创建出TaskRun和PipelineRun。
它们既可由用户手动创建,也可由Trigger自动触发。
参考文档