Tekton是Kubernetes原生的持续集成和交付(CI/CD)解决方案之一。它允许开发人员在混合云或私有云中进行构建、测试和部署

Tekton官方提供了较多的交互式教程,便于开发者直接实践应用此工具。想快速上手可以点击: https://tekton.dev/try image.png


** 总览 **

Tekton是开源的Kubernetes原生CI / CD(持续集成和交付/部署)解决方案。他可以使开发人员使用自己的Kubernetes中构建,测试和跨集群部署。 截至目前,Tekton包含四个组件:

  • Pipelines: CI/CD 工作流的基本模块
  • Triggers: CI/CD工作流的触发器
  • CLI:tekton命令行工具
  • Dashboard:可视化页面

Pinelines是Tekton的核心组件,其他组件也是基于其之上产生的。Triggers 、CLI、Dashboard是可选的,可以根据团队自身情况选择是否启用。

** 概念模型 **

** Steps、Tasks、Pinelines **

  • Step是CI/CD工作流中的操作,例如为Python web应用程序运行一些单元测试,或编译Java程序。Tekton使用您提供的基础镜像执行每个步骤
  • Task是按顺序排列的Step集合。Tekton以Kubernetes Pod的形式执行Task,其中每个Step都成为Pod中的运行的容器。这种设计允许Task中的所有Step享用相同环境。例如,在Task中挂载一个Kubernetes卷,该卷可以在Task中的每个Step中访问
  • Pineline是按顺序排列的Task集合。Tekton收集所有任务,将它们连接在一个有向无环图形(DAG)中,然后按顺序执行该图形的任务。换句话说,它创建了多个Pod对象,并确保每个Pod按成功的按照预期运行。Tekton允许开发人员完全控制该过程:用户可以设置任务完成的fan-in(扇入)/fan-out(扇出)场景,要求Tekton在存在flaky测试时自动重试,或者指定Task在继续之前必须满足设定的条件

Tasks和Pinelines在Kubernetes集群中被标记为自定义资源( custom resources: CRD) file

** 资源的输入输出(Input and output resources) ** 每个 Task 和 Pinelines 可能都有自己的输入和输出,在Tekton中称为输入和输出资源。例如,编译任务可能有一个 git 库作为输入,一个镜像作为输出:该任务从git库拉取源代码,运行一些测试,最后将代码构建到一个可运行的镜像中

Tekton支持多种不同类型的资源,包括:

  • Git:一个Git仓库
  • Pull Request:git库中的特定拉取请求
  • Image:容器镜像
  • Cluster:Kubernetes集群。
  • Storage:BLOB存储中的对象或目录,如Google云存储
  • CloudEvent:一个CloudEvent
  • Resources在Kubernetes集群中被标记为自定义资源( custom resources: CRD) file

** TaskRuns 和 PipelineRuns **

顾名思义,PipelineRun 是 Pipeline 的特定执行方式。例如,您可以要求Tekton每天运行某个工作流两次,每次执行都将成为Kubernetes集群中可跟踪的 PipelineRun 资源。您可以查看CI/CD工作流的状态,包括使用 PipelineRuns 执行每个任务的详细信息

类似地,TaskRun 是任务的特定执行方式。当您选择 Pipeline 在外部运行任务时,也可以使用TaskRuns,您可以使用它查看任务中每个步骤执行的详细信息

TaskRuns 和 PipelineRuns 将资源与任务和管道连接起来。运行必须包括资源的实际地址,例如git仓库的URL、Task 或 Pineline的需求。这种设计允许使用者复用 Task 和 Pineline来获取不同的输入输入

您可以手动创建 TaskRuns 或 PipelineRuns,这会触发Tekton立即运行 Task 或 Pineline。或者,您可以要求Tekton组件(如Tekton触发器) 根据需求自动创建并且执行。例如,在每次将有新的代码提交后自动执行 pineline

TaskRuns 和 PipelineRuns 在Kubernetes集群中被标记为自定义资源( custom resources: CRD) file

** Tekton是如何工作的 **

简而言之,Tekton Pipeline 的核心是通过打包每个 Step 来发挥作用。确切地说,Tekton Pipeline 在每个 Step 容器中注入二进制文件,在系统就绪时执行您指定的命令。

Tekton Pipeline 使用Kubernetes Annotations 跟踪 Pineline 的状态。这些 annotations 使用 Kubernetes Downward API 以文件的形式挂载到每个 Step 容器中。入口点二进制文件密切监视挂载的文件,并且只有包含特定 annotations 的文件才会启动所提供的命令。例如,当要求 Tekton 在一个 Task 中连续运行两个 Step 时,注入到第二步容器中的入口点二进制文件将空闲等待,直到 annotations 反馈第一步容器已经成功完成

此外,Tekton Pipeline安排一些容器在步骤容器之前和之后自动运行,以便支持特定的内置功能,如检索输入资源和将输出上载到BLOB存储解决方案。您还可以通过 taskRuns 和 PipelineRuns 跟踪它们的运行状态。在运行步骤容器之前,系统还执行许多其它操作来设置环境

更多内容请访问【云原生建筑师】https://blog.dtcka.com

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐