部署 Manual Approval Gate
目录
功能概述使用场景前提条件步骤1. 创建ManualApprovalGate CR2. 验证 controller 健康状态3. 重新配置或强制滚动更新4. 卸载 Manual Approval Gate运行结果故障排查了解更多功能概述
Manual Approval Gate 提供集群作用域的 controller 和 webhooks,用于支持 ApprovalTask 自定义任务。管理员必须创建并维护 ManualApprovalGate 自定义资源(CR),这样平台用户才能在其流水线中插入手动审批。本文档说明如何在 tekton-pipelines 中部署 Manual Approval Gate 组件、自定义运行时选项,以及安全地卸载它。
使用场景
- 通过提供一个托管的 controller,为集群中的所有团队启用手动审批。
- 通过 Operator 的
options协议调整 controller 部署(例如副本数、资源限制或 ConfigMaps),而无需编辑清单。 - 当不再需要审批任务时,清理该功能。
前提条件
Alauda DevOps Pipelinesv4.6.0 或更高版本,并具备 cluster-admin 访问权限。- 已为目标集群配置好
kubectl。
步骤
1. 创建 ManualApprovalGate CR
将清单保存为 manual-approval-gate.yaml 并应用它:
spec.targetNamespace决定在哪里创建 controller 部署、webhooks 和 ConfigMaps。我们建议使用tekton-pipelines,这样该组件可以与其他 Tekton 服务放在一起;但只要该命名空间在应用 CR 之前已存在(或已创建),你也可以将其指向任意命名空间。- 使用
spec.options可以覆盖 Deployments、ConfigMaps 或镜像字段,而无需编辑生成的 YAML。有关详细语法,请参阅 调整子组件的可选配置项。
2. 验证 controller 健康状态
CR 的 READY 状态必须显示为 True,并且你应该能看到 tekton-pipelines 中正在运行的 controller 和 webhook Deployments。
3. 重新配置或强制滚动更新
-
patch 该 CR 以调整副本数或其他选项;Operator 会自动滚动这些工作负载:
4. 卸载 Manual Approval Gate
CRD 会保持安装状态,因此你之后仍可重新创建该 CR,但 Deployments、Services 和 Webhooks 应该会消失。
运行结果
kubectl get manualapprovalgates会显示该实例,其中READY=True、VERSION=<release>,且REASON为空或为Installed。kubectl get pods -n tekton-pipelines | grep manual-approval-gate会列出处于Running状态的 controller 和 webhook Pod。- 删除后,不会再保留相同标签的 Pod 或 Service,并且在重新创建 CR 之前,Operator 会停止对
ApprovalTask资源进行 reconcile。
故障排查
ManualApprovalGateCR 一直处于NotReady: 运行kubectl describe manualapprovalgate manual-approval-gate查看事件,然后检查 Operator 日志(kubectl logs -n tekton-operator deploy/tekton-operator)。spec.options中字段拼写错误或权限不足是最常见的根本原因。- controller/webhook Pod 发生 CrashLoop: 描述
tekton-pipelines中失败的 Pod,确认 TLS secret 或 configuration map 是否缺失。重新应用 CR 通常会自动重新创建这些资源。 - 未创建
ApprovalTask资源: 确保ManualApprovalGateCR 仍然存在且READY=True。如果它已被删除或处于失败状态,请在用户重新运行流水线之前重新安装它。