9.6. cert-manager Operator for Red Hat OpenShift の認証
クラウド認証情報を設定して、クラスター上で cert-manager Operator for Red Hat OpenShift を認証できます。
9.6.1. AWS での認証 リンクのコピーリンクがクリップボードにコピーされました!
前提条件
- cert-manager Operator for Red Hat OpenShift のバージョン 1.11.1 以降がインストールされている。
- mint モードまたは passthrough モードで動作するように Cloud Credential Operator を設定している。
手順
以下のように
CredentialsRequest
リソース YAML ファイル (例:sample-credential-request.yaml
) を作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行して、
CredentialsRequest
リソースを作成します。oc create -f sample-credential-request.yaml
$ oc create -f sample-credential-request.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行して、cert-manager Operator for Red Hat OpenShift のサブスクリプションオブジェクトを更新します。
oc -n cert-manager-operator patch subscription openshift-cert-manager-operator --type=merge -p '{"spec":{"config":{"env":[{"name":"CLOUD_CREDENTIALS_SECRET_NAME","value":"aws-creds"}]}}}'
$ oc -n cert-manager-operator patch subscription openshift-cert-manager-operator --type=merge -p '{"spec":{"config":{"env":[{"name":"CLOUD_CREDENTIALS_SECRET_NAME","value":"aws-creds"}]}}}'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
検証
次のコマンドを実行して、再デプロイされた cert-manager コントローラー Pod の名前を取得します。
oc get pods -l app.kubernetes.io/name=cert-manager -n cert-manager
$ oc get pods -l app.kubernetes.io/name=cert-manager -n cert-manager
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
NAME READY STATUS RESTARTS AGE cert-manager-bd7fbb9fc-wvbbt 1/1 Running 0 15m39s
NAME READY STATUS RESTARTS AGE cert-manager-bd7fbb9fc-wvbbt 1/1 Running 0 15m39s
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行して、cert-manager コントローラー Pod が、
mountPath
で指定されたパスの下にマウントされている AWS 認証情報ボリュームで更新されていることを確認します。oc get -n cert-manager pod/<cert-manager_controller_pod_name> -o yaml
$ oc get -n cert-manager pod/<cert-manager_controller_pod_name> -o yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
9.6.2. AWS セキュリティートークンサービスによる認証 リンクのコピーリンクがクリップボードにコピーされました!
前提条件
-
ccoctl
バイナリーを抽出して準備している。 - Cloud Credential Operator を手動モードで使用し、AWS STS で OpenShift Container Platform クラスターを設定している。
手順
次のコマンドを実行して、
CredentialsRequest
リソース YAML ファイルを保存するディレクトリーを作成します。mkdir credentials-request
$ mkdir credentials-request
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次の yaml を適用して、
sample-credential-request.yaml
などのCredentialsRequest
リソース YAML ファイルをcredentials-request
ディレクトリーの下に作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行し、
ccoctl
ツールを使用してCredentialsRequest
オブジェクトを処理します。ccoctl aws create-iam-roles \ --name <user_defined_name> --region=<aws_region> \ --credentials-requests-dir=<path_to_credrequests_dir> \ --identity-provider-arn <oidc_provider_arn> --output-dir=<path_to_output_dir>
$ ccoctl aws create-iam-roles \ --name <user_defined_name> --region=<aws_region> \ --credentials-requests-dir=<path_to_credrequests_dir> \ --identity-provider-arn <oidc_provider_arn> --output-dir=<path_to_output_dir>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
2023/05/15 18:10:34 Role arn:aws:iam::XXXXXXXXXXXX:role/<user_defined_name>-cert-manager-aws-creds created 2023/05/15 18:10:34 Saved credentials configuration to: <path_to_output_dir>/manifests/cert-manager-aws-creds-credentials.yaml 2023/05/15 18:10:35 Updated Role policy for Role <user_defined_name>-cert-manager-aws-creds
2023/05/15 18:10:34 Role arn:aws:iam::XXXXXXXXXXXX:role/<user_defined_name>-cert-manager-aws-creds created 2023/05/15 18:10:34 Saved credentials configuration to: <path_to_output_dir>/manifests/cert-manager-aws-creds-credentials.yaml 2023/05/15 18:10:35 Updated Role policy for Role <user_defined_name>-cert-manager-aws-creds
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のステップで使用するために、出力から
<aws_role_arn>
をコピーします。例:"arn:aws:iam::XXXXXXXXXXXX:role/<user_defined_name>-cert-manager-aws-creds"
次のコマンドを実行して、サービスアカウントに
eks.amazonaws.com/role-arn="<aws_role_arn>"
アノテーションを追加します。oc -n cert-manager annotate serviceaccount cert-manager eks.amazonaws.com/role-arn="<aws_role_arn>"
$ oc -n cert-manager annotate serviceaccount cert-manager eks.amazonaws.com/role-arn="<aws_role_arn>"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 新規 Pod を作成するには、以下のコマンドを実行して既存の cert-manager コントローラー Pod を削除します。
oc delete pods -l app.kubernetes.io/name=cert-manager -n cert-manager
$ oc delete pods -l app.kubernetes.io/name=cert-manager -n cert-manager
Copy to Clipboard Copied! Toggle word wrap Toggle overflow AWS 認証情報は、1 分以内に新規 cert-manager コントローラー Pod に適用されます。
検証
次のコマンドを実行して、更新された cert-manager コントローラー Pod の名前を取得します。
oc get pods -l app.kubernetes.io/name=cert-manager -n cert-manager
$ oc get pods -l app.kubernetes.io/name=cert-manager -n cert-manager
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
NAME READY STATUS RESTARTS AGE cert-manager-bd7fbb9fc-wvbbt 1/1 Running 0 39s
NAME READY STATUS RESTARTS AGE cert-manager-bd7fbb9fc-wvbbt 1/1 Running 0 39s
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行して、AWS 認証情報が更新されていることを確認します。
oc set env -n cert-manager po/<cert_manager_controller_pod_name> --list
$ oc set env -n cert-manager po/<cert_manager_controller_pod_name> --list
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
pods/cert-manager-57f9555c54-vbcpg, container cert-manager-controller POD_NAMESPACE from field path metadata.namespace
# pods/cert-manager-57f9555c54-vbcpg, container cert-manager-controller # POD_NAMESPACE from field path metadata.namespace AWS_ROLE_ARN=XXXXXXXXXXXX AWS_WEB_IDENTITY_TOKEN_FILE=/var/run/secrets/eks.amazonaws.com/serviceaccount/token
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
9.6.3. GCP での認証 リンクのコピーリンクがクリップボードにコピーされました!
前提条件
- cert-manager Operator for Red Hat OpenShift のバージョン 1.11.1 以降がインストールされている。
- mint モードまたは passthrough モードで動作するように Cloud Credential Operator を設定している。
手順
次の yaml を適用して、
sample-credential-request.yaml
などのCredentialsRequest
リソース YAML ファイルを作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注記dns.admin
ロールは、Google Cloud DNS リソースを管理するための管理者権限をサービスアカウントに付与します。最小限の権限を持つサービスアカウントで cert-manager が実行されるようにするには、次の権限を持つカスタムロールを作成できます。-
dns.resourceRecordSets.*
-
dns.changes.*
-
dns.managedZones.list
-
次のコマンドを実行して、
CredentialsRequest
リソースを作成します。oc create -f sample-credential-request.yaml
$ oc create -f sample-credential-request.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行して、cert-manager Operator for Red Hat OpenShift のサブスクリプションオブジェクトを更新します。
oc -n cert-manager-operator patch subscription openshift-cert-manager-operator --type=merge -p '{"spec":{"config":{"env":[{"name":"CLOUD_CREDENTIALS_SECRET_NAME","value":"gcp-credentials"}]}}}'
$ oc -n cert-manager-operator patch subscription openshift-cert-manager-operator --type=merge -p '{"spec":{"config":{"env":[{"name":"CLOUD_CREDENTIALS_SECRET_NAME","value":"gcp-credentials"}]}}}'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
検証
次のコマンドを実行して、再デプロイされた cert-manager コントローラー Pod の名前を取得します。
oc get pods -l app.kubernetes.io/name=cert-manager -n cert-manager
$ oc get pods -l app.kubernetes.io/name=cert-manager -n cert-manager
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
NAME READY STATUS RESTARTS AGE cert-manager-bd7fbb9fc-wvbbt 1/1 Running 0 15m39s
NAME READY STATUS RESTARTS AGE cert-manager-bd7fbb9fc-wvbbt 1/1 Running 0 15m39s
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行して、cert-manager コントローラー Pod が、
mountPath
で指定されたパスの下にマウントされている GCP 認証情報ボリュームで更新されていることを確認します。oc get -n cert-manager pod/<cert-manager_controller_pod_name> -o yaml
$ oc get -n cert-manager pod/<cert-manager_controller_pod_name> -o yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
9.6.4. GCP Workload Identity による認証 リンクのコピーリンクがクリップボードにコピーされました!
前提条件
-
ccoctl
バイナリーを展開して準備した。 - cert-manager Operator for Red Hat OpenShift のバージョン 1.11.1 以降がインストールされている。
- Cloud Credential Operator を手動モードで使用し、GCP Workload Identity で OpenShift Container Platform クラスターを設定している。
手順
次のコマンドを実行して、
CredentialsRequest
リソース YAML ファイルを保存するディレクトリーを作成します。mkdir credentials-request
$ mkdir credentials-request
Copy to Clipboard Copied! Toggle word wrap Toggle overflow credentials-request
ディレクトリーに、次のCredentialsRequest
マニフェストを含む YAML ファイルを作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注記dns.admin
ロールは、Google Cloud DNS リソースを管理するための管理者権限をサービスアカウントに付与します。最小限の権限を持つサービスアカウントで cert-manager が実行されるようにするには、次の権限を持つカスタムロールを作成できます。-
dns.resourceRecordSets.*
-
dns.changes.*
-
dns.managedZones.list
-
次のコマンドを実行し、
ccoctl
ツールを使用してCredentialsRequest
オブジェクトを処理します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow コマンドの例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行して、クラスターのマニフェストディレクトリーに生成されたシークレットを適用します。
ls <path_to_output_dir>/manifests/*-credentials.yaml | xargs -I{} oc apply -f {}
$ ls <path_to_output_dir>/manifests/*-credentials.yaml | xargs -I{} oc apply -f {}
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行して、cert-manager Operator for Red Hat OpenShift のサブスクリプションオブジェクトを更新します。
oc -n cert-manager-operator patch subscription openshift-cert-manager-operator --type=merge -p '{"spec":{"config":{"env":[{"name":"CLOUD_CREDENTIALS_SECRET_NAME","value":"gcp-credentials"}]}}}'
$ oc -n cert-manager-operator patch subscription openshift-cert-manager-operator --type=merge -p '{"spec":{"config":{"env":[{"name":"CLOUD_CREDENTIALS_SECRET_NAME","value":"gcp-credentials"}]}}}'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
検証
次のコマンドを実行して、再デプロイされた cert-manager コントローラー Pod の名前を取得します。
oc get pods -l app.kubernetes.io/name=cert-manager -n cert-manager
$ oc get pods -l app.kubernetes.io/name=cert-manager -n cert-manager
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
NAME READY STATUS RESTARTS AGE cert-manager-bd7fbb9fc-wvbbt 1/1 Running 0 15m39s
NAME READY STATUS RESTARTS AGE cert-manager-bd7fbb9fc-wvbbt 1/1 Running 0 15m39s
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行して、cert-manager コントローラー Pod が、
mountPath
で指定されたパスの下にマウントされている GCP ワークロードアイデンティティー認証情報ボリュームで更新されていることを確認します。oc get -n cert-manager pod/<cert-manager_controller_pod_name> -o yaml
$ oc get -n cert-manager pod/<cert-manager_controller_pod_name> -o yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow