第 6 章 为 webhook 创建 secret
您可以创建一个密钥,并将其与通用、GitHub 或 GitLab webhook 一起使用,以触发 Git 存储库中的应用程序构建。根据您用于应用程序代码的 Git 托管平台的类型,JWS Operator 提供webhookSecrets:generic 、 webhookSecrets:github和webhookSecrets:gitlab参数,您可以使用这些参数在 Web 应用程序的自定义资源文件中指定机密。
流程
创建 Base64 编码的秘密字符串。
例如:
echo -n "qwerty" | base64
echo -n "qwerty" | base64Copy to Clipboard Copied! Toggle word wrap Toggle overflow 上述命令对纯文本字符串
qwerty进行编码,并显示编码后的字符串。例如:
cXdlcnR5
cXdlcnR5Copy to Clipboard Copied! Toggle word wrap Toggle overflow 创建定义
Secret对象的secret.yaml文件。例如:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在上面的示例中,
jws-secret是密钥的名称,cXdlcnR5是编码的密钥字符串。运行以下命令来创建 secret:
oc create -f secret.yaml
oc create -f secret.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 前面的命令会显示一条消息,以确认该机密已创建好。
例如:
secret/jws-secret created
secret/jws-secret createdCopy to Clipboard Copied! Toggle word wrap Toggle overflow 基于上面的例子,你可以将
webhookSecrets:generic参数设置为jws-secret。
验证
获取 Webhook 的 URL:
oc describe BuildConfig | grep webhooks
oc describe BuildConfig | grep webhooksCopy 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>/genericCopy 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>/genericCopy to Clipboard Copied! Toggle word wrap Toggle overflow 在上面的命令中,将 URL 字符串中的
<host>、<port>、<namespace>和<name>替换为适合您环境的值。将<secret>替换为纯文本秘密字符串(例如qwerty)。上述命令将生成以下类型的 JSON 格式的 webhook 响应,并触发构建:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意如果出现
用户“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>/genericCopy to Clipboard Copied! Toggle word wrap Toggle overflow 如果你想在 GitHub 中使用 webhook:
- 在您的 GitHub 项目中,选择设置 > Webhooks > 添加 webhook 。
- 在 Payload URL 字段中,添加 URL。
-
将内容类型设置为
application/json。 - 如有必要,禁用 SSL 验证。
- 点击 Add webhook。
有关更多信息,请参阅https://docs.openshift.com/container-platform/4.6/builds/triggering-builds-build-hooks.html 。