为 PAC 创建 Git Secret
当你通过 Webhook(不是 GitHub App)将仓库与 PAC 集成时,Repository 资源会引用一个 Kubernetes Secret,其中包含两部分凭据:
- PAC 用于调用 Git 提供方 API 的 Git 访问令牌(用于读取仓库元数据、发送 commit/status checks、管理 webhook)。
- Git 提供方在投递事件时附带的 webhook secret,PAC 可据此验证请求是否来自预期来源。
本指南将为 GitHub Webhook 模式和 GitLab Webhook 模式创建该 Secret。GitHub App 模式不需要按仓库配置的 Secret,因为 controller 使用的是集群范围的 App 凭据。
目录
PAC 如何读取 Secret前提条件步骤 1:创建 Git 访问令牌步骤 2:选择一个 Webhook Secret步骤 3:创建 Kubernetes Secret步骤 4:在 Repository 中引用该 Secret验证更新凭据下一步PAC 如何读取 Secret
PAC 通过 Repository.spec.git_provider 字段查找 Secret:
- 如果在
secret上省略key,PAC 将读取provider.token。 - 如果在
webhook_secret上省略key,PAC 将读取webhook.secret。 secret.name和webhook_secret.name可以指向同一个Secret,也可以指向两个不同的Secret。
Secret 必须位于与 Repository 资源相同的 namespace 中。
前提条件
- 一个具有权限在仓库上创建 Personal Access Token (PAT) 的 Git 提供方账户。
Repository资源的目标 namespace。- 对该 namespace 的
kubectl访问权限。
步骤 1:创建 Git 访问令牌
在你的 Git 提供方上创建一个 PAT:
请立即复制该令牌。大多数提供方只会显示一次。
步骤 2:选择一个 Webhook Secret
webhook secret 是 PAC 与 Git 提供方之间共享的字符串。PAC 会使用该值验证传入事件。
你可以使用任意足够随机的字符串,例如密码管理器生成的密码。相同的值必须同时存储在 Kubernetes Secret 中,并配置到 Git 提供方 webhook 中。
如果你想通过命令行生成一个,可以使用 openssl:
示例输出:
webhook secret 是可选的,但强烈建议配置。如果不配置,任何知道 webhook URL 的人都可以伪造事件。
步骤 3:创建 Kubernetes Secret
创建一个 Secret,在默认键下同时存储这两个值。请替换:
-
<git-access-token>为步骤 1 中的 Git 提供方令牌。 -
<webhook-secret>为步骤 2 中共享的 webhook secret 字符串。
示例输出:
或者,也可以通过 manifest 创建:
步骤 4:在 Repository 中引用该 Secret
在 Repository 资源中,将 git_provider.secret 和 git_provider.webhook_secret 都指向你刚创建的 Secret。由于使用的是默认键,因此可以省略 key 字段:
如果你将凭据存储在非默认键下,请在这两个字段上显式设置 key。
验证
确认 Secret 已存在,并且包含这两个键:
示例输出:
在创建 Repository 资源后,PAC 会记录一次成功的查找。请在 PAC namespace 中查看 controller 日志:
controller 日志中的身份验证失败("401 Unauthorized"、"invalid token")通常表示 token 错误或权限范围不足;完整的排查清单请参见 Common Issues。
更新凭据
通过原地更新 Secret 来轮换 token:
PAC 会在每个传入事件时重新读取 Secret,因此无需重启 controller。