9.11. GCP Workload Identity を使用した cert-manager Operator for Red Hat OpenShift の認証


クラウド認証情報を使用して、GCP Workload Identity クラスターで cert-manager Operator for Red Hat OpenShift を認証できます。クラウド認証情報は、ccoctl バイナリーを使用して設定できます。

9.11.1. GCP Workload Identity を使用して cert-manager Operator for Red Hat OpenShift のクラウド認証情報を設定

ccoctl バイナリーを使用して、cert-manager Operator for Red Hat OpenShift のクラウド認証情報を生成します。次に、それらを GCP Workload Identity クラスターに適用します。

前提条件

  • ccoctl バイナリーを展開して準備した。
  • cert-manager Operator for Red Hat OpenShift のバージョン 1.11.1 以降がインストールされている。
  • Cloud Credential Operator を手動モードで使用し、GCP Workload Identity で OpenShift Container Platform クラスターを設定している。

手順

  1. 次のコマンドを実行して、CredentialsRequest リソース YAML ファイルを保存するディレクトリーを作成します。

    $ mkdir credentials-request
  2. credentials-request ディレクトリーに、次の 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
  3. 次のコマンドを実行し、ccoctl ツールを使用して CredentialsRequest オブジェクトを処理します。

    $ ccoctl gcp create-service-accounts \
        --name <user_defined_name> --output-dir=<path_to_output_dir> \
        --credentials-requests-dir=<path_to_credrequests_dir> \
        --workload-identity-pool <workload_identity_pool> \
        --workload-identity-provider <workload_identity_provider> \
        --project <gcp_project_id>

    コマンドの例

    $ ccoctl gcp create-service-accounts \
        --name abcde-20230525-4bac2781 --output-dir=/home/outputdir \
        --credentials-requests-dir=/home/credentials-requests \
        --workload-identity-pool abcde-20230525-4bac2781 \
        --workload-identity-provider abcde-20230525-4bac2781 \
        --project openshift-gcp-devel

  4. 次のコマンドを実行して、クラスターのマニフェストディレクトリーに生成されたシークレットを適用します。

    $ ls <path_to_output_dir>/manifests/*-credentials.yaml | xargs -I{} oc apply -f {}
  5. 次のコマンドを実行して、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"}]}}}'

検証

  1. 次のコマンドを実行して、再デプロイされた 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

  2. 次のコマンドを実行して、cert-manager コントローラー Pod が、mountPath で指定されたパスの下にマウントされている GCP ワークロードアイデンティティー認証情報ボリュームで更新されていることを確認します。

    $ oc get -n cert-manager pod/<cert-manager_controller_pod_name> -o yaml

    出力例

    spec:
      containers:
      - args:
        ...
        volumeMounts:
        - mountPath: /var/run/secrets/openshift/serviceaccount
          name: bound-sa-token
          ...
        - mountPath: /.config/gcloud
          name: cloud-credentials
      ...
      volumes:
      - name: bound-sa-token
        projected:
          ...
          sources:
          - serviceAccountToken:
              audience: openshift
              ...
              path: token
      - name: cloud-credentials
        secret:
          ...
          items:
          - key: service_account.json
            path: application_default_credentials.json
          secretName: gcp-credentials

9.11.2. 関連情報

Red Hat logoGithubRedditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

© 2024 Red Hat, Inc.