第 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" | 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
是密钥的名称,cXdlcnR5
是编码的密钥字符串。运行以下命令来创建 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 字符串中的
<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>/generic
Copy 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 。