首页 > 其他分享 >Tekton的概念模型

Tekton的概念模型

时间:2023-01-25 15:34:17浏览次数:42  
标签:容器 Pipeline Task 概念模型 Tekton Step 运行

Tekton的主要功能是实现持续集成和交付部署。Tekton Pipeline是其核心组件,其他组件都是建立在Tekton Pipeline之上的。

1 Step、Task和Pipeline

Step(步骤)是CI/CD工作流中最小的基础操作单元。Tekton通过在Step中定义的容器镜像执行每个Step。它可以实现各种需求,如编译代码后制作成镜像并推送到镜像仓库,再把相应的程序镜像发布到Kubernetes集群中,这些实施细节都需要在Step中定义。

Task(任务)是由Step组成的集合。Tekton中会以Kubernetes Pod的形式运行Task,而Task中的每个Step都将作为Kubernetes集群Pod中的一个容器运行。此种设计模式允许同一个Task中的众多Step共享相应的资源,例如,Pod中的各容器可以访问在Pod级别定义的存储卷。

Pipeline(流水线)是Task的集合,可以按特定的执行顺序定义Task。每个Task都将作为Kubernetes集群上的一个Pod运行。为了使各Task共同协作实现持续集成,Pipeline提供了如任务重试、排序控制等功能。

如下所示,Pipeline中引用了Task A、Task B、Task C、Task D,因为Pipeline中各Task默认为并发执行,无法满足后一个Task依赖前一个Task结果的需求,所以使用排序功能定义各Task的执行顺序。首先由Task A运行,当Task A运行结束后,Task B和Task C并发运行。待Task B和Task C运行结束后Task D运行。我们还可以观察到,每个Task中的Step都是按定义的顺序在执行。如果想调整Task中Step的运行顺序,只能在Task中重新对Step进行排序。

 

2 输入与输出资源

每个Task和Pipeline可能都有自己的输入和输出,在Tekton中称为输入和输出资源。例如,定义一个Task,此Task主要完成代码从编译到镜像的创建,这时可以将Git存储库作为输入,容器镜像作为输出。如下所示,该任务从存储库克隆源代码,然后运行一些测试,最后将源代码构建为可执行的容器镜像。

Tekton支持多种不同类型的资源,以下列出主要的资源类型。

·Git:Git存储库。

·Pull Request:Git存储库中的特定请求。

·Image:容器镜像。

·Cluster:为Tekton所在集群以外的Kubernetes集群提供访问。

·Storage:Blob存储中的对象或目录,例如Google云存储。

·CloudEvent:定义事件数据的规范。

3 TaskRun与PipelineRun

TaskRun可以在集群上实例化和执行Task。在Pipeline之外通过单独运行TaskRun来执行Task,并且通过TaskRun查看Task中每个Step执行的细节。PipelineRun可以在集群上实例化和执行Pipeline。通过PipelineRun的运行状态查看每个Task的详细信息和运行情况。

TaskRun和PipelineRun把资源与Task和Pipeline对象串联起来,通过运行TaskRun和PipelineRun来完成一次CI/CD的工作流。

创建TaskRun和PipelineRun有多种方式,可以通过手动创建、在Dashboard上创建或通过触发器触发自动创建等方式完成,如下所示。

4 Tekton的运作方式

总体来说,Tekton Pipeline的核心功能是打包每个步骤。其中,Tekton Pipeline会在Step容器中注入一个二进制文件,将其作为入口点。当系统准备就绪时,将执行指定的命令。

Tekton Pipeline使用Kubernetes注释来跟踪Pipeline的状态。这些注释通过Kubernetes Downward API以文件的形式投射到每个Step容器中。该入口点的二进制文件密切关注投射的文件,只有在特定注释显示为文件时才会启动命令。例如,当要求Tekton在一个Task中连续运行两个Step时,注入第二个Step容器中的入口点的二进制文件将闲置等待,直到注释报告第一个Step容器成功完成。

此外,Tekton Pipeline会安排一些容器在Step容器之前和之后自动运行,以支持特定的内置功能,例如检索输入资源和将输出加载到存储库。你也可以通过TaskRun和PipelineRun跟踪它们的运行状态。在运行Step容器之前,系统还会执行许多其他操作来设置环境。

标签:容器,Pipeline,Task,概念模型,Tekton,Step,运行
From: https://www.cnblogs.com/muzinan110/p/17066987.html

相关文章

  • Tekton应用CI/CD配置
    下面的Pipeline配置中使用了镜像标签自动生成、代码构建和镜像推送、应用镜像部署三个任务。也可以根据各自持续集成和交付的需求添加诸如代码质量检查、自动化测试等任务,......
  • tekton TriggerBinding资源
    公众号:什么是TriggerBinding校验事件并提取相关字段属性资源详解例子triggerBinding/binding.yamlapiVersion:triggers.tekton.dev/v1alpha1kind:TriggerBindingmetadata......
  • tekton task资源
     欢迎关注我的公众号: 目前刚开始写一个月,一共写了18篇原创文章,文章目录如下:​​istio多集群探秘,部署了50次多集群后我得出的结论​​​​istio多集群链路追踪,附实操视频​......
  • tektont server/tekton dashboard部署/tkn 客户端工具安装使用
    部署tektonWEB界面​​https://tekton.dev/docs/getting-started/tasks/​​部署tektonDashborad​​https://tekton.dev/docs/dashboard/install/​​部署tkn客户端工具......
  • tekton pipline概念及调用流程
    概念:task:一个task即一个任务,一个任务运行一个podstep:一个task包含多个step。一个step包含一个容器taskrun: task引用taskrun来运行taskpipline:由多个task组成的pipline(流......
  • 2、tekton pipline参数调用流程
    变量定义的两种类型:1、string: 字符串类型2、数组类型 ......
  • Tekton 设计简介 及 实践
    本文是我对Tekton的实现原理和背后技术逻辑的理解,以及在实践过程中的一些总结。简介Tekton是一个基于Kubernetes的云原生CI/CD开源(https://cd.foundation/)框架,基于......
  • tekton pipeline 的全局超时时间 不生效的问题
    在pipeline和task中没有设置timeout的时候,官方文档中查到可以通过default-timeout-minutes参数,设置pipeline、pipelinetask的默认超时时间https://tekton.dev/vau......
  • Tekton Tigger使用案例进阶
    [root@master03-trigger-gitlab]#kubectlapply-f.secret/gitlab-webhook-tokencreatedserviceaccount/tekton-triggers-gitlab-sacreatedrole.rbac.authorizatio......
  • tekton Tiggers使用案例
    安装Tiggerskubectlapply--filename\https://storage.googleapis.com/tekton-releases/triggers/latest/release.yamlkubectlapply--filename\https://storage.g......