入站 Webhook
入站 Webhook 允许你通过 HTTP POST 请求直接触发 pipeline,而无需 Git 事件。
目录
概述配置入站 Webhook通过入站 Webhook 触发 Pipeline入站 Webhook Payload自定义参数安全注意事项入站 Webhook 故障排查最佳实践1. PipelineRun 管理2. 监控3. 入站 Webhook故障排查PipelineRun 未创建PipelineRun 未运行未报告状态后续步骤概述
入站 Webhook 提供了一种方式来:
- 从外部系统触发 pipeline
- 与不使用 Git 的 CI/CD 工具集成
- 通过手动方式或 API 调用触发 pipeline
- 支持自定义 payload 和参数
入站 Webhook 的工作方式
- HTTP POST 请求:向 PAC controller 的
/incoming端点发送 POST 请求 - 认证:PAC 使用 secret(来自 header 或 query parameter)验证请求
- Repository 查找:PAC 根据 repository 名称和 namespace 查找 Repository CR
- Pipeline 触发:PAC 处理 payload 并触发匹配的 pipeline,类似于 Git webhook 事件
- PipelineRun 创建:PAC 根据 payload 和 pipeline 定义创建 PipelineRun
与 Git webhook 的主要区别:
- 不涉及 Git provider - 直接 HTTP 请求
- 自定义 payload 格式 - 由你控制结构
- 无需实际 Git commit 也能触发 pipeline
- 适用于外部集成和手动触发
配置入站 Webhook
-
在 Repository CR 中启用:向你的 Repository CR 添加入站 Webhook 配置:
-
创建入站 webhook secret:
-
获取入站 webhook URL:
入站 webhook 端点为:
URL 参数(可选,也可以通过 header 传递):
repository:Repository CR 名称namespace:Repository CR 所在的 namespacesecret:入站 webhook secret 值
使用 query parameter 的示例:
使用 header 的示例(推荐,更安全):
使用的 headers:X-Repository、X-Namespace、X-Secret
安全最佳实践
使用 headers(X-Repository、X-Namespace、X-Secret)而不是 query parameter,以避免在 URL 和日志中暴露 secret。
通过入站 Webhook 触发 Pipeline
向入站 webhook 端点发送 POST 请求:
入站 Webhook Payload
入站 webhook 接受具有以下结构的 JSON payload:
自定义参数
你可以在 webhook payload 中传递自定义参数:
这些参数在你的 pipeline 中可通过 $(params.environment) 和 $(params.deploy) 使用。
安全注意事项
- 使用 secret:始终使用 webhook secret 来验证请求
- HTTPS:在生产环境中为 webhook 端点使用 HTTPS
- 网络策略:限制对入站 webhook 端点的访问
- 速率限制:实现速率限制以防止滥用
- 验证 payload:在处理之前验证入站 payload
入站 Webhook 故障排查
-
检查 webhook URL:验证 URL 是否正确且可访问
-
验证 secret:确保请求中的 secret 与 Repository CR 中的 secret 一致
-
检查 PAC 日志:
-
验证 Repository CR:确保入站 webhook 已正确配置
-
使用 curl 测试:使用 curl 测试 webhook 端点
最佳实践
1. PipelineRun 管理
- 设置清理限制:使用
max-keep-runs防止累积 - 监控资源:关注 PipelineRun 带来的资源使用情况
- 归档重要运行:在清理前导出重要的 PipelineRun
2. 监控
- 使用 labels:为 PipelineRun 添加 labels 以便更轻松地筛选
- 设置告警:为失败的 PipelineRun 配置告警
- 定期审查:定期检查 PipelineRun 状态和日志
3. 入站 Webhook
- 保护端点安全:始终使用 HTTPS 和 secret
- 验证 payload:验证入站 webhook payload
- 记录用法:记录 webhook 端点和 payload 格式
- 充分测试:在生产使用前测试 webhook 触发
故障排查
PipelineRun 未创建
- 检查 webhook:验证 webhook 是否已配置并正在接收事件
- 查看 Repository CR:确保 Repository CR 配置正确
- 检查 PAC 日志:查看 PAC controller 日志中的错误
- 验证 pipeline 文件:确保 repository 中存在 pipeline 定义文件
PipelineRun 未运行
- 检查状态:查看 PipelineRun 状态和条件
- 查看日志:检查 PipelineRun 和 TaskRun 日志
- 验证资源:确保集群资源充足
- 检查权限:验证 ServiceAccount 是否具有所需权限
未报告状态
- 验证 Git provider token:确保 token 具有所需的 scopes
- 检查 PAC Watcher:验证 PAC Watcher 是否正在运行
- 查看日志:检查 PAC Watcher 日志中的错误
- 测试连通性:确保 PAC 能够访问 Git provider API
后续步骤
- 触发 Pipelines - 了解不同的触发方式
- 维护 Pipeline Code - Pipeline 定义指南
- 配置 Repository - Repository 设置
- 常见问题 - 故障排查指南