Tekton 入门
术语解释
Cloud Native
云原生是一种软件开发方法,其中应用程序被分解为微服务,这些微服务被打包到容器中,容器在云中动态编排以优化资源利用
Continuous Delivery
持续交付是一种软件开发实践,团队可以安全、快速、可持续地向用户发布软件变更。
Tekton
Tekton 是一个用于创建持续交付系统的开源 kubernetes 原生的框架。你可以使用 tekton 跨多个云提供商或混合环境构建,测试和部署。Tekton 通过抽象出复杂的kubenetes概念和实现细节来简化应用程序管理。它提供了用于声明持续交付管道的 Kubernetes 自定义资源。
基本构建块
其中Task、TaskRun、Pipeline、PipelineRun、PipelineResource、Condition作为其核心CRD,这里主要介绍它们。
Task: 定义构建任务,它由一系列有序steps构成。每个step可以定义输入和输出,且可以将上一个step的输出作为下一个step的输入。每个step都会由一个container来执行。
- 是 Tekton 中不可分割的最小单位,正如同 Pod 在 Kubernetes 中的概念一样
TaskRun: Task用于定义具体要做的事情,并不会真正的运行,而TaskRun就是真正的执行者,并且会提供执行所需需要的参数,一个TaskRun就是一个Pod。
Pipeline: 顾名思义就是流水线,它由一系列Tasks组成。就像Task中的step一样,上一个Task的输出可以作为下一个Task的输入。
PipelineRun: Pipeline的实际执行,创建后会创建Pod来执行Task,一个PipelineRun中有多个Task。
PipelineResource: 主要用于定义Pipeline的资源,常见的如Git地址、Docker镜像等。
Condition: 它主要是在Pipeline中用于判断的,Task的执行与否通过Condition的判断结果来决定。
Tips: PipelineResource和Condition都会被废弃。但是在低版本中还是会继续使用,所以这里会简单介绍一下。
Step
Step 是 tekton中最小的单元 step = Container
它相当一个容器在它指定的输入上执行,以产生输出
|
|
Task
运行一系列容器的一系列步骤 task = pod(k8s)是存在 k8s 中一种自定义资源
它在 kubernetes 集群上向上执行, Task
中的所有 Step
都可以访问共享工作区。该工作区作为隐式卷安装到端口。Task
使用TaskRun
执行,TaskRun
提供 Task
所需要的参数和其他资源。
|
|
|
|
Pipelines
运行一组 Kuberbetes pod 的 Tekton Task
的集合
|
|
|
|
Triggers
触发自动调用 pipeline :如在推送代码 ,提交或创建拉取请求时触发
Trigger Template(触发器模版)
|
|
Trigger Binding(触发器绑定)
|
|
Event Listeners(事件侦听器)
|
|
Tekton 如何运作
粗略地说,在其核心,Tekton Pipelines
通过包装每个你的Step
。更具体地说,Tekton Pipelines 在步骤容器中注入一个二进制文件,该二进制文件在以下情况下执行您指定的命令 系统已准备就绪。
Tekton Pipelines
使用 Kubernetes 注释跟踪管道的状态。 这些注释以表单的形式投影在每个步骤容器内 使用 Kubernetes 向下 API 的文件。 二进制文件密切监视投影文件,并且只会 如果特定批注显示为文件,请启动提供的命令。为 例如,当您要求 Tekton 在一个任务中连续运行两个步骤时, 注入第二步容器的二进制文件将 闲置地等待,直到注释报告第一步容器 已成功完成。
此外,Tekton Pipelines
会安排一些容器自动运行。 步骤前后的容器,以便支持特定的内置 功能,例如检索输入资源和上传 输出到 Blob 存储解决方案。您可以将他们的运行状态跟踪为 通过任务运行和管道运行。该系统还执行一个数字 在运行步骤之前设置环境的其他操作
小结
Task
- 适用于更简单的工作负载,例如运行测试、lint 或构建 Kaniko 缓存。单个执行在单个中执行 Kubernetes Pod,使用单个磁盘,通常保持简单。Task
Pipeline
- 适用于复杂的工作负载,例如静态分析,以及测试、构建和部署复杂的项目。