Tekton 介绍

发布时间: 更新时间: 总字数:1096 阅读时间:3m 作者: IP属地: 分享 复制网址

Tekton是一个强大且灵活的CICD开源框架,是实现云原生中CI的重要组件,它允许开发人员跨云构建测试部署应用。

介绍

核心概念

What are the components of Tekton

  • Tekton Pipeline
    • 最核心的组件,由一组 k8s CRDs 和相关的 Operator、Webhook 组成
    • 作为 k8s 的扩展部署
  • Tekton Triggers:触发器(可选),可触发 Pipeline 的实例化
  • Tekton cli:命令行工具 tkn
  • Tekton Dashboard:web 界面(可选)
  • Tekton Catalog
  • Tekton Hub
  • Tekton Operator

Tekton Pipeline

pipeline

Tekton Pipeline 模型由3个核心属于:

  • Pipeline

    • 一组 Task 组成的集合,可按定义以不同方式运行:串行、并行和DAG
  • Step

    • CI/CD 工作流中的一个具体操作,如 go test ./...
    • 每个 Step 都会通过一个特定的 Container(k8s Pod)运行,类似于 Github Action
  • Task

    • 一组 Step 组成的序列,按照定义的顺序依次运行于同一个 Pod 的不同容器中
    • 可共享一组环境变量、卷存储等
    • 一个 Task 的输出可由后续的 Task 引用
  • TaskRunPipelineRun

    • TaskRun 代表 Task 一次具体的执行过程
    • PipelineRun 代表 Pipeline 一次具体的执行过程,本身不执行任何具体任务,由安装特定顺序的 TaskRun 组成
    • Task 和 Pipeline 附加到具体的资源上,创建出 TaskRunPipelineRun,类似于类的实例化,但需要有参数组成(测试的输入)
    • 支持手动和 Trigger 自动触发
  • Parameters 使具体的 Task 和 Pipeline 资源定义出的示例更加有通用性的关键要素之一

    • 如将 git 仓库的 URL 定义为 Parameters,使拉取代码的 Task 更具有通用性
    • 之前称为为 Input/Output

Resource

  • Tekton 支持的 Resource:
    • git repo
    • pull Request:一次特定的 pr
    • Image:容器镜像
    • Cluster:k8s 集群
    • Storage:Blob 存储上的 object 或 Directory
    • CloudEvents

数据共享

Pipeline 上一个 Task 的多个 Step 之间或一个 Pipeline 的多个 Task 之间,有共享数据的需求,如前一个 Task 的结果需要被后一个 Task 引用

解决方案:

  • Result:由 Task 声明,由 Task 中的 Step 生成的结果保存于临时文件(/tekton/results/<NAME>)中,后由同一个 Task 的 Step 引用,或有后续其他 Task 的 Step 引用
    • 通过变量引用文件 $(results.<NAME>.path)
    • 由 Tekton 的 Result API 负责实现,仅可用于共享小于 4096 字节的数据
  • Workspace:由 Task 声明的,由 TaskRun 在运行时提供的文件系统
    • 通常对应于 Kubernetes 上的 ConfigMap、Secret、EmptyDir、静态 PVC 类型的卷、或者由 VolumeClaimTemplate 动态申请的 PVC
      • emptyDir 的生命周期与 Pod 相同,因此仅能在一个 TaskRun 的各个 Step 间共享数据
      • 若需要跨 Task 共享数据,则需要使用 PVC

Tekton Trigger

tekton trigger flow

图参考

  • Tekton Trigger 用来监听特定的事件,并根据条件触发匹配的 Tekton Pipeline
    • 如代码仓库的push事件触发镜像制作
  • Tekton Trigger 提供声明式 API
    • 允许用户按需定义监视的事件,并将其与指定的 Pipeline 关联创建出 PipelineRun
    • 允许将事件中的某些属性注入到 Pipeline 中
  • Tekton Trigger 的 CRDs
    • EventListener
    • Trigger
    • TriggerBinding
    • TriggerTemplate
    • ClusterTriggerBinding
    • Interceptor

参考

  1. https://tekton.dev/
Home Archives Categories Tags Statistics
本文总阅读量 次 本站总访问量 次 本站总访客数