This documentation is for a release that is no longer maintained
See documentation for the latest supported version 3 or the latest supported version 4.8.5. 動的受付の設定
この手順では、動的受付を設定するための手順の概要を説明します。受付チェーンの機能は、Webhook サーバーを呼び出すように Webhook 受付プラグインを設定することで拡張されます。
Webhook サーバーは集約された API サーバーとしても設定されます。これにより、他の OpenShift Container Platform コンポーネントは内部認証情報を使用して Webhook と通信でき、oc
コマンドを使用したテストを容易にします。さらに、これによりロールベースのアクセス制御 (RBAC) が Webhook に対して可能となり、他の API サーバーからのトークン情報が Webhook に開示されないようになります。
前提条件
- クラスター管理者のアクセスを持つ OpenShift Container Platform アカウント。
-
OpenShift Container Platform CLI(
oc
)がインストールされていること。 - 公開されている Webhook サーバーコンテナーイメージ。
手順
- Webhook サーバーコンテナーイメージをビルドし、イメージレジストリーを使用してこれをクラスターで使用できるようにします。
- ローカル CA キーおよび証明書を作成し、それらを使用して Webhook サーバーの証明書署名要求 (CSR) に署名します。
Webhook リソースの新規プロジェクトを作成します。
oc new-project my-webhook-namespace
$ oc new-project my-webhook-namespace
1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- Webhook サーバーで特定の名前が使用される可能性があることに注意してください。
rbac.yaml
というファイルで集約された API サービスの RBAC ルールを定義します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 認証および認可を Webhook サーバー API に委任します。
- 2
- Webhook サーバーがクラスターリソースにアクセスできるようにします。
- 3
- リソースを参照します。この例では、
namespacereservations
リソースを参照します。 - 4
- 集約された API サーバーが受付レビューを作成できるようにします。
- 5
- リソースを参照します。この例では、
namespacereservations
リソースを参照します。 - 6
- Webhook サーバーがクラスターリソースにアクセスできるようにします。
- 7
- 認証を終了するために設定を読み取るためのロールバインディングです。
- 8
- 集約された API サーバーのデフォルトのクラスターロールおよびクラスターロールバインディングです。
これらの RBAC ルールをクラスターに適用します。
oc auth reconcile -f rbac.yaml
$ oc auth reconcile -f rbac.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow namespace に Webhook を DaemonSet サーバーとして デプロイするために使用される
webhook-daemonset.yaml
という YAML ファイルを作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- Webhook サーバーで特定のコンテナー名が使用される可能性があることに注意してください。
- 2
- Webhook サーバーコンテナーイメージを参照します。
<image_registry_username>/<image_path>:<tag>
を適切な値に置き換えます。 - 3
- Webhook コンテナー run コマンドを指定します。
<container_commands>
を適切な値に置き換えます。 - 4
- Pod 内のターゲットポートを定義します。この例では、ポート 8443 を使用します。
- 5
- Readiness プローブによって使用されるポートを指定します。この例では、ポート 8443 を使用します。
DaemonSet をデプロイします。
oc apply -f webhook-daemonset.yaml
$ oc apply -f webhook-daemonset.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow サービス提供証明書の署名側のシークレットを
webhook-secret.yaml
という YAML ファイル内に定義します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow シークレットを作成します。
oc apply -f webhook-secret.yaml
$ oc apply -f webhook-secret.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow サービスアカウントおよびサービスを、
webhook-service.yaml
という YAML ファイル内に定義します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow クラスターに Webhook サーバーを公開します。
oc apply -f webhook-service.yaml
$ oc apply -f webhook-service.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Webhook サーバーのカスタムリソース定義を
webhook-crd.yaml
という名前のファイルに定義します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow カスタムリソース定義を適用します。
oc apply -f webhook-crd.yaml
$ oc apply -f webhook-crd.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Webhook サーバーも、
webhook-api-service.yaml
というファイル内に集約された API サーバーとして設定します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- Webhook サーバーで使用されるサーバー証明書に署名する PEM でエンコーディングされた CA 証明書です。
<ca_signing_certificate>
を base64 形式の適切な証明書に置き換えます。
集約された API サービスをデプロイします。
oc apply -f webhook-api-service.yaml
$ oc apply -f webhook-api-service.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Webhook 受付プラグイン設定を
webhook-config.yaml
というファイル内に定義します。以下の例では、検証用の受付プラグインを使用します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- Webhook オブジェクトの名前です。この例では、
namespacereservations
リソースを使用します。 - 2
- 呼び出す Webhook の名前です。この例では、
namespacereservations
リソースを使用します。 - 3
- 集約された API を使用して Webhook サーバーへのアクセスを有効にします。
- 4
- 受付要求に使用される Webhook URL です。この例では、
namespacereservation
リソースを使用します。 - 5
- Webhook サーバーで使用されるサーバー証明書に署名する PEM でエンコーディングされた CA 証明書です。
<ca_signing_certificate>
を base64 形式の適切な証明書に置き換えます。
Webhook をデプロイします。
oc apply -f webhook-config.yaml
$ oc apply -f webhook-config.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - Webhook が想定通りに機能していることを確認します。たとえば、特定の namespace を予約するように動的受付を設定している場合は、これらの namespace の作成要求が拒否され、予約されていない namespace の作成要求が正常に実行されることを確認します。