第 6 章 为 webhook 创建 secret
您可以创建可与通用、GitHub 或 GitLab Webhook 搭配使用的 secret,以触发 Git 存储库中的应用构建。根据用于应用程序代码的 Git 托管平台类型,JWS Operator 提供了 webhookSecrets:generic
,webhookSecrets:github
, 和 webhookSecrets:gitlab
参数,可用于在自定义资源文件中为 web 应用程序指定 secret。
流程
创建 Base64 编码的 secret 字符串。
例如:
echo -n "qwerty" | base64
echo -n "qwerty" | base64
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 前面的命令对纯文本字符串
qwerty
进行编码,并显示编码的字符串。例如:
cXdlcnR5
cXdlcnR5
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 创建定义
Secret
对象的secret.yaml
文件。例如:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在前面的示例中,
jws-secret
是 secret 的名称,cXdlcnR5
是编码的 secret 字符串。运行以下命令来创建 secret:
oc create -f secret.yaml
oc create -f secret.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 前面的命令会显示一条消息,以确认该机密已创建好。
例如:
secret/jws-secret created
secret/jws-secret created
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 根据上例,您可以将
webhookSecrets:generic
参数设置为jws-secret
。
验证
获取 Webhook 的 URL:
oc describe BuildConfig | grep webhooks
oc describe BuildConfig | grep webhooks
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 前面的命令生成 Webhook URL,格式为:
https://<host>:<port>/apis/build.openshift.io/v1/namespaces/<namespace>/buildconfigs/<name>/webhooks/<secret>/generic
https://<host>:<port>/apis/build.openshift.io/v1/namespaces/<namespace>/buildconfigs/<name>/webhooks/<secret>/generic
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 要向 webhook 发送请求,请输入以下
curl
命令:curl -k -X POST https://<host>:<port>/apis/build.openshift.io/v1/namespaces/<namespace>/buildconfigs/<name>/webhooks/<secret>/generic
curl -k -X POST https://<host>:<port>/apis/build.openshift.io/v1/namespaces/<namespace>/buildconfigs/<name>/webhooks/<secret>/generic
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在前面的命令中,将 URL 字符串中的 &
lt;host&
gt;、<
> 替换为适合您的环境的值。将;port
>、<namespace
> 和 <name<secret
> 替换为纯文本 secret 字符串(如qwerty
)。前面的命令以 JSON 格式生成以下 webhook 响应类型,并触发构建:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意如果
User "system:anonymous" 无法创建资源错误
结果,您可以通过将未经身份验证的用户添加到system:webhook
角色绑定或创建令牌并运行curl
命令来解决这个错误。例如,要创建令牌并运行
curl
命令:TOKEN=`oc create token builder` curl -H "Authorization: Bearer $TOKEN" -k -X POST https://<host>:<port>/apis/build.openshift.io/v1/namespaces/<namespace>/buildconfigs/<name>/webhooks/<secret>/generic
TOKEN=`oc create token builder` curl -H "Authorization: Bearer $TOKEN" -k -X POST https://<host>:<port>/apis/build.openshift.io/v1/namespaces/<namespace>/buildconfigs/<name>/webhooks/<secret>/generic
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 如果要在 GitHub 中使用 Webhook:
- 在 GitHub 项目中,选择 Settings > Webhooks > Add webhook。
- 在 Payload URL 字段中,添加 URL。
-
将内容类型设置为
application/json
。 - 如有必要,禁用 SSL 验证。
- 点击 Add webhook。
如需更多信息,请参阅 https://docs.openshift.com/container-platform/4.6/builds/triggering-builds-build-hooks.html。