Tekton介绍
Tekton 是一款功能非常强大而灵活的开源的 CI/CD 云原生框架。Tekton 的前身是 Knative 项目的 build-pipeline 项目,这个项目是为了给 build 模块增加 pipeline 的功能,但是随着不同的功能加入到 Knative build 模块中,build 模块越来越变得像一个通用的 CI/CD 系统,于是,索性将 build-pipeline 剥离出 Knative,就变成了现在的 Tekton,而 Tekton 也从此致力于提供全功能、标准化的云原生 CI/CD 解决方案。
Github:https://github.com/tektoncd/community
使用文档:https://tekton.dev/docs/getting-started/
Tekton 的主要组成部分包括:
步骤 (Steps): 这些步骤本质上是容器,从镜像运行,可以为它们指定名称并提供任意脚本。
任务 (Tasks): 任务是步骤的集合,可以定义并以特定顺序排列它们。任务在 Kubernetes 集群中作为 Pod 执行。
管道 (Pipelines): 管道是任务的集合,可以定义并以特定顺序排列它们。
Tekton组件
Tekton 是一个开源的云原生持续集成和持续交付(CI/CD)平台,由 Kubernetes 支持。它包含一系列组件,共同协作,为开发人员提供强大的 CI/CD 功能。以下是 Tekton 的主要组件:
1. Tekton Pipelines:
Tekton Pipelines 是 Tekton 的核心组件,它定义了一组 Kubernetes 自定义资源,这些资源充当构建 CI/CD 管道的基石。
Tekton Pipelines 提供了定义步骤、任务和管道的功能。
通过这些自定义资源,您可以定义一系列步骤、任务和管道,以自动化您的构建、测试和部署过程。
2. Tekton Triggers:
Tekton Triggers 允许您基于事件来启动管道。
例如,您可以设置一个触发器,以便在将代码推送到 GitHub 仓库时自动启动一个构建管道。
Tekton Triggers 使您可以创建高度灵活的 CI/CD 工作流,这些工作流可以对外部事件做出响应。
3. Tekton CLI:
Tekton CLI (命令行界面) 提供了一个名为
tkn
的命令行工具,用于与 Tekton 进行交互。tkn
构建在 Kubernetes CLI (kubectl) 之上,并提供了一个更加简化和友好的 Tekton 操作方式。使用
tkn
,您可以创建、管理和执行 Tekton 任务、管道和触发器。
4. Tekton Dashboard:
Tekton Dashboard 是一个基于 Web 的图形界面,用于可视化 Tekton Pipelines 的执行情况。
它提供了有关您的管道运行状况、进度和日志的详细信息。
Tekton Dashboard 为您提供了对 Tekton 工作流的可视化理解。
5. Tekton Catalog:
Tekton Catalog 是一个社区驱动的 Tekton 组件库,其中包含高质量的预构建任务、管道等。
您可以直接使用这些组件,或将其作为模板来创建自己的自定义组件。
Tekton Catalog 减少了构建 CI/CD 工作流所需的时间和精力。
6. Tekton Hub:
Tekton Hub 是一个基于 Web 的图形界面,用于访问 Tekton Catalog。
它提供了一个易于浏览和搜索 Tekton Catalog 中组件的界面。
7. Tekton Operator:
Tekton Operator 是一个 Kubernetes 运算符,用于在 Kubernetes 集群上安装、更新和删除 Tekton 项目。
它自动化了 Tekton 的部署和管理过程。
8. Tekton Chain:
Tekton Chain 提供了用于生成、存储和签署 Tekton Pipelines 生成的工件来源的工具。
它有助于确保工件的完整性和来源。
Tekton Pipelines
Tekton pipeline是一个Kubernetes扩展,可以安装和运行在Kubernetes集群上。它定义了一组Kubernetes自定义资源,作为构建块,您可以从中组装CI/CD管道。一旦安装完毕,Tekton pipeline就可以通过Kubernetes CLI (kubectl)和API调用使用,就像pod和其他资源一样。
Tekton Pipelines 定义了以下对象:
对象 | 描述 |
---|---|
Task | 定义了一系列步骤,这些步骤将启动特定的构建或交付工具。这些工具接收特定的输入以及生成特定的输出。task 对象是 tekton 中任务的最小单位,其内部可以定义Steps子步骤进行串行处理,每个Task会由控制器拉起的一个Pod内进行执行,Steps之间可以定义inputs和outputs进行参数传递。 |
TaskRun | 根据指定的输入输出以及执行参数实例化一个Task 并执行,可以单独调用,也可以作为Pipeline 的一部分调用。task 的关联对象,创建一个 task 后并不会真的运行,需要使用 taskrun 对象来真正执行。 |
Pipeline | 定义一系列任务完成一个特定的构建或交付目标,可以由事件触发或从pipelineRun 调用。pipeline 是多个 task 的组合,task 之间可以定义 inputs 和 outputs 进行参数传递。 |
PipelineRun | 根据指定的输入输出以及执行参数实例化一个Pipeline 并执行。与 taskrun 类似,pipeline 也需要创建 pipelinerun 对象才会执行。 |
PipelineResource | 定义每一步Task中提取输入以及产生输出的位置。 |
Tekton特别适合在云上工作 可以很容易地适应不同的云环境 就像一个多才多艺的厨师,无论在哪里都能做出美味的菜肴
@刘郎 ArgoWorkflow比这个用的人更多