TektonPipeline
TektonPipeline 是 Tekton Operator 提供的一种自定义资源,它允许您在 Kubernetes 集群中安装、更新和管理 Tekton Pipelines。它提供了一种声明式的方法来配置和维护您的 Tekton Pipeline 组件,而无需手动应用清单。
术语说明
术语 | 描述 |
---|
TektonPipeline | 一种自定义资源,管理 Kubernetes 集群中 Tekton Pipeline 组件的生命周期。 |
Tekton Operator | 管理 Tekton 组件的 Kubernetes Operator,包括 Pipeline、Triggers、Dashboard 等。 |
targetNamespace | 安装 Tekton Pipeline 组件的命名空间。 |
Pipeline Controller | 处理 Pipeline 和 Task 资源的主要控制器。 |
Webhook | 在 Tekton Pipeline 资源持久化到集群之前验证的组件。 |
为什么我们需要 TektonPipeline
管理 Tekton 组件的挑战
手动安装和维护 Tekton Pipeline 组件涉及:
- 为不同组件应用多个清单
- 跟踪组件版本及其兼容性
- 安全管理升级和回滚
- 在不同环境中一致地配置组件
- 处理特定部署的自定义配置
这种方法导致:
- 管理程序复杂
- 可能的错误配置
- 难以跟踪已部署状态
- 实施一致升级的挑战
TektonPipeline 如何解决这些问题
TektonPipeline 资源提供了一种声明式、原生于 Kubernetes 的方式来:
- 简化安装:通过单一资源安装所有 Pipeline 组件
- 集中配置:在一个地方管理所有组件设置
- 自动化升级:通过更新资源轻松升级到新版本
- 确保一致性:在不同环境中应用相同的配置
- 支持定制:根据特定需求自定义 Pipeline 组件
这种方法使 Tekton Pipeline 组件的管理更加高效,同时保持了必要的定制灵活性。
优势
- 简化管理:单一资源管理所有 Pipeline 组件
- 声明式配置:定义所需状态,让 Operator 处理实现细节
- 版本控制:通过 GitOps 实践轻松跟踪配置更改
- 自动化协调:Operator 确保实际状态与所需状态匹配
- 配置验证:内置的配置参数验证
- 简化升级:简化升级到新版本的过程
- 原生 Kubernetes:与 Kubernetes 生态系统无缝集成
适用场景
TektonPipeline 在以下场景中至关重要:
-
初始部署:在新的 Kubernetes 集群中设置 Tekton Pipeline。
-
配置管理:随着时间推移管理 Pipeline 配置变更。
-
版本升级:将 Tekton Pipeline 升级到新版本。
-
多集群部署:确保在多个集群中一致地部署 Pipeline。
-
自定义部署:为不同环境实现特定的 Pipeline 配置。
-
GitOps 工作流:在 GitOps 部署过程中包括 Pipeline 配置。
限制和局限性
- 需要在集群中安装 Tekton Operator
- 一些高级配置可能需要其他 Tekton Operator 资源
- 对某些字段的更改可能需要组件重启
- 必须遵循 Kubernetes 资源管理原则
原则
TektonPipeline 结构
一个 TektonPipeline 资源具有以下结构:
apiVersion: operator.tekton.dev/v1alpha1
kind: TektonPipeline
metadata:
name: pipeline
spec:
targetNamespace: tekton-pipelines
await-sidecar-readiness: true
coschedule: workspaces
disable-affinity-assistant: false
disable-creds-init: false
disable-home-env-overwrite: true
disable-working-directory-overwrite: true
disable-inline-spec: "taskrun,pipelinerun,pipeline"
enable-api-fields: beta
enable-bundles-resolver: true
enable-cel-in-whenexpression: false
enable-cluster-resolver: true
enable-custom-tasks: true
enable-git-resolver: true
enable-hub-resolver: true
enable-param-enum: false
enable-provenance-in-status: true
enable-step-actions: false
enforce-nonfalsifiability: none
keep-pod-on-cancel: false
max-result-size: 4096
metrics.count.enable-reason: false
metrics.pipelinerun.duration-type: histogram
metrics.pipelinerun.level: pipeline
metrics.taskrun.duration-type: histogram
metrics.taskrun.level: task
require-git-ssh-secret-known-hosts: false
results-from: termination-message
running-in-environment-with-injected-sidecars: true
send-cloudevents-for-runs: false
set-security-context: false
trusted-resources-verification-no-match-policy: ignore
performance:
disable-ha: false
buckets: 1
replicas: 1
threads-per-controller: 2
kube-api-qps: 5.0
kube-api-burst: 10
statefulset-ordinals: false
options:
disabled: false
configMaps: {}
deployments: {}
关键组件及其关系
-
targetNamespace:Tekton Pipeline 组件将要安装的位置
- 默认值为 "tekton-pipelines"
- 所有 Pipeline 组件将创建在此命名空间中
- 确保您有权限在此命名空间中创建资源
-
version:要安装的 Tekton Pipeline 版本
- 可以指定特定版本,如 "v0.45.0"
- 省略此字段将安装 Operator 支持的最新版本
-
功能标志:许多配置选项用于控制 Pipeline 的行为
disable-affinity-assistant
:控制亲和力助手的行为
disable-creds-init
:控制凭据初始化
enable-api-fields
:控制启用哪些 API 字段
enable-custom-tasks
:启用使用自定义任务
- 以及上述完整结构中显示的许多其他选项
-
performance:高可用性和性能调整的设置
replicas
:控制器副本的数量
buckets
:控制器的桶数量
threads-per-controller
:每个控制器的工作线程数量
statefulset-ordinals
:启用 StatefulSet Ordinals 模式
配置示例
基本安装
apiVersion: operator.tekton.dev/v1alpha1
kind: TektonPipeline
metadata:
name: pipeline
spec:
targetNamespace: tekton-pipelines
带有功能标志的自定义安装
apiVersion: operator.tekton.dev/v1alpha1
kind: TektonPipeline
metadata:
name: pipeline
spec:
targetNamespace: tekton-pipelines
disable-affinity-assistant: true
disable-creds-init: true
enable-api-fields: beta
enable-custom-tasks: true
results-from: sidecar-logs
max-result-size: 4096
高可用性配置
apiVersion: operator.tekton.dev/v1alpha1
kind: TektonPipeline
metadata:
name: pipeline
spec:
targetNamespace: tekton-pipelines
performance:
disable-ha: false
buckets: 10
replicas: 3
threads-per-controller: 4
kube-api-qps: 10.0
kube-api-burst: 20
与 TektonPipeline 相关的重要参数说明
功能标志
功能标志控制 Pipeline 控制器的特定行为。
适用场景
- 出于性能原因禁用亲和力助手
- 启用或禁用特定的 Pipeline 功能
- 配置环境特定的设置
限制和局限性
- 一些功能标志可能会在未来版本中被弃用
- 更改某些标志可能需要重新运行管道
- 不同标志之间的兼容性考虑
原则/参数说明
常见功能标志包括:
-
disable-affinity-assistant(默认值:false
):将此标志设置为 "true" 会阻止 Tekton 为每个共享 PVC 工作区的 TaskRun 创建亲和力助手。
-
disable-creds-init(默认值:false
):将此标志设置为 "true" 会阻止 Tekton 扫描附加服务账户并将其发现的任何凭据注入到您的步骤中。
-
await-sidecar-readiness(默认值:true
):控制任务运行的第一个步骤是否等待侧车容器运行。
-
running-in-environment-with-injected-sidecars(默认值:true
):当 Pipelines 在不使用注入侧车的集群中运行时,应设置为 false,例如 Istio。
-
enable-custom-tasks(默认值:false
):启用从管道内使用自定义任务。
指标属性
指标属性控制如何收集和报告指标。
适用场景
- 为 Tekton 管道设置监控
- 自定义指标收集行为
- 与可观察性系统集成
配置示例
apiVersion: operator.tekton.dev/v1alpha1
kind: TektonPipeline
metadata:
name: pipeline
spec:
targetNamespace: tekton-pipelines
metrics.pipelinerun.duration-type: histogram
metrics.pipelinerun.level: pipeline
metrics.taskrun.duration-type: histogram
metrics.taskrun.level: task
metrics.count.enable-reason: true
性能配置
性能部分允许调整控制器的性能特征。
适用场景
- 针对高流量的管道执行进行扩展
- 优化资源使用
- 实现高可用性配置
配置示例
apiVersion: operator.tekton.dev/v1alpha1
kind: TektonPipeline
metadata:
name: pipeline
spec:
targetNamespace: tekton-pipelines
performance:
disable-ha: false
buckets: 5
replicas: 2
threads-per-controller: 4
kube-api-qps: 10.0
kube-api-burst: 20
statefulset-ordinals: true
参考资料