2.9.2.3. GCP Workload Identity で認証するカスタマーワークロードのデプロイ


アプリケーションで短期認証を使用するには、関連する Pod が OpenShift Container Platform サービスアカウントを使用するように設定する必要があります。OpenShift Container Platform サービスアカウントを使用すると、Pod を変更する Webhook がトリガーされ、Google Cloud サービスアカウントへの成り代わりが可能になります。

次の例は、OpenShift Container Platform サービスアカウントを使用する Pod をデプロイし、設定を確認する方法を示しています。

前提条件

  • Google Cloud のクラスターで GCP Workload Identity を使用している。
  • フェデレーションされた Google Cloud サービスアカウントを作成した。
  • Google Cloud 用の OpenShift Container Platform サービスアカウントを作成した。

手順

  1. GCP Workload Identity で認証する Pod を作成するには、次の例のようなデプロイメント YAML ファイルを作成します。

    サンプルデプロイメント

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: ubi9
    spec:
      replicas: 1
      selector:
        matchLabels:
          app: ubi9
      template:
        metadata:
          labels:
            app: ubi9
        spec:
          serviceAccountName: "<service_account_name>" 
    1
    
          containers:
            - name: ubi
              image: 'registry.access.redhat.com/ubi9/ubi-micro:latest'
              command:
                - /bin/sh
                - '-c'
                - |
                  sleep infinity

    1
    OpenShift Container Platform サービスアカウントの名前を指定します。
  2. 次のコマンドを実行してデプロイメントファイルを適用します。

    $ oc apply -f deployment.yaml

検証

  • Pod が短期認証を使用していることを確認するには、次のコマンドを実行します。

    $ oc get pods -o json | jq -r '.items[0].spec.containers[0].env[] | select(.name=="GOOGLE_APPLICATION_CREDENTIALS")'

    出力例

    {   "name": "GOOGLE_APPLICATION_CREDENTIALS",   "value": "/var/run/secrets/workload-identity/federation.json" }

    GOOGLE_APPLICATION_CREDENTIALS 環境変数が存在する場合、それは GCP Workload Identity で認証する Pod を示しています。

  • 追加設定の詳細を確認するには、Pod 仕様を調べます。次の Pod 仕様の例は、Webhook によって変更される環境変数とボリュームフィールドを示しています。

    direct 注入モードの Pod 仕様例:

    apiVersion: v1
    kind: Pod
    metadata:
      name: app-x-pod
      namespace: service-a
    annotations:
      cloud.google.com/skip-containers: "init-first,sidecar"
      cloud.google.com/external-credentials-json: |- 
    1
    
        {
          "type": "external_account",
          "audience": "//iam.googleapis.com/projects/<project_number>/locations/global/workloadIdentityPools/on-prem-kubernetes/providers/<identity_provider>",
          "subject_token_type": "urn:ietf:params:oauth:token-type:jwt",
          "token_url": "https://sts.googleapis.com/v1/token",
          "service_account_impersonation_url": "https://iamcredentials.googleapis.com/v1/projects/-/serviceAccounts/app-x@project.iam.gserviceaccount.com:generateAccessToken",
          "credential_source": {
            "file": "/var/run/secrets/sts.googleapis.com/serviceaccount/token",
            "format": {
              "type": "text"
            }
          }
        }
    spec:
      serviceAccountName: app-x
      initContainers:
      - name: init-first
        image: container-image:version
      containers:
      - name: sidecar
        image: container-image:version
      - name: container-name
        image: container-image:version
        env: 
    2
    
        - name: GOOGLE_APPLICATION_CREDENTIALS
          value: /var/run/secrets/gcloud/config/federation.json
        - name: CLOUDSDK_COMPUTE_REGION
          value: asia-northeast1
        volumeMounts:
        - name: gcp-iam-token
          readOnly: true
          mountPath: /var/run/secrets/sts.googleapis.com/serviceaccount
        - mountPath: /var/run/secrets/gcloud/config
          name: external-credential-config
          readOnly: true
      volumes:
      - name: gcp-iam-token
        projected:
          sources:
          - serviceAccountToken:
              audience: sts.googleapis.com
              expirationSeconds: 86400
              path: token
      - downwardAPI:
          defaultMode: 288
          items:
          - fieldRef:
              apiVersion: v1
              fieldPath: metadata.annotations['cloud.google.com/external-credentials-json']
            path: federation.json
        name: external-credential-config

    1
    Webhook コントローラーによって生成された外部認証情報の設定。Kubernetes の downwardAPI ボリュームは、設定をコンテナーのファイルシステムにマウントします。
    2
    Webhook により注入される、トークンベースの認証用の環境変数。
Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

会社概要

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

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

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

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

Legal Notice

Theme

© 2026 Red Hat
トップに戻る