部署 Manual Approval Gate
目录
功能概述使用场景前提条件操作步骤1. 创建ManualApprovalGate CR2. 验证 controller 状态3. 重新配置或强制滚动更新4. 卸载 Manual Approval Gate操作结果故障排查了解更多功能概述
Manual Approval Gate 提供了集群范围的 controller 和 webhook,用于支持 ApprovalTask 自定义任务。管理员必须创建并维护 ManualApprovalGate 自定义资源(CR),以便平台用户能够在其流水线中插入手动审批。本指南介绍如何在 tekton-pipelines 中部署 Manual Approval Gate 组件,自定义运行时选项,以及如何安全卸载该组件。
使用场景
- 通过提供托管的 controller,为集群中所有团队启用手动审批。
- 通过 Operator 的
options合约调整 controller 部署(例如副本数、资源限制或 ConfigMaps),而无需编辑清单文件。 - 在不再需要审批任务时清理该功能。
前提条件
- 版本为 4.6.0 或更高的
Alauda DevOps Pipelines,并具有集群管理员权限。 - 已配置好指向目标集群的
kubectl。
操作步骤
1. 创建 ManualApprovalGate CR
将清单保存为 manual-approval-gate.yaml 并应用:
spec.targetNamespace决定 controller 部署、webhook 和 ConfigMaps 创建的位置。建议使用tekton-pipelines,使该组件与其他 Tekton 服务共存,但只要该命名空间存在(或在应用 CR 前创建),也可以指向任意命名空间。- 使用
spec.options可以在不编辑生成的 YAML 的情况下覆盖 Deployments、ConfigMaps 或镜像字段。详细语法请参阅调整子组件的可选配置项。
2. 验证 controller 状态
CR 的 READY 状态必须显示为 True,且应能看到 controller 和 webhook 的 Deployment 在 tekton-pipelines 中运行。
3. 重新配置或强制滚动更新
-
通过 patch CR 调整副本数或其他选项,Operator 会自动滚动更新工作负载:
4. 卸载 Manual Approval Gate
CRD 会保留,方便以后重新创建 CR,但相关的 Deployment、Service 和 Webhook 应该会被删除。
操作结果
- 运行
kubectl get manualapprovalgates会显示实例,READY=True,VERSION=<release>,REASON为空或为Installed。 - 运行
kubectl get pods -n tekton-pipelines | grep manual-approval-gate会列出处于Running状态的 controller 和 webhook pods。 - 删除后,不会有带相同标签的 pods 或服务残留,且 Operator 会停止对
ApprovalTask资源的调和,直到 CR 被重新创建。
故障排查
ManualApprovalGateCR 卡在NotReady状态: 运行kubectl describe manualapprovalgate manual-approval-gate查看事件,然后检查 Operator 日志(kubectl logs -n tekton-operator deploy/tekton-operator)。spec.options中字段拼写错误或权限不足是最常见的原因。- Controller/webhook pods 不断重启: 描述
tekton-pipelines中失败的 pods,确认是否缺少 TLS secret 或配置映射。重新应用 CR 通常会自动重新创建这些资源。 - 未创建
ApprovalTask资源: 确认ManualApprovalGateCR 仍存在且READY=True。如果已删除或失败,请重新安装后再让用户重新运行流水线。