9.13. GCP での cert-manager Operator for Red Hat OpenShift の認証
GCP クラスターで、cert-manager Operator for Red Hat OpenShift のクラウド認証情報を設定できます。クラウド認証情報は Cloud Credential Operator によって生成されます。
9.13.1. GCP での the cert-manager Operator for Red Hat OpenShift クラウド認証情報の設定
GCP クラスターで cert-manager Operator for Red Hat OpenShift のクラウド認証情報を設定するには、CredentialsRequest
オブジェクトを作成し、Cloud Credential Operator によるクラウド認証情報シークレットの生成を許可する必要があります。
前提条件
- cert-manager Operator for Red Hat OpenShift のバージョン 1.11.1 以降がインストールされている。
- mint モードまたは passthrough モードで動作するように Cloud Credential Operator を設定している。
手順
次の yaml を適用して、
sample-credential-request.yaml
などのCredentialsRequest
リソース YAML ファイルを作成します。apiVersion: cloudcredential.openshift.io/v1 kind: CredentialsRequest metadata: name: cert-manager namespace: openshift-cloud-credential-operator spec: providerSpec: apiVersion: cloudcredential.openshift.io/v1 kind: GCPProviderSpec predefinedRoles: - roles/dns.admin secretRef: name: gcp-credentials namespace: cert-manager serviceAccountNames: - cert-manager
注記dns.admin
ロールは、Google Cloud DNS リソースを管理するための管理者権限をサービスアカウントに付与します。最小限の権限を持つサービスアカウントで cert-manager が実行されるようにするには、次の権限を持つカスタムロールを作成できます。-
dns.resourceRecordSets.*
-
dns.changes.*
-
dns.managedZones.list
-
次のコマンドを実行して、
CredentialsRequest
リソースを作成します。$ oc create -f sample-credential-request.yaml
次のコマンドを実行して、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"}]}}}'
検証
次のコマンドを実行して、再デプロイされた cert-manager コントローラー Pod の名前を取得します。
$ oc get pods -l app.kubernetes.io/name=cert-manager -n cert-manager
出力例
NAME READY STATUS RESTARTS AGE cert-manager-bd7fbb9fc-wvbbt 1/1 Running 0 15m39s
次のコマンドを実行して、cert-manager コントローラー Pod が、
mountPath
で指定されたパスの下にマウントされている GCP 認証情報ボリュームで更新されていることを確認します。$ oc get -n cert-manager pod/<cert-manager_controller_pod_name> -o yaml
出力例
spec: containers: - args: ... volumeMounts: ... - mountPath: /.config/gcloud name: cloud-credentials .... volumes: ... - name: cloud-credentials secret: ... items: - key: service_account.json path: application_default_credentials.json secretName: gcp-credentials