获取 PAC Webhook URL
PAC controller 通过 pipelines-as-code-controller Service 接收来自 Git provider 的 webhook 事件。本页介绍在管理员公开该 Service 后,如何查询 webhook URL。
示例使用默认的 PAC 命名空间 tekton-pipelines。如果你的 OpenShiftPipelinesAsCode CR 使用了不同的 targetNamespace,请在命令中将 tekton-pipelines 替换为对应值。
下面的主要章节与 配置访问 的顺序一致:Gateway API、Ingress 和 NodePort。请选择与 PAC 暴露方式匹配的章节。
使用 Gateway API
如果 PAC 是通过 Gateway API 暴露的,请使用本节。
步骤 1:检查 Gateway API 资源。 确认 Gateway 已完成编程,并且路由已被接受:
预期结果:Gateway 显示 PROGRAMMED=True,且 HTTPRoute 已被接受。
步骤 2:获取外部地址。 打印生成的 Envoy Service 及其外部 IP:
预期结果:EXTERNAL_IP 不为空。
如果 EXTERNAL_IP 为空,请先配置集群的 LoadBalancer 提供程序。在 ACP 裸金属集群上,请使用 Alauda Container Platform Load Balancer for MetalLB。参考:配置 MetalLB。
步骤 3:验证并获取 webhook URL。 确保 Git provider 能够解析并访问 PAC 域名。例如,从 Git provider 网络将 pac.example.com 解析到 Service 的 EXTERNAL_IP。
如果 DNS 还未就绪,或者你只是想从当前机器测试该路由,请使用 curl --resolve:
在该域名可从 Git provider 网络访问后,打印 URL:
请在 Git provider 中注册此 URL,或在 tkn pac create repo 提示输入 webhook URL 时填写。
除非在暴露清单中移除了 Gateway 监听器的 hostname 和 HTTPRoute 的 hostnames,否则不要注册原始 IP。
如果 Gateway 配置为 envoyService.type: NodePort,请打印基于 IP 的 webhook URL:
使用 Ingress
如果 PAC 是通过 Ingress 暴露的,请使用本节。
步骤 1:检查 Ingress 地址。
步骤 2:获取 webhook URL。 如果 Ingress 有 host,请打印 URL:
如果 Ingress 配置了 TLS,请改用 https://${HOST}:
如果 Ingress 没有 host,请使用 kubectl get ingress 显示的地址,并注册可访问的 IP URL。
使用 NodePort
如果 PAC 是通过专用的 NodePort Service 暴露的,请使用本节。从一个可访问的 node IP 和生成的 NodePort 打印 URL:
验证
webhook URL 必须可以从你的 Git provider 访问。对于公共 Git provider,该 URL 必须可公网访问。对于自托管 Git provider,只要 provider 主机到集群的网络可达即可。
从一个可以访问 PAC 端点的主机上执行快速检查:
在当前 PAC 版本中,GET / 会返回 200 OK,并带有一个较小的 JSON 状态体。连接被拒绝或超时表示存在网络问题。