第6章 Webhook のシークレットの作成
汎用、GitHub、または GitLab の Webhook で使用して Git リポジトリーでアプリケーションビルドをトリガーできるシークレットを作成できます。アプリケーションコードに使用する Git ホスティングプラットフォームのタイプに応じて、JWS Operator は、Web アプリケーションのカスタムリソースファイルでシークレットを指定するために使用できる webhookSecrets:generic、webhookSecrets:github、および webhookSecrets:gitlab パラメーターを提供します。
手順
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はエンコードされたシークレット文字列です。シークレットを作成するには、次のコマンドを入力します。
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) に置き換えます。上記のコマンドは、次のタイプの Webhook 応答を JSON 形式で生成し、ビルドがトリガーされます。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注記User "system:anonymous" cannot create resource errorが表示される場合は、認証されていないユーザーを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 プロジェクトで、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 を参照してください。