ステップ 11: Helm を使用して Apigee ハイブリッドをインストールする

Apigee ハイブリッド ランタイム コンポーネントをインストールする

このステップでは Helm を使用して、Apigee ハイブリッドの次のコンポーネントをインストールします。

  • Apigee オペレーター
  • Apigee データストア
  • Apigee テレメトリー
  • Apigee Redis
  • Apigee Ingress Manager
  • Apigee 組織
  • Apigee 環境

各環境のチャートを 1 つずつインストールします。コンポーネントをインストールする順序は重要です。

インストール前の注意事項

  1. v3.14.2 以降をまだインストールしていない場合は、Helm のインストールの手順に沿って操作します。
  2. Apigee ハイブリッドは、チャートのインストールまたはアップグレードの前に、Helm ガードレールを使用して構成を検証します。このセクションの各コマンドの出力に、ガードレール固有の情報が表示されることがあります。次に例を示します。

    # Source: apigee-operator/templates/apigee-operators-guardrails.yaml
    apiVersion: v1
    kind: Pod
    metadata:
      name: apigee-hybrid-helm-guardrail-operator
      namespace:  APIGEE_NAMESPACE
      annotations:
        helm.sh/hook: pre-install,pre-upgrade
        helm.sh/hook-delete-policy: before-hook-creation,hook-succeeded
      labels:
        app: apigee-hybrid-helm-guardrail
    

    helm upgrade コマンドが失敗した場合は、ガードレールの出力を使用して原因を診断できます。ガードレールで問題を診断するをご覧ください。

  3. Helm のアップグレード / インストール コマンドを実行する前に、コマンドの末尾に --dry-run=server を追加して、Helm ドライラン機能を使用します。サポートされているコマンド、オプション、使用方法の一覧は、helm install --h をご覧ください。

インストール手順

ハイブリッド インストールでサービス アカウント認証タイプのインストール手順を選択します。

Kubernetes Secret

  1. まだ行っていない場合は、APIGEE_HELM_CHARTS_HOME ディレクトリに移動します。このディレクトリから次のコマンドを実行します。
  2. Apigee オペレーター / コントローラをインストールします。
    1. ドライラン:
      helm upgrade operator apigee-operator/ \
        --install \
        --namespace APIGEE_NAMESPACE \
        --atomic \
        -f overrides.yaml \
        --dry-run=server
      
    2. チャートをインストールします。
      helm upgrade operator apigee-operator/ \
        --install \
        --namespace APIGEE_NAMESPACE \
        --atomic \
        -f overrides.yaml
      
    3. Apigee Operator のインストールを確認します。

      helm ls -n APIGEE_NAMESPACE
      
      NAME       NAMESPACE       REVISION   UPDATED                                STATUS     CHART                                       APP VERSION
      operator   apigee   3          2025-06-26 00:42:44.492009 -0800 PST   deployed   apigee-operator-1.15.1   1.15.1
      
    4. 可用性をチェックして、稼働していることを確認します。

      kubectl -n APIGEE_NAMESPACE get deploy apigee-controller-manager
      
      NAME                        READY   UP-TO-DATE   AVAILABLE   AGE
      apigee-controller-manager   1/1     1            1           34s
      
  3. Apigee データストアをインストールします。

    1. ドライラン:
      helm upgrade datastore apigee-datastore/ \
        --install \
        --namespace APIGEE_NAMESPACE \
        --atomic \
        -f overrides.yaml \
        --dry-run=server
      
    2. チャートをインストールします。

      helm upgrade datastore apigee-datastore/ \
        --install \
        --namespace APIGEE_NAMESPACE \
        --atomic \
        -f overrides.yaml
      
    3. 次のステップに進む前に状態をチェックして、apigeedatastore が稼働していることを確認します。

      kubectl -n APIGEE_NAMESPACE get apigeedatastore default
      
      NAME      STATE       AGE
      default   running    51s
      
  4. Apigee テレメトリーをインストールします。

    1. ドライラン:
      helm upgrade telemetry apigee-telemetry/ \
        --install \
        --namespace APIGEE_NAMESPACE \
        --atomic \
        -f overrides.yaml \
        --dry-run=server
      
    2. チャートをインストールします。

      helm upgrade telemetry apigee-telemetry/ \
        --install \
        --namespace APIGEE_NAMESPACE \
        --atomic \
        -f overrides.yaml
      
    3. 状態をチェックして、稼働していることを確認します。

      kubectl -n APIGEE_NAMESPACE get apigeetelemetry apigee-telemetry
      
      NAME               STATE     AGE
      apigee-telemetry   running   55s
      
  5. Apigee Redis をインストールします。

    1. ドライランを実行します。

      helm upgrade redis apigee-redis/ \
        --install \
        --namespace APIGEE_NAMESPACE \
        --atomic \
        -f overrides.yaml \
        --dry-run=server
      
    2. チャートをインストールします。

      helm upgrade redis apigee-redis/ \
        --install \
        --namespace APIGEE_NAMESPACE \
        --atomic \
        -f overrides.yaml
      
    3. 状態をチェックして、稼働していることを確認します。

      kubectl -n APIGEE_NAMESPACE get apigeeredis default
      
      NAME      STATE     AGE
      default   running   79s
      
  6. Apigee Ingress マネージャーをインストールします。

    1. ドライランを実行します。

      helm upgrade ingress-manager apigee-ingress-manager/ \
        --install \
        --namespace APIGEE_NAMESPACE \
        --atomic \
        -f overrides.yaml \
        --dry-run=server
      
    2. チャートをインストールします。

      helm upgrade ingress-manager apigee-ingress-manager/ \
        --install \
        --namespace APIGEE_NAMESPACE \
        --atomic \
        -f overrides.yaml
      
    3. 可用性をチェックして、稼働していることを確認します。

      kubectl -n APIGEE_NAMESPACE get deployment apigee-ingressgateway-manager
      
      NAME                            READY   UP-TO-DATE   AVAILABLE   AGE
      apigee-ingressgateway-manager   2/2     2            2           16s
      
  7. Apigee 組織をインストールします。シェルで $ORG_NAME 環境変数を設定している場合は、次のコマンドで使用できます。

    1. ドライランを実行します。

      helm upgrade $ORG_NAME apigee-org/ \
        --install \
        --namespace APIGEE_NAMESPACE \
        --atomic \
        -f overrides.yaml \
        --dry-run=server
      
    2. チャートをインストールします。

      helm upgrade $ORG_NAME apigee-org/ \
        --install \
        --namespace APIGEE_NAMESPACE \
        --atomic \
        -f overrides.yaml
      
    3. それぞれの組織の状態をチェックして、稼働していることを確認します。

      kubectl -n APIGEE_NAMESPACE get apigeeorg
      
      NAME                      STATE     AGE
      my-project-123abcd        running   4m18s
      
  8. 環境をインストールします。

    同時にインストールできる環境は 1 つだけです。--set env=ENV_NAME で環境を指定します。シェルで $ENV_NAME 環境変数を設定している場合は、次のコマンドで使用できます。

    1. ドライランを実行します。

      helm upgrade ENV_RELEASE_NAME apigee-env/ \
        --install \
        --namespace APIGEE_NAMESPACE \
        --atomic \
        --set env=$ENV_NAME \
        -f overrides.yaml \
        --dry-run=server
      

        ENV_RELEASE_NAME は、apigee-env チャートのインストールとアップグレードの追跡に使用する名前です。この名前は、インストール内の他の Helm リリース名と重複していない必要があります。通常、これは ENV_NAME と同じにします。ただし、環境と環境グループの名前が同じである場合は、環境と環境グループに対して異なるリリース名(dev-env-releasedev-envgroup-release など)を使用する必要があります。Helm でのリリースの詳細については、Helm ドキュメントの 3 つの大きなコンセプトをご覧ください。

    2. チャートをインストールします。

      helm upgrade ENV_RELEASE_NAME apigee-env/ \
        --install \
        --namespace APIGEE_NAMESPACE \
        --atomic \
        --set env=$ENV_NAME \
        -f overrides.yaml
      
    3. それぞれの環境の状態をチェックして、稼働していることを確認します。

      kubectl -n APIGEE_NAMESPACE get apigeeenv
      
      NAME                       STATE     AGE   GATEWAYTYPE
      apigee-my-project-my-env   running   3m1s
      
  9. 環境グループ(virtualhosts)をインストールします。
    1. 一度にインストールできる環境グループ(virtualhost)は 1 つだけです。--set envgroup=ENV_GROUP を使用して環境グループを指定します。シェルで $ENV_GROUP 環境変数を設定している場合は、次のコマンドで使用できます。overrides.yaml ファイルに記載されている env グループそれぞれに対して、次のコマンドを繰り返します。

      ドライランを実行します。

      helm upgrade ENV_GROUP_RELEASE_NAME apigee-virtualhost/ \
        --install \
        --namespace APIGEE_NAMESPACE \
        --atomic \
        --set envgroup=$ENV_GROUP \
        -f overrides.yaml \
        --dry-run=server
      

        ENV_GROUP_RELEASE_NAME は、apigee-virtualhosts チャートのインストールとアップグレードの追跡に使用する名前です。この名前は、インストール内の他の Helm リリース名と重複していない必要があります。通常、これは ENV_GROUP と同じにします。ただし、環境グループの名前がインストール環境の環境と同じである場合は、環境グループと環境に異なるリリース名(dev-envgroup-releasedev-env-release など)を使用する必要があります。Helm でのリリースの詳細については、Helm ドキュメントの 3 つの大きなコンセプトをご覧ください。

    2. チャートをインストールします。

      helm upgrade ENV_GROUP_RELEASE_NAME apigee-virtualhost/ \
        --install \
        --namespace APIGEE_NAMESPACE \
        --atomic \
        --set envgroup=$ENV_GROUP \
        -f overrides.yaml
      
    3. ApigeeRoute(AR)の状態を確認します。

      virtualhosts をインストールすると、ApigeeRouteConfig(ARC)が作成されます。これにより、Apigee ウォッチャーがコントロール プレーンから env グループ関連の詳細を pull した時点で、ApigeeRoute(AR)が内部で作成されます。このため、対応する AR の状態が実行中であることを確認します。

      kubectl -n APIGEE_NAMESPACE get arc
      
      NAME                                STATE   AGE
      apigee-org1-dev-egroup                       2m
      
      kubectl -n APIGEE_NAMESPACE get ar
      
      NAME                                                        STATE     AGE
      apigee-ingressgateway-internal-chaining-my-project-123abcd   running   19m
      my-project-myenvgroup-000-321dcba                            running   2m30s
      

JSON ファイル

  1. まだ行っていない場合は、APIGEE_HELM_CHARTS_HOME ディレクトリに移動します。このディレクトリから次のコマンドを実行します。
  2. Apigee オペレーター / コントローラをインストールします。
    1. ドライラン:
      helm upgrade operator apigee-operator/ \
        --install \
        --namespace APIGEE_NAMESPACE \
        --atomic \
        -f overrides.yaml \
        --dry-run=server
      
    2. チャートをインストールします。
      helm upgrade operator apigee-operator/ \
        --install \
        --namespace APIGEE_NAMESPACE \
        --atomic \
        -f overrides.yaml
      
    3. Apigee Operator のインストールを確認します。

      helm ls -n APIGEE_NAMESPACE
      
      NAME       NAMESPACE       REVISION   UPDATED                                STATUS     CHART                                       APP VERSION
      operator   apigee   3          2025-06-26 00:42:44.492009 -0800 PST   deployed   apigee-operator-1.15.1   1.15.1
      
    4. 可用性をチェックして、稼働していることを確認します。

      kubectl -n APIGEE_NAMESPACE get deploy apigee-controller-manager
      
      NAME                        READY   UP-TO-DATE   AVAILABLE   AGE
      apigee-controller-manager   1/1     1            1           34s
      
  3. Apigee データストアをインストールします。

    1. ドライラン:
      helm upgrade datastore apigee-datastore/ \
        --install \
        --namespace APIGEE_NAMESPACE \
        --atomic \
        -f overrides.yaml \
        --dry-run=server
      
    2. チャートをインストールします。

      helm upgrade datastore apigee-datastore/ \
        --install \
        --namespace APIGEE_NAMESPACE \
        --atomic \
        -f overrides.yaml
      
    3. 次のステップに進む前に状態をチェックして、apigeedatastore が稼働していることを確認します。

      kubectl -n APIGEE_NAMESPACE get apigeedatastore default
      
      NAME      STATE       AGE
      default   running    51s
      
  4. Apigee テレメトリーをインストールします。

    1. ドライラン:
      helm upgrade telemetry apigee-telemetry/ \
        --install \
        --namespace APIGEE_NAMESPACE \
        --atomic \
        -f overrides.yaml \
        --dry-run=server
      
    2. チャートをインストールします。

      helm upgrade telemetry apigee-telemetry/ \
        --install \
        --namespace APIGEE_NAMESPACE \
        --atomic \
        -f overrides.yaml
      
    3. 状態をチェックして、稼働していることを確認します。

      kubectl -n APIGEE_NAMESPACE get apigeetelemetry apigee-telemetry
      
      NAME               STATE     AGE
      apigee-telemetry   running   55s
      
  5. Apigee Redis をインストールします。

    1. ドライランを実行します。

      helm upgrade redis apigee-redis/ \
        --install \
        --namespace APIGEE_NAMESPACE \
        --atomic \
        -f overrides.yaml \
        --dry-run=server
      
    2. チャートをインストールします。

      helm upgrade redis apigee-redis/ \
        --install \
        --namespace APIGEE_NAMESPACE \
        --atomic \
        -f overrides.yaml
      
    3. 状態をチェックして、稼働していることを確認します。

      kubectl -n APIGEE_NAMESPACE get apigeeredis default
      
      NAME      STATE     AGE
      default   running   79s
      
  6. Apigee Ingress マネージャーをインストールします。

    1. ドライランを実行します。

      helm upgrade ingress-manager apigee-ingress-manager/ \
        --install \
        --namespace APIGEE_NAMESPACE \
        --atomic \
        -f overrides.yaml \
        --dry-run=server
      
    2. チャートをインストールします。

      helm upgrade ingress-manager apigee-ingress-manager/ \
        --install \
        --namespace APIGEE_NAMESPACE \
        --atomic \
        -f overrides.yaml
      
    3. 可用性をチェックして、稼働していることを確認します。

      kubectl -n APIGEE_NAMESPACE get deployment apigee-ingressgateway-manager
      
      NAME                            READY   UP-TO-DATE   AVAILABLE   AGE
      apigee-ingressgateway-manager   2/2     2            2           16s
      
  7. Apigee 組織をインストールします。シェルで $ORG_NAME 環境変数を設定している場合は、次のコマンドで使用できます。

    1. ドライランを実行します。

      helm upgrade $ORG_NAME apigee-org/ \
        --install \
        --namespace APIGEE_NAMESPACE \
        --atomic \
        -f overrides.yaml \
        --dry-run=server
      
    2. チャートをインストールします。

      helm upgrade $ORG_NAME apigee-org/ \
        --install \
        --namespace APIGEE_NAMESPACE \
        --atomic \
        -f overrides.yaml
      
    3. それぞれの組織の状態をチェックして、稼働していることを確認します。

      kubectl -n APIGEE_NAMESPACE get apigeeorg
      
      NAME                      STATE     AGE
      my-project-123abcd        running   4m18s
      
  8. 環境をインストールします。

    同時にインストールできる環境は 1 つだけです。--set env=ENV_NAME で環境を指定します。シェルで $ENV_NAME 環境変数を設定している場合は、次のコマンドで使用できます。

    1. ドライランを実行します。

      helm upgrade ENV_RELEASE_NAME apigee-env/ \
        --install \
        --namespace APIGEE_NAMESPACE \
        --atomic \
        --set env=$ENV_NAME \
        -f overrides.yaml \
        --dry-run=server
      

        ENV_RELEASE_NAME は、apigee-env チャートのインストールとアップグレードの追跡に使用する名前です。この名前は、インストール内の他の Helm リリース名と重複していない必要があります。通常、これは ENV_NAME と同じにします。ただし、環境と環境グループの名前が同じである場合は、環境と環境グループに対して異なるリリース名(dev-env-releasedev-envgroup-release など)を使用する必要があります。Helm でのリリースの詳細については、Helm ドキュメントの 3 つの大きなコンセプトをご覧ください。

    2. チャートをインストールします。

      helm upgrade ENV_RELEASE_NAME apigee-env/ \
        --install \
        --namespace APIGEE_NAMESPACE \
        --atomic \
        --set env=$ENV_NAME \
        -f overrides.yaml
      
    3. それぞれの環境の状態をチェックして、稼働していることを確認します。

      kubectl -n APIGEE_NAMESPACE get apigeeenv
      
      NAME                       STATE     AGE   GATEWAYTYPE
      apigee-my-project-my-env   running   3m1s
      
  9. 環境グループ(virtualhosts)をインストールします。
    1. 一度にインストールできる環境グループ(virtualhost)は 1 つだけです。--set envgroup=ENV_GROUP を使用して環境グループを指定します。シェルで $ENV_GROUP 環境変数を設定している場合は、次のコマンドで使用できます。overrides.yaml ファイルに記載されている env グループそれぞれに対して、次のコマンドを繰り返します。

      ドライランを実行します。

      helm upgrade ENV_GROUP_RELEASE_NAME apigee-virtualhost/ \
        --install \
        --namespace APIGEE_NAMESPACE \
        --atomic \
        --set envgroup=$ENV_GROUP \
        -f overrides.yaml \
        --dry-run=server
      

        ENV_GROUP_RELEASE_NAME は、apigee-virtualhosts チャートのインストールとアップグレードの追跡に使用する名前です。この名前は、インストール内の他の Helm リリース名と重複していない必要があります。通常、これは ENV_GROUP と同じにします。ただし、環境グループの名前がインストール環境の環境と同じである場合は、環境グループと環境に異なるリリース名(dev-envgroup-releasedev-env-release など)を使用する必要があります。Helm でのリリースの詳細については、Helm ドキュメントの 3 つの大きなコンセプトをご覧ください。

    2. チャートをインストールします。

      helm upgrade ENV_GROUP_RELEASE_NAME apigee-virtualhost/ \
        --install \
        --namespace APIGEE_NAMESPACE \
        --atomic \
        --set envgroup=$ENV_GROUP \
        -f overrides.yaml
      
    3. ApigeeRoute(AR)の状態を確認します。

      virtualhosts をインストールすると、ApigeeRouteConfig(ARC)が作成されます。これにより、Apigee ウォッチャーがコントロール プレーンから env グループ関連の詳細を pull した時点で、ApigeeRoute(AR)が内部で作成されます。このため、対応する AR の状態が実行中であることを確認します。

      kubectl -n APIGEE_NAMESPACE get arc
      
      NAME                                STATE   AGE
      apigee-org1-dev-egroup                       2m
      
      kubectl -n APIGEE_NAMESPACE get ar
      
      NAME                                                        STATE     AGE
      apigee-ingressgateway-internal-chaining-my-project-123abcd   running   19m
      my-project-myenvgroup-000-321dcba                            running   2m30s
      

Vault

  1. まだ行っていない場合は、APIGEE_HELM_CHARTS_HOME ディレクトリに移動します。このディレクトリから次のコマンドを実行します。
  2. Apigee オペレーター / コントローラをインストールします。
    1. ドライラン:
      helm upgrade operator apigee-operator/ \
        --install \
        --namespace APIGEE_NAMESPACE \
        --atomic \
        -f overrides.yaml \
        --dry-run=server
      
    2. チャートをインストールします。
      helm upgrade operator apigee-operator/ \
        --install \
        --namespace APIGEE_NAMESPACE \
        --atomic \
        -f overrides.yaml
      
    3. Apigee Operator のインストールを確認します。

      helm ls -n APIGEE_NAMESPACE
      
      NAME       NAMESPACE       REVISION   UPDATED                                STATUS     CHART                                       APP VERSION
      operator   apigee   3          2025-06-26 00:42:44.492009 -0800 PST   deployed   apigee-operator-1.15.1   1.15.1
      
    4. 可用性をチェックして、稼働していることを確認します。

      kubectl -n APIGEE_NAMESPACE get deploy apigee-controller-manager
      
      NAME                        READY   UP-TO-DATE   AVAILABLE   AGE
      apigee-controller-manager   1/1     1            1           34s
      
  3. Apigee データストアをインストールします。

    1. ドライラン:
      helm upgrade datastore apigee-datastore/ \
        --install \
        --namespace APIGEE_NAMESPACE \
        --atomic \
        -f overrides.yaml \
        --dry-run=server
      
    2. チャートをインストールします。

      helm upgrade datastore apigee-datastore/ \
        --install \
        --namespace APIGEE_NAMESPACE \
        --atomic \
        -f overrides.yaml
      
    3. 次のステップに進む前に状態をチェックして、apigeedatastore が稼働していることを確認します。

      kubectl -n APIGEE_NAMESPACE get apigeedatastore default
      
      NAME      STATE       AGE
      default   running    51s
      
  4. Apigee テレメトリーをインストールします。

    1. ドライラン:
      helm upgrade telemetry apigee-telemetry/ \
        --install \
        --namespace APIGEE_NAMESPACE \
        --atomic \
        -f overrides.yaml \
        --dry-run=server
      
    2. チャートをインストールします。

      helm upgrade telemetry apigee-telemetry/ \
        --install \
        --namespace APIGEE_NAMESPACE \
        --atomic \
        -f overrides.yaml
      
    3. 状態をチェックして、稼働していることを確認します。

      kubectl -n APIGEE_NAMESPACE get apigeetelemetry apigee-telemetry
      
      NAME               STATE     AGE
      apigee-telemetry   running   55s
      
  5. Apigee Redis をインストールします。

    1. ドライランを実行します。

      helm upgrade redis apigee-redis/ \
        --install \
        --namespace APIGEE_NAMESPACE \
        --atomic \
        -f overrides.yaml \
        --dry-run=server
      
    2. チャートをインストールします。

      helm upgrade redis apigee-redis/ \
        --install \
        --namespace APIGEE_NAMESPACE \
        --atomic \
        -f overrides.yaml
      
    3. 状態をチェックして、稼働していることを確認します。

      kubectl -n APIGEE_NAMESPACE get apigeeredis default
      
      NAME      STATE     AGE
      default   running   79s
      
  6. Apigee Ingress マネージャーをインストールします。

    1. ドライランを実行します。

      helm upgrade ingress-manager apigee-ingress-manager/ \
        --install \
        --namespace APIGEE_NAMESPACE \
        --atomic \
        -f overrides.yaml \
        --dry-run=server
      
    2. チャートをインストールします。

      helm upgrade ingress-manager apigee-ingress-manager/ \
        --install \
        --namespace APIGEE_NAMESPACE \
        --atomic \
        -f overrides.yaml
      
    3. 可用性をチェックして、稼働していることを確認します。

      kubectl -n APIGEE_NAMESPACE get deployment apigee-ingressgateway-manager
      
      NAME                            READY   UP-TO-DATE   AVAILABLE   AGE
      apigee-ingressgateway-manager   2/2     2            2           16s
      
  7. Apigee 組織をインストールします。シェルで $ORG_NAME 環境変数を設定している場合は、次のコマンドで使用できます。

    1. ドライランを実行します。

      helm upgrade $ORG_NAME apigee-org/ \
        --install \
        --namespace APIGEE_NAMESPACE \
        --atomic \
        -f overrides.yaml \
        --dry-run=server
      
    2. チャートをインストールします。

      helm upgrade $ORG_NAME apigee-org/ \
        --install \
        --namespace APIGEE_NAMESPACE \
        --atomic \
        -f overrides.yaml
      
    3. それぞれの組織の状態をチェックして、稼働していることを確認します。

      kubectl -n APIGEE_NAMESPACE get apigeeorg
      
      NAME                      STATE     AGE
      my-project-123abcd        running   4m18s
      
  8. 環境をインストールします。

    同時にインストールできる環境は 1 つだけです。--set env=ENV_NAME で環境を指定します。シェルで $ENV_NAME 環境変数を設定している場合は、次のコマンドで使用できます。

    1. ドライランを実行します。

      helm upgrade ENV_RELEASE_NAME apigee-env/ \
        --install \
        --namespace APIGEE_NAMESPACE \
        --atomic \
        --set env=$ENV_NAME \
        -f overrides.yaml \
        --dry-run=server
      

        ENV_RELEASE_NAME は、apigee-env チャートのインストールとアップグレードの追跡に使用する名前です。この名前は、インストール内の他の Helm リリース名と重複していない必要があります。通常、これは ENV_NAME と同じにします。ただし、環境と環境グループの名前が同じである場合は、環境と環境グループに対して異なるリリース名(dev-env-releasedev-envgroup-release など)を使用する必要があります。Helm でのリリースの詳細については、Helm ドキュメントの 3 つの大きなコンセプトをご覧ください。

    2. チャートをインストールします。

      helm upgrade ENV_RELEASE_NAME apigee-env/ \
        --install \
        --namespace APIGEE_NAMESPACE \
        --atomic \
        --set env=$ENV_NAME \
        -f overrides.yaml
      
    3. それぞれの環境の状態をチェックして、稼働していることを確認します。

      kubectl -n APIGEE_NAMESPACE get apigeeenv
      
      NAME                       STATE     AGE   GATEWAYTYPE
      apigee-my-project-my-env   running   3m1s
      
  9. 環境グループ(virtualhosts)をインストールします。
    1. 一度にインストールできる環境グループ(virtualhost)は 1 つだけです。--set envgroup=ENV_GROUP を使用して環境グループを指定します。シェルで $ENV_GROUP 環境変数を設定している場合は、次のコマンドで使用できます。overrides.yaml ファイルに記載されている env グループそれぞれに対して、次のコマンドを繰り返します。

      ドライランを実行します。

      helm upgrade ENV_GROUP_RELEASE_NAME apigee-virtualhost/ \
        --install \
        --namespace APIGEE_NAMESPACE \
        --atomic \
        --set envgroup=$ENV_GROUP \
        -f overrides.yaml \
        --dry-run=server
      

        ENV_GROUP_RELEASE_NAME は、apigee-virtualhosts チャートのインストールとアップグレードの追跡に使用する名前です。この名前は、インストール内の他の Helm リリース名と重複していない必要があります。通常、これは ENV_GROUP と同じにします。ただし、環境グループの名前がインストール環境の環境と同じである場合は、環境グループと環境に異なるリリース名(dev-envgroup-releasedev-env-release など)を使用する必要があります。Helm でのリリースの詳細については、Helm ドキュメントの 3 つの大きなコンセプトをご覧ください。

    2. チャートをインストールします。

      helm upgrade ENV_GROUP_RELEASE_NAME apigee-virtualhost/ \
        --install \
        --namespace APIGEE_NAMESPACE \
        --atomic \
        --set envgroup=$ENV_GROUP \
        -f overrides.yaml
      
    3. ApigeeRoute(AR)の状態を確認します。

      virtualhosts をインストールすると、ApigeeRouteConfig(ARC)が作成されます。これにより、Apigee ウォッチャーがコントロール プレーンから env グループ関連の詳細を pull した時点で、ApigeeRoute(AR)が内部で作成されます。このため、対応する AR の状態が実行中であることを確認します。

      kubectl -n APIGEE_NAMESPACE get arc
      
      NAME                                STATE   AGE
      apigee-org1-dev-egroup                       2m
      
      kubectl -n APIGEE_NAMESPACE get ar
      
      NAME                                                        STATE     AGE
      apigee-ingressgateway-internal-chaining-my-project-123abcd   running   19m
      my-project-myenvgroup-000-321dcba                            running   2m30s
      

GKE 用 WIF

  1. まだ行っていない場合は、APIGEE_HELM_CHARTS_HOME ディレクトリに移動します。このディレクトリから次のコマンドを実行します。
  2. Apigee オペレーター / コントローラをインストールします。
    1. ドライラン:
      helm upgrade operator apigee-operator/ \
        --install \
        --namespace APIGEE_NAMESPACE \
        --atomic \
        -f overrides.yaml \
        --dry-run=server
      
    2. チャートをインストールします。
      helm upgrade operator apigee-operator/ \
        --install \
        --namespace APIGEE_NAMESPACE \
        --atomic \
        -f overrides.yaml
      
    3. Apigee Operator のインストールを確認します。

      helm ls -n APIGEE_NAMESPACE
      
      NAME       NAMESPACE       REVISION   UPDATED                                STATUS     CHART                                       APP VERSION
      operator   apigee   3          2025-06-26 00:42:44.492009 -0800 PST   deployed   apigee-operator-1.15.1   1.15.1
      
    4. 可用性をチェックして、稼働していることを確認します。

      kubectl -n APIGEE_NAMESPACE get deploy apigee-controller-manager
      
      NAME                        READY   UP-TO-DATE   AVAILABLE   AGE
      apigee-controller-manager   1/1     1            1           34s
      
  3. Apigee データストアをインストールします。

    1. ドライラン:
      helm upgrade datastore apigee-datastore/ \
        --install \
        --namespace APIGEE_NAMESPACE \
        --atomic \
        -f overrides.yaml \
        --dry-run=server
      
    2. Workload Identity Federation for GKE の Cassandra のサービス アカウント バインディングを設定します。

      helm upgrade コマンドの出力には、 セクションにコマンドが含まれているはずです。これらのコマンドに沿って、サービス アカウントのバインディングを設定します。次の形式のコマンドが 2 つ必要です。

      本番環境

      gcloud iam service-accounts add-iam-policy-binding CASSANDRA_SERVICE_ACCOUNT_EMAIL \
        --role roles/iam.workloadIdentityUser \
        --member "serviceAccount:PROJECT_ID.svc.id.goog[apigee/apigee-cassandra-default]" \
        --project PROJECT_ID
      

      非本番環境

      gcloud iam service-accounts add-iam-policy-binding NON_PROD_SERVICE_ACCOUNT_EMAIL \
        --role roles/iam.workloadIdentityUser \
        --member "serviceAccount:PROJECT_ID.svc.id.goog[apigee/apigee-cassandra-default]" \
        --project PROJECT_ID
      

      および:

      本番環境

      kubectl annotate serviceaccount apigee-cassandra-default \
        iam.gke.io/gcp-service-account=CASSANDRA_SERVICE_ACCOUNT_EMAIL \
        --namespace APIGEE_NAMESPACE
      

      非本番環境

      kubectl annotate serviceaccount apigee-cassandra-default \
        iam.gke.io/gcp-service-account=NON_PROD_SERVICE_ACCOUNT_EMAIL \
        --namespace APIGEE_NAMESPACE
      

      次に例を示します。

      本番環境

      NOTES:
      For Cassandra backup GKE Workload Identity, please make sure to add the following membership to the IAM policy binding using the respective kubernetes SA (KSA).
        gcloud iam service-accounts add-iam-policy-binding apigee-cassandra@my-project.iam.gserviceaccount.com \
              --role roles/iam.workloadIdentityUser \
              --member "serviceAccount:my-project.svc.id.goog[apigee/apigee-cassandra-default]" \
              --project my-project
      
        kubectl annotate serviceaccount apigee-cassandra-default \
              iam.gke.io/gcp-service-account=apigee-cassandra@my-project.iam.gserviceaccount.com \
              --namespace apigee
      

      非本番環境

      NOTES:
      For Cassandra backup GKE Workload Identity, please make sure to add the following membership to the IAM policy binding using the respective kubernetes SA (KSA).
        gcloud iam service-accounts add-iam-policy-binding apigee-non-prod@my-project.iam.gserviceaccount.com \
              --role roles/iam.workloadIdentityUser \
              --member "serviceAccount:my-project.svc.id.goog[apigee/apigee-cassandra-default]" \
              --project my-project
      
        kubectl annotate serviceaccount apigee-cassandra-default \
              iam.gke.io/gcp-service-account=apigee-non-prod@my-project.iam.gserviceaccount.com \
              --namespace apigee
      

      (省略可)この時点で Cassandra バックアップを設定しない場合は、オーバーライド ファイルを編集して cassandra.backup スタンザを削除するかコメントアウトしてから、--dry-run フラグなしで helm upgrade コマンドを実行します。Cassandra バックアップの構成の詳細については、Cassandra のバックアップと復元をご覧ください。

    3. チャートをインストールします。

      helm upgrade datastore apigee-datastore/ \
        --install \
        --namespace APIGEE_NAMESPACE \
        --atomic \
        -f overrides.yaml
      
    4. 次のステップに進む前に状態をチェックして、apigeedatastore が稼働していることを確認します。

      kubectl -n APIGEE_NAMESPACE get apigeedatastore default
      
      NAME      STATE       AGE
      default   running    51s
      
  4. Apigee テレメトリーをインストールします。

    1. ドライラン:
      helm upgrade telemetry apigee-telemetry/ \
        --install \
        --namespace APIGEE_NAMESPACE \
        --atomic \
        -f overrides.yaml \
        --dry-run=server
      
    2. Workload Identity Federation for GKE の Logger と Metrics のサービス アカウント バインディングを設定します。

      helm upgrade コマンドの出力には、 セクションにコマンドが含まれているはずです。これらのコマンドに沿って、サービス アカウントのバインディングを設定します。次の形式のコマンドが 2 つ必要です。

      Logger KSA: apigee-logger-apigee-telemetry

      gcloud iam service-accounts add-iam-policy-binding LOGGER_SERVICE_ACCOUNT_EMAIL \
        --role roles/iam.workloadIdentityUser \
        --member "serviceAccount:PROJECT_ID.svc.id.goog[apigee/apigee-logger-apigee-telemetry]" \
        --project PROJECT_ID
      

      指標 KSA: apigee-metrics-sa

      本番環境

      gcloud iam service-accounts add-iam-policy-binding METRICS_SERVICE_ACCOUNT_EMAIL \
        --role roles/iam.workloadIdentityUser \
        --member "serviceAccount:PROJECT_ID.svc.id.goog[apigee/apigee-metrics-sa]" \
        --project PROJECT_ID

      非本番環境

      gcloud iam service-accounts add-iam-policy-binding NON_PROD_SERVICE_ACCOUNT_EMAIL \
        --role roles/iam.workloadIdentityUser \
        --member "serviceAccount:PROJECT_ID.svc.id.goog[apigee/apigee-metrics-sa]" \
        --project PROJECT_ID

      次に例を示します。

      本番環境

      NOTES:
      For GKE Workload Identity, please make sure to add the following membership to the IAM policy binding using the respective kubernetes SA (KSA).
        Logger KSA: apigee-logger-apigee-telemetry
        gcloud iam service-accounts add-iam-policy-binding apigee-logger@my-project.iam.gserviceaccount.com \
              --role roles/iam.workloadIdentityUser \
              --member "serviceAccount:my-project.svc.id.goog[apigee/apigee-logger-apigee-telemetry]" \
              --project my-project
      
        Metrics KSA: apigee-metrics-sa
        gcloud iam service-accounts add-iam-policy-binding apigee-metrics@my-project.iam.gserviceaccount.com \
              --role roles/iam.workloadIdentityUser \
              --member "serviceAccount:my-project.svc.id.goog[apigee/apigee-metrics-sa]" \
              --project my-project
      

      非本番環境

      NOTES:
      For GKE Workload Identity, please make sure to add the following membership to the IAM policy binding using the respective kubernetes SA (KSA).
        Logger KSA: apigee-logger-apigee-telemetry
        gcloud iam service-accounts add-iam-policy-binding apigee-non-prod@my-project.iam.gserviceaccount.com \
              --role roles/iam.workloadIdentityUser \
              --member "serviceAccount:my-project.svc.id.goog[apigee/apigee-logger-apigee-telemetry]" \
              --project my-project
      
        Metrics KSA: apigee-metrics-sa
        gcloud iam service-accounts add-iam-policy-binding apigee-non-prod@my-project.iam.gserviceaccount.com \
              --role roles/iam.workloadIdentityUser \
              --member "serviceAccount:my-project.svc.id.goog[apigee/apigee-metrics-sa]" \
              --project my-project
      
    3. チャートをインストールします。

      helm upgrade telemetry apigee-telemetry/ \
        --install \
        --namespace APIGEE_NAMESPACE \
        --atomic \
        -f overrides.yaml
      
    4. 状態をチェックして、稼働していることを確認します。

      kubectl -n APIGEE_NAMESPACE get apigeetelemetry apigee-telemetry
      
      NAME               STATE     AGE
      apigee-telemetry   running   55s
      
  5. Apigee Redis をインストールします。

    1. ドライランを実行します。

      helm upgrade redis apigee-redis/ \
        --install \
        --namespace APIGEE_NAMESPACE \
        --atomic \
        -f overrides.yaml \
        --dry-run=server
      
    2. チャートをインストールします。

      helm upgrade redis apigee-redis/ \
        --install \
        --namespace APIGEE_NAMESPACE \
        --atomic \
        -f overrides.yaml
      
    3. 状態をチェックして、稼働していることを確認します。

      kubectl -n APIGEE_NAMESPACE get apigeeredis default
      
      NAME      STATE     AGE
      default   running   79s
      
  6. Apigee Ingress マネージャーをインストールします。

    1. ドライランを実行します。

      helm upgrade ingress-manager apigee-ingress-manager/ \
        --install \
        --namespace APIGEE_NAMESPACE \
        --atomic \
        -f overrides.yaml \
        --dry-run=server
      
    2. チャートをインストールします。

      helm upgrade ingress-manager apigee-ingress-manager/ \
        --install \
        --namespace APIGEE_NAMESPACE \
        --atomic \
        -f overrides.yaml
      
    3. 可用性をチェックして、稼働していることを確認します。

      kubectl -n APIGEE_NAMESPACE get deployment apigee-ingressgateway-manager
      
      NAME                            READY   UP-TO-DATE   AVAILABLE   AGE
      apigee-ingressgateway-manager   2/2     2            2           16s
      
  7. Apigee 組織をインストールします。シェルで $ORG_NAME 環境変数を設定している場合は、次のコマンドで使用できます。

    1. ドライランを実行します。

      helm upgrade $ORG_NAME apigee-org/ \
        --install \
        --namespace APIGEE_NAMESPACE \
        --atomic \
        -f overrides.yaml \
        --dry-run=server
      
    2. Workload Identity Federation for GKE、MART、Apigee Connect、UDCA、Watcher の組織スコープ コンポーネントのサービス アカウント バインディングを設定します。

      helm upgrade コマンドの出力には、 セクションにコマンドが含まれているはずです。これらのコマンドに沿って、サービス アカウントのバインディングを設定します。4 つのコマンドがあります。

      MART KSA: apigee-mart-PROJECT_ID-ORG_HASH_ID-sa

      本番環境

      gcloud iam service-accounts add-iam-policy-binding MART_SERVICE_ACCOUNT_EMAIL \
        --role roles/iam.workloadIdentityUser \
        --member "serviceAccount:PROJECT_ID.svc.id.goog[apigee/apigee-mart-PROJECT_ID-ORG_HASH_ID-sa]" \
        --project PROJECT_ID
      

      非本番環境

      gcloud iam service-accounts add-iam-policy-binding NON_PROD_SERVICE_ACCOUNT_EMAIL \
        --role roles/iam.workloadIdentityUser \
        --member "serviceAccount:PROJECT_ID.svc.id.goog[apigee/apigee-mart-PROJECT_ID-ORG_HASH_ID-sa]" \
        --project PROJECT_ID
      

      Connect Agent KSA: apigee-connect-agent-PROJECT_ID-ORG_HASH_ID-sa

      本番環境

      gcloud iam service-accounts add-iam-policy-binding MART_SERVICE_ACCOUNT_EMAIL \
        --role roles/iam.workloadIdentityUser \
        --member "serviceAccount:PROJECT_ID.svc.id.goog[apigee/apigee-connect-agent-PROJECT_ID-ORG_HASH_ID-sa]" \
        --project PROJECT_ID
      

      非本番環境

      gcloud iam service-accounts add-iam-policy-binding NON_PROD_SERVICE_ACCOUNT_EMAIL \
        --role roles/iam.workloadIdentityUser \
        --member "serviceAccount:PROJECT_ID.svc.id.goog[apigee/apigee-connect-agent-PROJECT_ID-ORG_HASH_ID-sa]" \
        --project PROJECT_ID
      

      Mint Task Scheduler KSA:Apigee ハイブリッドの収益化を使用している場合)apigee-mint-task-scheduler-PROJECT_ID-ORG_HASH_ID-sa

      本番環境

      gcloud iam service-accounts add-iam-policy-binding MINT_TASK_SCHEDULER_SERVICE_ACCOUNT_EMAIL \
        --role roles/iam.workloadIdentityUser \
        --member "serviceAccount:PROJECT_ID.svc.id.goog[apigee/apigee-mint-task-scheduler-PROJECT_ID-ORG_HASH_ID-sa]" \
        --project PROJECT_ID
      

      非本番環境

      gcloud iam service-accounts add-iam-policy-binding NON_PROD_SERVICE_ACCOUNT_EMAIL \
        --role roles/iam.workloadIdentityUser \
        --member "serviceAccount:PROJECT_ID.svc.id.goog[apigee/apigee-mint-task-scheduler-PROJECT_ID-ORG_HASH_ID-sa]" \
        --project PROJECT_ID
      

      UDCA KSA: apigee-udca-PROJECT_ID-ORG_HASH_ID-sa

      本番環境

      gcloud iam service-accounts add-iam-policy-binding UDCA_SERVICE_ACCOUNT_EMAIL \
        --role roles/iam.workloadIdentityUser \
        --member "serviceAccount:PROJECT_ID.svc.id.goog[apigee/apigee-udca-PROJECT_ID-ORG_HASH_ID-sa]" \
        --project PROJECT_ID
      

      非本番環境

      gcloud iam service-accounts add-iam-policy-binding NON_PROD_SERVICE_ACCOUNT_EMAIL \
        --role roles/iam.workloadIdentityUser \
        --member "serviceAccount:PROJECT_ID.svc.id.goog[apigee/apigee-udca-PROJECT_ID-ORG_HASH_ID-sa]" \
        --project PROJECT_ID
      

      Watcher KSA: apigee-watcher-PROJECT_ID-ORG_HASH_ID-sa

      本番環境

      gcloud iam service-accounts add-iam-policy-binding WATCHER_SERVICE_ACCOUNT_EMAIL \
        --role roles/iam.workloadIdentityUser \
        --member "serviceAccount:PROJECT_ID.svc.id.goog[apigee/apigee-watcher-PROJECT_ID-ORG_HASH_ID-sa]" \
        --project PROJECT_ID
      

      非本番環境

      gcloud iam service-accounts add-iam-policy-binding NON_PROD_SERVICE_ACCOUNT_EMAIL \
        --role roles/iam.workloadIdentityUser \
        --member "serviceAccount:PROJECT_ID.svc.id.goog[apigee/apigee-watcher-PROJECT_ID-ORG_HASH_ID-sa]" \
        --project PROJECT_ID
      

      次に例を示します。

      本番環境

      NOTES:
      For Apigee Organization GKE Workload Identity, my-project, please make sure to add the following membership to the IAM policy binding using the respective kubernetes SA (KSA).
      
      
        MART KSA: apigee-mart-my-project-1a2b3c4-sa
        gcloud iam service-accounts add-iam-policy-binding apigee-mart@my-project.iam.gserviceaccount.com \
              --role roles/iam.workloadIdentityUser \
              --member "serviceAccount:my-project.svc.id.goog[apigee/apigee-mart-my-project-1a2b3c4-sa]" \
              --project my-project
      
      
        Connect Agent KSA: apigee-connect-agent-my-project-1a2b3c4-sa
        gcloud iam service-accounts add-iam-policy-binding apigee-mart@my-project.iam.gserviceaccount.com \
              --role roles/iam.workloadIdentityUser \
              --member "serviceAccount:my-project.svc.id.goog[apigee/apigee-connect-agent-my-project-1a2b3c4-sa]" \
              --project my-project
      
      
        Mint task scheduler KSA: apigee-mint-task-scheduler-my-project-1a2b3c4-sa
        gcloud iam service-accounts add-iam-policy-binding apigee-mint-task-scheduler@my-project.iam.gserviceaccount.com \
              --role roles/iam.workloadIdentityUser \
              --member "serviceAccount:my-project.svc.id.goog[apigee/apigee-mint-task-scheduler-my-project-1a2b3c4-sa]" \
              --project my-project
      
      
        UDCA KSA: apigee-udca-my-project-1a2b3c4-sa
        gcloud iam service-accounts add-iam-policy-binding apigee-udca@my-project.iam.gserviceaccount.com \
              --role roles/iam.workloadIdentityUser \
              --member "serviceAccount:my-project.svc.id.goog[apigee/apigee-udca-my-project-1a2b3c4-sa]" \
              --project my-project
      
      
        Watcher KSA: apigee-watcher-my-project-1a2b3c4-sa
        gcloud iam service-accounts add-iam-policy-binding apigee-watcher@my-project.iam.gserviceaccount.com \
              --role roles/iam.workloadIdentityUser \
              --member "serviceAccount:my-project.svc.id.goog[apigee/apigee-watcher-my-project-1a2b3c4-sa]" \
              --project my-project
      

      非本番環境

      NOTES:
      For Apigee Organization GKE Workload Identity, my-project, please make sure to add the following membership to the IAM policy binding using the respective kubernetes SA (KSA).
      
        MART KSA: apigee-mart-my-project-1a2b3c4-sa
        gcloud iam service-accounts add-iam-policy-binding apigee-non-prod@my-project.iam.gserviceaccount.com \
              --role roles/iam.workloadIdentityUser \
              --member "serviceAccount:my-project.svc.id.goog[apigee/apigee-mart-my-project-1a2b3c4-sa]" \
              --project my-project
      
      
        Connect Agent KSA: apigee-connect-agent-my-project-1a2b3c4-sa
        gcloud iam service-accounts add-iam-policy-binding apigee-non-prod@my-project.iam.gserviceaccount.com \
              --role roles/iam.workloadIdentityUser \
              --member "serviceAccount:my-project.svc.id.goog[apigee/apigee-connect-agent-my-project-1a2b3c4-sa]" \
              --project my-project
      
      
        UDCA KSA: apigee-udca-my-project-1a2b3c4-sa
        gcloud iam service-accounts add-iam-policy-binding apigee-non-prod@my-project.iam.gserviceaccount.com \
              --role roles/iam.workloadIdentityUser \
              --member "serviceAccount:my-project.svc.id.goog[apigee/apigee-udca-my-project-1a2b3c4-sa]" \
              --project my-project
      
      
        Watcher KSA: apigee-watcher-my-project-1a2b3c4-sa
        gcloud iam service-accounts add-iam-policy-binding apigee-non-prod@my-project.iam.gserviceaccount.com \
              --role roles/iam.workloadIdentityUser \
              --member "serviceAccount:my-project.svc.id.goog[apigee/apigee-watcher-my-project-1a2b3c4-sa]" \
              --project my-project
      
    3. チャートをインストールします。

      helm upgrade $ORG_NAME apigee-org/ \
        --install \
        --namespace APIGEE_NAMESPACE \
        --atomic \
        -f overrides.yaml
      
    4. それぞれの組織の状態をチェックして、稼働していることを確認します。

      kubectl -n APIGEE_NAMESPACE get apigeeorg
      
      NAME                      STATE     AGE
      my-project-123abcd        running   4m18s
      
  8. 環境をインストールします。

    同時にインストールできる環境は 1 つだけです。--set env=ENV_NAME で環境を指定します。シェルで $ENV_NAME 環境変数を設定している場合は、次のコマンドで使用できます。

    1. ドライランを実行します。

      helm upgrade ENV_RELEASE_NAME apigee-env/ \
        --install \
        --namespace APIGEE_NAMESPACE \
        --atomic \
        --set env=$ENV_NAME \
        -f overrides.yaml \
        --dry-run=server
      

        ENV_RELEASE_NAME は、apigee-env チャートのインストールとアップグレードの追跡に使用する名前です。この名前は、インストール内の他の Helm リリース名と重複していない必要があります。通常、これは ENV_NAME と同じにします。ただし、環境と環境グループの名前が同じである場合は、環境と環境グループに対して異なるリリース名(dev-env-releasedev-envgroup-release など)を使用する必要があります。Helm でのリリースの詳細については、Helm ドキュメントの 3 つの大きなコンセプトをご覧ください。

    2. Workload Identity Federation for GKE、Runtime、Synchronizer、UDCA の環境スコープ コンポーネントのサービス アカウント バインディングを設定します。

      helm upgrade コマンドの出力には、 セクションにコマンドが含まれているはずです。これらのコマンドに沿って、サービス アカウントのバインディングを設定します。4 つのコマンドがあります。

      ランタイム KSA: apigee-runtime-PROJECT_ID-ENV_NAME-ENV_HASH_ID-sa

      本番環境

      gcloud iam service-accounts add-iam-policy-binding RUNTIME_SERVICE_ACCOUNT_EMAIL \
        --role roles/iam.workloadIdentityUser \
        --member "serviceAccount:PROJECT_ID.svc.id.goog[apigee/apigee-runtime-PROJECT_ID-ENV_NAME-ENV_HASH_ID-sa]" \
        --project PROJECT_ID
      

      非本番環境

      gcloud iam service-accounts add-iam-policy-binding NON_PROD_SERVICE_ACCOUNT_EMAIL \
        --role roles/iam.workloadIdentityUser \
        --member "serviceAccount:PROJECT_ID.svc.id.goog[apigee/apigee-runtime-PROJECT_ID-ENV_NAME-ENV_HASH_ID-sa]" \
        --project PROJECT_ID
      

      Synchronizer KSA: apigee-synchronizer-PROJECT_ID-ENV_NAME-ENV_HASH_ID-sa

      本番環境

      gcloud iam service-accounts add-iam-policy-binding SYNCHRONIZER_SERVICE_ACCOUNT_EMAIL \
        --role roles/iam.workloadIdentityUser \
        --member "serviceAccount:PROJECT_ID.svc.id.goog[apigee/apigee-synchronizer-PROJECT_ID-ENV_NAME-ENV_HASH_ID-sa]" \
        --project PROJECT_ID
      

      非本番環境

      gcloud iam service-accounts add-iam-policy-binding NON_PROD_SERVICE_ACCOUNT_EMAIL \
        --role roles/iam.workloadIdentityUser \
        --member "serviceAccount:PROJECT_ID.svc.id.goog[apigee/apigee-synchronizer-PROJECT_ID-ENV_NAME-ENV_HASH_ID-sa]" \
        --project PROJECT_ID
      

      UDCA KSA: apigee-udca-PROJECT_ID-ORG_HASH_ID-ENV_NAME-ENV_HASH_ID-sa

      本番環境

      gcloud iam service-accounts add-iam-policy-binding UDCA_SERVICE_ACCOUNT_EMAIL \
        --role roles/iam.workloadIdentityUser \
        --member "serviceAccount:PROJECT_ID.svc.id.goog[apigee/apigee-udca-PROJECT_ID-ENV_NAME-ENV_HASH_ID-sa]" \
        --project PROJECT_ID
      

      非本番環境

      gcloud iam service-accounts add-iam-policy-binding NON_PROD_SERVICE_ACCOUNT_EMAIL \
        --role roles/iam.workloadIdentityUser \
        --member "serviceAccount:PROJECT_ID.svc.id.goog[apigee/apigee-udca-PROJECT_ID-ENV_NAME-ENV_HASH_ID-sa]" \
        --project PROJECT_ID
      

      次に例を示します。

      NOTES:
      For Apigee Environment GKE Workload Identity, my-env, please make sure to add the following membership to the IAM policy binding using the respective kubernetes SA (KSA).
      
      
        Runtime KSA: apigee-runtime-my-project-my-env-b2c3d4e-sa
        gcloud iam service-accounts add-iam-policy-binding apigee-runtime@my-project.iam.gserviceaccount.com \
              --role roles/iam.workloadIdentityUser \
              --member "serviceAccount:my-project.svc.id.goog[apigee/apigee-runtime-my-project-my-env-b2c3d4e-sa]" \
              --project my-project
      
      
        Synchronizer KSA: apigee-synchronizer-my-project-my-env-b2c3d4e-sa
        gcloud iam service-accounts add-iam-policy-binding apigee-synchronizer@my-project.iam.gserviceaccount.com \
              --role roles/iam.workloadIdentityUser \
              --member "serviceAccount:my-project.svc.id.goog[apigee/apigee-synchronizer-my-project-my-env-b2c3d4e-sa]" \
              --project my-project
      
      
        UDCA KSA: apigee-udca-my-project-my-env-b2c3d4e-sa:
        gcloud iam service-accounts add-iam-policy-binding apigee-udca@my-project.iam.gserviceaccount.com \
              --role roles/iam.workloadIdentityUser \
              --member "serviceAccount:my-project.svc.id.goog[apigee/apigee-udca-my-project-my-env-b2c3d4e-sa]" \
              --project my-project
      
    3. チャートをインストールします。

      helm upgrade ENV_RELEASE_NAME apigee-env/ \
        --install \
        --namespace APIGEE_NAMESPACE \
        --atomic \
        --set env=$ENV_NAME \
        -f overrides.yaml
      
    4. それぞれの環境の状態をチェックして、稼働していることを確認します。

      kubectl -n APIGEE_NAMESPACE get apigeeenv
      
      NAME                       STATE     AGE   GATEWAYTYPE
      apigee-my-project-my-env   running   3m1s
      
  9. 環境グループ(virtualhosts)をインストールします。
    1. 一度にインストールできる環境グループ(virtualhost)は 1 つだけです。--set envgroup=ENV_GROUP を使用して環境グループを指定します。シェルで $ENV_GROUP 環境変数を設定している場合は、次のコマンドで使用できます。overrides.yaml ファイルに記載されている env グループそれぞれに対して、次のコマンドを繰り返します。

      ドライランを実行します。

      helm upgrade ENV_GROUP_RELEASE_NAME apigee-virtualhost/ \
        --install \
        --namespace APIGEE_NAMESPACE \
        --atomic \
        --set envgroup=$ENV_GROUP \
        -f overrides.yaml \
        --dry-run=server
      

        ENV_GROUP_RELEASE_NAME は、apigee-virtualhosts チャートのインストールとアップグレードの追跡に使用する名前です。この名前は、インストール内の他の Helm リリース名と重複していない必要があります。通常、これは ENV_GROUP と同じにします。ただし、環境グループの名前がインストール環境の環境と同じである場合は、環境グループと環境に異なるリリース名(dev-envgroup-releasedev-env-release など)を使用する必要があります。Helm でのリリースの詳細については、Helm ドキュメントの 3 つの大きなコンセプトをご覧ください。

    2. チャートをインストールします。

      helm upgrade ENV_GROUP_RELEASE_NAME apigee-virtualhost/ \
        --install \
        --namespace APIGEE_NAMESPACE \
        --atomic \
        --set envgroup=$ENV_GROUP \
        -f overrides.yaml
      
    3. ApigeeRoute(AR)の状態を確認します。

      virtualhosts をインストールすると、ApigeeRouteConfig(ARC)が作成されます。これにより、Apigee ウォッチャーがコントロール プレーンから env グループ関連の詳細を pull した時点で、ApigeeRoute(AR)が内部で作成されます。このため、対応する AR の状態が実行中であることを確認します。

      kubectl -n APIGEE_NAMESPACE get arc
      
      NAME                                STATE   AGE
      apigee-org1-dev-egroup                       2m
      
      kubectl -n APIGEE_NAMESPACE get ar
      
      NAME                                                        STATE     AGE
      apigee-ingressgateway-internal-chaining-my-project-123abcd   running   19m
      my-project-myenvgroup-000-321dcba                            running   2m30s
      
  10. (省略可)Kubernetes サービス アカウントのステータスは、 Google Cloud consoleの Kubernetes: ワークロードの概要ページで確認できます。

    [ワークロード] に移動

他のプラットフォームでの WIF

  1. まだ行っていない場合は、APIGEE_HELM_CHARTS_HOME ディレクトリに移動します。このディレクトリから次のコマンドを実行します。
  2. Apigee オペレーター / コントローラをインストールします。
    1. ドライラン:
      helm upgrade operator apigee-operator/ \
        --install \
        --namespace APIGEE_NAMESPACE \
        --atomic \
        -f overrides.yaml \
        --dry-run=server
      
    2. チャートをインストールします。
      helm upgrade operator apigee-operator/ \
        --install \
        --namespace APIGEE_NAMESPACE \
        --atomic \
        -f overrides.yaml
      
    3. Apigee Operator のインストールを確認します。

      helm ls -n APIGEE_NAMESPACE
      
      NAME       NAMESPACE       REVISION   UPDATED                                STATUS     CHART                                       APP VERSION
      operator   apigee   3          2025-06-26 00:42:44.492009 -0800 PST   deployed   apigee-operator-1.15.1   1.15.1
      
    4. 可用性をチェックして、稼働していることを確認します。

      kubectl -n APIGEE_NAMESPACE get deploy apigee-controller-manager
      
      NAME                        READY   UP-TO-DATE   AVAILABLE   AGE
      apigee-controller-manager   1/1     1            1           34s
      
  3. Apigee データストアをインストールします。

    1. ドライラン:
      helm upgrade datastore apigee-datastore/ \
        --install \
        --namespace APIGEE_NAMESPACE \
        --atomic \
        -f overrides.yaml \
        --dry-run=server
      
    2. チャートをインストールします。

      helm upgrade datastore apigee-datastore/ \
        --install \
        --namespace APIGEE_NAMESPACE \
        --atomic \
        -f overrides.yaml
      
    3. Cassandra バックアップまたは Cassandra 復元を有効にしている場合は、関連付けられた apigee-cassandraIAM サービス アカウントの権限借用を Cassandra Kubernetes サービス アカウントに許可します。
      1. Cassandra の IAM サービス アカウントのメールアドレスを一覧表示します。

        本番環境

        gcloud iam service-accounts list --project PROJECT_ID | grep "apigee-cassandra"

        非本番環境

        gcloud iam service-accounts list --project PROJECT_ID | grep "apigee-non-prod"

        出力は次のようになります。

        本番環境

        apigee-cassandra      apigee-cassandra@my-project.iam.gserviceaccount.com      False
                          

        非本番環境

        apigee-non-prod       apigee-non-prod@my-project.iam.gserviceaccount.com      False
                          
      2. Cassandra Kubernetes サービス アカウントのリストを取得します。
        kubectl get serviceaccount -n APIGEE_NAMESPACE | grep "apigee-cassandra"

        出力は次のようになります。

        apigee-cassandra-backup-sa                       0   7m37s
        apigee-cassandra-default                         0   7m12s
        apigee-cassandra-guardrails-sa                   0   6m43s
        apigee-cassandra-restore-sa                      0   7m37s
        apigee-cassandra-schema-setup-my-project-1a2b2c4 0   7m30s
        apigee-cassandra-schema-val-my-project-1a2b2c4   0   7m29s
        apigee-cassandra-user-setup-my-project-1a2b2c4   0   7m22s
                      
      3. apigee-cassandra-backup-sa または apigee-cassandra-restore-sa Kubernetes サービス アカウントを作成した場合は、次のコマンドを使用して、各アカウントに apigee-cassandra IAM サービス アカウントの権限借用を許可します。

        本番環境

        テンプレート

        gcloud iam service-accounts add-iam-policy-binding \
          CASSANDRA_IAM_SA_EMAIL \
            --member="principal://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/POOL_ID/subject/MAPPED_SUBJECT" \
            --role=roles/iam.workloadIdentityUser

        gcloud iam service-accounts add-iam-policy-binding \
          apigee-cassandra@my-project.iam.gserviceaccount.com \
            --member="principal://iam.googleapis.com/projects/1234567890/locations/global/workloadIdentityPools/my-pool/subject/system:serviceaccount:apigee:apigee-cassandra-backup-sa" \
            --role=roles/iam.workloadIdentityUser

        非本番環境

        テンプレート

        gcloud iam service-accounts add-iam-policy-binding \
          NON_PROD_IAM_SA_EMAIL \
            --member="principal://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/POOL_ID/subject/MAPPED_SUBJECT" \
            --role=roles/iam.workloadIdentityUser

        gcloud iam service-accounts add-iam-policy-binding \
          apigee-non-prod@my-project.iam.gserviceaccount.com \
            --member="principal://iam.googleapis.com/projects/1234567890/locations/global/workloadIdentityPools/my-pool/subject/system:serviceaccount:apigee:apigee-cassandra-backup-sa" \
            --role=roles/iam.workloadIdentityUser

        ここで

        • CASSANDRA_IAM_SA_EMAIL: Cassandra IAM サービス アカウントのメールアドレス。
        • PROJECT_NUMBER: Workload Identity プールを作成したプロジェクトのプロジェクト番号
        • POOL_ID: Workload Identity プール ID。
        • MAPPED_SUBJECT: ID トークンのクレームから取得した Kubernetes ServiceAccount。ほとんどのハイブリッド インストールでは、この形式は system:serviceaccount:APIGEE_NAMESPACE:K8S_SA_NAME になります。
          • apigee-cassandra-backup-sa の場合、system:serviceaccount:apigee:apigee-cassandra-backup-sa に似たものになります。
          • apigee-cassandra-restore-sa の場合、system:serviceaccount:apigee:apigee-cassandra-restore-sa に似たものになります。
    4. 次のステップに進む前に状態をチェックして、apigeedatastore が稼働していることを確認します。

      kubectl -n APIGEE_NAMESPACE get apigeedatastore default
      
      NAME      STATE       AGE
      default   running    51s
      
  4. Apigee テレメトリーをインストールします。

    1. ドライラン:
      helm upgrade telemetry apigee-telemetry/ \
        --install \
        --namespace APIGEE_NAMESPACE \
        --atomic \
        -f overrides.yaml \
        --dry-run=server
      
    2. チャートをインストールします。

      helm upgrade telemetry apigee-telemetry/ \
        --install \
        --namespace APIGEE_NAMESPACE \
        --atomic \
        -f overrides.yaml
      
    3. 状態をチェックして、稼働していることを確認します。

      kubectl -n APIGEE_NAMESPACE get apigeetelemetry apigee-telemetry
      
      NAME               STATE     AGE
      apigee-telemetry   running   55s
      
    4. 関連付けられた apigee-metricsIAM サービス アカウントの権限借用をテレメトリー Kubernetes サービス アカウントに許可します。
      1. 指標の IAM サービス アカウントのメールアドレスを一覧表示します。

        本番環境

        gcloud iam service-accounts list --project PROJECT_ID | grep "apigee-metrics"

        出力は次のようになります。

        apigee-metrics   apigee-metrics@my-project.iam.gserviceaccount.com   False

        非本番環境

        gcloud iam service-accounts list --project PROJECT_ID | grep "apigee-non-prod"

        出力は次のようになります。

        apigee-non-prod   apigee-non-prod@my-project.iam.gserviceaccount.com   False
      2. テレメトリー Kubernetes サービス アカウントのリストを取得します。
        kubectl get serviceaccount -n APIGEE_NAMESPACE | grep "telemetry"

        出力は次のようになります。

        apigee-metrics-apigee-telemetry                    0   42m
        apigee-open-telemetry-collector-apigee-telemetry   0   37m
      3. 次のコマンドを使用して、各テレメトリー Kubernetes サービス アカウントに apigee-metrics IAM サービス アカウントの権限借用を許可します。

        本番環境

        Apigee 指標 KSA: apigee-metrics-apigee-telemetry から apigee-metrics Google IAM サービス アカウント

        コード

        gcloud iam service-accounts add-iam-policy-binding \
          METRICS_IAM_SA_EMAIL \
            --member="principal://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/POOL_ID/subject/MAPPED_SUBJECT" \
            --role=roles/iam.workloadIdentityUser

        gcloud iam service-accounts add-iam-policy-binding \
          apigee-metrics@my-project.iam.gserviceaccount.com \
            --member="principal://iam.googleapis.com/projects/1234567890/locations/global/workloadIdentityPools/my-pool/subject/system:serviceaccount:apigee:apigee-metrics-apigee-telemetry" \
            --role=roles/iam.workloadIdentityUser

        Apigee OpenTelemetry Collector KSA: apigee-open-telemetry-collector-apigee-telemetry から apigee-metrics Google IAM サービス アカウント

        コード

        gcloud iam service-accounts add-iam-policy-binding \
          METRICS_IAM_SA_EMAIL \
            --member="principal://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/POOL_ID/subject/MAPPED_SUBJECT" \
            --role=roles/iam.workloadIdentityUser

        gcloud iam service-accounts add-iam-policy-binding \
          apigee-metrics@my-project.iam.gserviceaccount.com \
            --member="principal://iam.googleapis.com/projects/1234567890/locations/global/workloadIdentityPools/my-pool/subject/system:serviceaccount:apigee:apigee-open-telemetry-collector-apigee-telemetry" \
            --role=roles/iam.workloadIdentityUser

        非本番環境

        Apigee 指標 KSA: apigee-metrics-apigee-telemetry から apigee-non-prod Google IAM サービス アカウント

        コード

        gcloud iam service-accounts add-iam-policy-binding \
          NON_PROD_IAM_SA_EMAIL \
            --member="principal://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/POOL_ID/subject/MAPPED_SUBJECT" \
            --role=roles/iam.workloadIdentityUser

        gcloud iam service-accounts add-iam-policy-binding \
          apigee-non-prod@my-project.iam.gserviceaccount.com \
            --member="principal://iam.googleapis.com/projects/1234567890/locations/global/workloadIdentityPools/my-pool/subject/system:serviceaccount:apigee:apigee-metrics-apigee-telemetry" \
            --role=roles/iam.workloadIdentityUser

        Apigee OpenTelemetry Collector KSA: apigee-open-telemetry-collector-apigee-telemetry から apigee-non-prod Google IAM サービス アカウント

        コード

        gcloud iam service-accounts add-iam-policy-binding \
          NON_PROD_IAM_SA_EMAIL \
            --member="principal://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/POOL_ID/subject/MAPPED_SUBJECT" \
            --role=roles/iam.workloadIdentityUser

        gcloud iam service-accounts add-iam-policy-binding \
          apigee-non-prod@my-project.iam.gserviceaccount.com \
            --member="principal://iam.googleapis.com/projects/1234567890/locations/global/workloadIdentityPools/my-pool/subject/system:serviceaccount:apigee:apigee-open-telemetry-collector-apigee-telemetry" \
            --role=roles/iam.workloadIdentityUser
  5. Apigee Redis をインストールします。

    1. ドライランを実行します。

      helm upgrade redis apigee-redis/ \
        --install \
        --namespace APIGEE_NAMESPACE \
        --atomic \
        -f overrides.yaml \
        --dry-run=server
      
    2. チャートをインストールします。

      helm upgrade redis apigee-redis/ \
        --install \
        --namespace APIGEE_NAMESPACE \
        --atomic \
        -f overrides.yaml
      
    3. 状態をチェックして、稼働していることを確認します。

      kubectl -n APIGEE_NAMESPACE get apigeeredis default
      
      NAME      STATE     AGE
      default   running   79s
      
  6. Apigee Ingress マネージャーをインストールします。

    1. ドライランを実行します。

      helm upgrade ingress-manager apigee-ingress-manager/ \
        --install \
        --namespace APIGEE_NAMESPACE \
        --atomic \
        -f overrides.yaml \
        --dry-run=server
      
    2. チャートをインストールします。

      helm upgrade ingress-manager apigee-ingress-manager/ \
        --install \
        --namespace APIGEE_NAMESPACE \
        --atomic \
        -f overrides.yaml
      
    3. 可用性をチェックして、稼働していることを確認します。

      kubectl -n APIGEE_NAMESPACE get deployment apigee-ingressgateway-manager
      
      NAME                            READY   UP-TO-DATE   AVAILABLE   AGE
      apigee-ingressgateway-manager   2/2     2            2           16s
      
  7. Apigee 組織をインストールします。シェルで $ORG_NAME 環境変数を設定している場合は、次のコマンドで使用できます。

    1. ドライランを実行します。

      helm upgrade $ORG_NAME apigee-org/ \
        --install \
        --namespace APIGEE_NAMESPACE \
        --atomic \
        -f overrides.yaml \
        --dry-run=server
      
    2. チャートをインストールします。

      helm upgrade $ORG_NAME apigee-org/ \
        --install \
        --namespace APIGEE_NAMESPACE \
        --atomic \
        -f overrides.yaml
      
    3. それぞれの組織の状態をチェックして、稼働していることを確認します。

      kubectl -n APIGEE_NAMESPACE get apigeeorg
      
      NAME                      STATE     AGE
      my-project-123abcd        running   4m18s
      
    4. 関連付けられた IAM サービス アカウントの権限借用を組織スコープの Kubernetes サービス アカウントに許可します。
      1. apigee-martapigee-udcaapigee-watcher コンポーネントで使用される IAM サービス アカウントのメールアドレスを一覧表示します。

        本番環境

        gcloud iam service-accounts list --project PROJECT_ID | grep "apigee-mart\|apigee-udca\|apigee-watcher"

        出力は次のようになります。

        apigee-mart      apigee-mart@my-project.iam.gserviceaccount.com      False
        apigee-udca      apigee-udca@my-project.iam.gserviceaccount.com      False
        apigee-watcher   apigee-watcher@my-project.iam.gserviceaccount.com   False
        

        Apigee ハイブリッドの収益化を使用している場合は、apigee-mint-task-scheduler サービス アカウントのメールアドレスも取得します。

        gcloud iam service-accounts list --project PROJECT_ID | grep "apigee-mint-task-scheduler"

        出力は次のようになります。

        apigee-mint-task-scheduler   apigee-mint-task-scheduler@my-project.iam.gserviceaccount.com   False
        

        非本番環境

        gcloud iam service-accounts list --project PROJECT_ID | grep "apigee-non-prod"

        出力は次のようになります。

        apigee-non-prod     apigee-non-prod@my-project.iam.gserviceaccount.com         False
                          
      2. 組織スコープの Kubernetes サービス アカウントを一覧表示します。
        kubectl get serviceaccount -n APIGEE_NAMESPACE | grep "apigee-connect-agent\|apigee-mart\|apigee-udca\|apigee-watcher"

        出力は次のようになります。

        apigee-connect-agent-my-project-123abcd         0   1h4m
        apigee-mart-my-project-123abcd                  0   1h4m
        apigee-mint-task-scheduler-my-project-123abcd   0   1h3m
        apigee-udca-my-project-123abcd                  0   1h2m
        apigee-watcher-my-project-123abcd               0   1h1m
                      
      3. 次のコマンドを使用して、関連付けられた IAM サービス アカウントの権限借用を組織スコープの Kubernetes サービス アカウントに許可します。

        本番環境

        Connect エージェント KSA: apigee-connect-agent-ORG_NAME-ORG_HASH_ID Kubernetes サービス アカウントから apigee-mart IAM サービス アカウント。

        コード

        gcloud iam service-accounts add-iam-policy-binding \
          APIGEE_MART_SA_EMAIL \
            --member="principal://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/POOL_ID/subject/MAPPED_SUBJECT" \
            --role=roles/iam.workloadIdentityUser

        gcloud iam service-accounts add-iam-policy-binding \
          apigee-mart@my-project.iam.gserviceaccount.com \
            --member="principal://iam.googleapis.com/projects/1234567890/locations/global/workloadIdentityPools/my-pool/subject/system:serviceaccount:apigee:apigee-connect-agent-my-org-123abcd" \
            --role=roles/iam.workloadIdentityUser

        MART KSA: apigee-mart-ORG_NAME-ORG_HASH_ID Kubernetes サービス アカウントから apigee-mart IAM サービス アカウント。MART と Connect エージェントは同じ IAM サービス アカウントを使用します。

        コード

        gcloud iam service-accounts add-iam-policy-binding \
          APIGEE_MART_SA_EMAIL \
            --member="principal://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/POOL_ID/subject/MAPPED_SUBJECT" \
            --role=roles/iam.workloadIdentityUser

        gcloud iam service-accounts add-iam-policy-binding \
          apigee-mart@my-project.iam.gserviceaccount.com \
            --member="principal://iam.googleapis.com/projects/1234567890/locations/global/workloadIdentityPools/my-pool/subject/system:serviceaccount:apigee:apigee-mart-my-org-123abcd" \
            --role=roles/iam.workloadIdentityUser

        Mint タスク スケジューラ KSA:Apigee ハイブリッドの収益化を使用している場合)

        apigee-mint-task-scheduler-ORG_NAME-ORG_HASH_ID Kubernetes サービス アカウントから apigee-mint-task-scheduler IAM サービス アカウント。

        コード

        gcloud iam service-accounts add-iam-policy-binding \
          APIGEE_MINT_TASK_SCHEDULER_SA_EMAIL \
            --member="principal://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/POOL_ID/subject/MAPPED_SUBJECT" \
            --role=roles/iam.workloadIdentityUser

        gcloud iam service-accounts add-iam-policy-binding \
          apigee-mint-task-scheduler@my-project.iam.gserviceaccount.com \
            --member="principal://iam.googleapis.com/projects/1234567890/locations/global/workloadIdentityPools/my-pool/subject/system:serviceaccount:apigee:apigee-mint-task-scheduler-my-org-123abcd" \
            --role=roles/iam.workloadIdentityUser

        組織をスコープとする UDCA KSA: apigee-udca-ORG_NAME-ORG_HASH_ID Kubernetes サービス アカウントから apigee-udca IAM サービス アカウント。

        コード

        gcloud iam service-accounts add-iam-policy-binding \
          APIGEE_UDCA_SA_EMAIL \
            --member="principal://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/POOL_ID/subject/MAPPED_SUBJECT" \
            --role=roles/iam.workloadIdentityUser

        gcloud iam service-accounts add-iam-policy-binding \
          apigee-udca-task-scheduler@my-project.iam.gserviceaccount.com \
            --member="principal://iam.googleapis.com/projects/1234567890/locations/global/workloadIdentityPools/my-pool/subject/system:serviceaccount:apigee:apigee-udca-my-org-123abcd" \
            --role=roles/iam.workloadIdentityUser

        Watcher KSA: apigee-watcher-ORG_NAME-ORG_HASH_ID Kubernetes サービス アカウントから apigee-watcher IAM サービス アカウント。

        コード

        gcloud iam service-accounts add-iam-policy-binding \
          APIGEE_WATCHER_SA_EMAIL \
            --member="principal://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/POOL_ID/subject/MAPPED_SUBJECT" \
            --role=roles/iam.workloadIdentityUser

        gcloud iam service-accounts add-iam-policy-binding \
          apigee-watcher@my-project.iam.gserviceaccount.com \
            --member="principal://iam.googleapis.com/projects/1234567890/locations/global/workloadIdentityPools/my-pool/subject/system:serviceaccount:apigee:apigee-watcher-my-org-123abcd" \
            --role=roles/iam.workloadIdentityUser

        非本番環境

        Connect エージェント KSA: apigee-connect-agent-ORG_NAME-ORG_HASH_ID Kubernetes サービス アカウントから apigee-non-prod IAM サービス アカウント。

        コード

        gcloud iam service-accounts add-iam-policy-binding \
          NON_PROD_IAM_SA_EMAIL \
            --member="principal://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/POOL_ID/subject/MAPPED_SUBJECT" \
            --role=roles/iam.workloadIdentityUser

        gcloud iam service-accounts add-iam-policy-binding \
          apigee-non-prod@my-project.iam.gserviceaccount.com \
            --member="principal://iam.googleapis.com/projects/1234567890/locations/global/workloadIdentityPools/my-pool/subject/system:serviceaccount:apigee:apigee-connect-agent-my-org-123abcd" \
            --role=roles/iam.workloadIdentityUser

        MART KSA: apigee-mart-ORG_NAME-ORG_HASH_ID Kubernetes サービス アカウントから apigee-non-prod IAM サービス アカウント。

        コード

        gcloud iam service-accounts add-iam-policy-binding \
          NON_PROD_IAM_SA_EMAIL \
            --member="principal://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/POOL_ID/subject/MAPPED_SUBJECT" \
            --role=roles/iam.workloadIdentityUser

        gcloud iam service-accounts add-iam-policy-binding \
          apigee-non-prod@my-project.iam.gserviceaccount.com \
            --member="principal://iam.googleapis.com/projects/1234567890/locations/global/workloadIdentityPools/my-pool/subject/system:serviceaccount:apigee:apigee-mart-my-org-123abcd" \
            --role=roles/iam.workloadIdentityUser

        Mint タスク スケジューラ KSA:Apigee ハイブリッドの収益化を使用している場合)

        apigee-mint-task-scheduler-ORG_NAME-UUIORG_HASH_IDD Kubernetes サービス アカウントから apigee-non-prod IAM サービス アカウント。

        コード

        gcloud iam service-accounts add-iam-policy-binding \
          NON_PROD_IAM_SA_EMAIL \
            --member="principal://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/POOL_ID/subject/MAPPED_SUBJECT" \
            --role=roles/iam.workloadIdentityUser

        gcloud iam service-accounts add-iam-policy-binding \
          apigee-non-prod@my-project.iam.gserviceaccount.com \
            --member="principal://iam.googleapis.com/projects/1234567890/locations/global/workloadIdentityPools/my-pool/subject/system:serviceaccount:apigee:apigee-mint-task-scheduler-my-org-123abcd" \
            --role=roles/iam.workloadIdentityUser

        組織をスコープとする UDCA KSA: apigee-udca-ORG_NAME-ORG_HASH_ID Kubernetes サービス アカウントから apigee-non-prod IAM サービス アカウント。

        コード

        gcloud iam service-accounts add-iam-policy-binding \
          NON_PROD_IAM_SA_EMAIL \
            --member="principal://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/POOL_ID/subject/MAPPED_SUBJECT" \
            --role=roles/iam.workloadIdentityUser

        gcloud iam service-accounts add-iam-policy-binding \
          apigee-non-prod@my-project.iam.gserviceaccount.com \
            --member="principal://iam.googleapis.com/projects/1234567890/locations/global/workloadIdentityPools/my-pool/subject/system:serviceaccount:apigee:apigee-udca-my-org-123abcd" \
            --role=roles/iam.workloadIdentityUser

        Watcher KSA: apigee-watcher-ORG_NAME-ORG_HASH_ID Kubernetes サービス アカウントから apigee-non-prod IAM サービス アカウント。

        コード

        gcloud iam service-accounts add-iam-policy-binding \
          NON_PROD_IAM_SA_EMAIL \
            --member="principal://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/POOL_ID/subject/MAPPED_SUBJECT" \
            --role=roles/iam.workloadIdentityUser

        gcloud iam service-accounts add-iam-policy-binding \
          apigee-non-prod@my-project.iam.gserviceaccount.com \
            --member="principal://iam.googleapis.com/projects/1234567890/locations/global/workloadIdentityPools/my-pool/subject/system:serviceaccount:apigee:apigee-watcher-my-org-123abcd" \
            --role=roles/iam.workloadIdentityUser
  8. 環境をインストールします。

    同時にインストールできる環境は 1 つだけです。--set env=ENV_NAME で環境を指定します。シェルで $ENV_NAME 環境変数を設定している場合は、次のコマンドで使用できます。

    1. ドライランを実行します。

      helm upgrade ENV_RELEASE_NAME apigee-env/ \
        --install \
        --namespace APIGEE_NAMESPACE \
        --atomic \
        --set env=$ENV_NAME \
        -f overrides.yaml \
        --dry-run=server
      

        ENV_RELEASE_NAME は、apigee-env チャートのインストールとアップグレードの追跡に使用する名前です。この名前は、インストール内の他の Helm リリース名と重複していない必要があります。通常、これは ENV_NAME と同じにします。ただし、環境と環境グループの名前が同じである場合は、環境と環境グループに対して異なるリリース名(dev-env-releasedev-envgroup-release など)を使用する必要があります。Helm でのリリースの詳細については、Helm ドキュメントの 3 つの大きなコンセプトをご覧ください。

    2. チャートをインストールします。

      helm upgrade ENV_RELEASE_NAME apigee-env/ \
        --install \
        --namespace APIGEE_NAMESPACE \
        --atomic \
        --set env=$ENV_NAME \
        -f overrides.yaml
      
    3. それぞれの環境の状態をチェックして、稼働していることを確認します。

      kubectl -n APIGEE_NAMESPACE get apigeeenv
      
      NAME                       STATE     AGE   GATEWAYTYPE
      apigee-my-project-my-env   running   3m1s
      
    4. 環境スコープの Kubernetes サービス アカウントに、関連付けられた IAM サービス アカウントの権限借用を許可します。
      1. apigee-runtimeapigee-synchronizerapigee-udca コンポーネントで使用される IAM サービス アカウントのメールアドレスを一覧表示します。

        本番環境

        gcloud iam service-accounts list --project PROJECT_ID | grep "apigee-runtime\|apigee-synchronizer\|apigee-udca"

        非本番環境

        gcloud iam service-accounts list --project PROJECT_ID | grep "apigee-non-prod"
        gcloud iam service-accounts list --project PROJECT_ID | grep "apigee-mart\|apigee-udca\|apigee-watcher"

        出力は次のようになります。

        本番環境

        apigee-runtime         apigee-runtime@my-project.iam.gserviceaccount.com         False
        apigee-synchronizer    apigee-synchronizer@my-project.iam.gserviceaccount.com      False
        apigee-udca            apigee-udca@my-project.iam.gserviceaccount.com         False
                          

        非本番環境

        apigee-non-prod     apigee-non-prod@my-project.iam.gserviceaccount.com         False
                          
      2. 環境スコープの Kubernetes サービス アカウントを一覧表示します。
        kubectl get serviceaccount -n APIGEE_NAMESPACE | grep "apigee-runtime\|apigee-synchronizer\|apigee-udca"

        出力は次のようになります。

        apigee-runtime-my-project--my-env-cdef123          0   19m
        apigee-synchronizer-my-project-my-env-cdef123      0   17m
        apigee-udca-my-project-123abcd                     0   1h29m
        apigee-udca-my-project-my-env-cdef123              0   22m
                      
      3. 次のコマンドを使用して、環境スコープの Kubernetes サービス アカウントに、関連付けられた IAM サービス アカウントの権限借用を許可します。

        本番環境

        ランタイム KSA: apigee-runtime-PROJECT_ID-ENV_NAME-ENV_HASH_ID-sa KSA から apigee-runtime Google IAM SA

        コード

        gcloud iam service-accounts add-iam-policy-binding \
          RUNTIME_IAM_SA_EMAIL \
            --member="principal://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/POOL_ID/subject/MAPPED_SUBJECT" \
            --role=roles/iam.workloadIdentityUser

        gcloud iam service-accounts add-iam-policy-binding \
          apigee-runtime@my-project.iam.gserviceaccount.com \
            --member="principal://iam.googleapis.com/projects/1234567890/locations/global/workloadIdentityPools/my-pool/subject/system:serviceaccount:apigee:apigee-runtime-my-project-my-env-cdef123" \
            --role=roles/iam.workloadIdentityUser

        Synchronizer KSA: apigee-synchronizer-PROJECT_ID-ENV_NAME-ENV_HASH_ID-sa KSA から apigee-synchronizer Google IAM SA

        コード

        gcloud iam service-accounts add-iam-policy-binding \
          SYNCHRONIZER_IAM_SA_EMAIL \
            --member="principal://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/POOL_ID/subject/MAPPED_SUBJECT" \
            --role=roles/iam.workloadIdentityUser

        gcloud iam service-accounts add-iam-policy-binding \
          apigee-synchronizer@my-project.iam.gserviceaccount.com \
            --member="principal://iam.googleapis.com/projects/1234567890/locations/global/workloadIdentityPools/my-pool/subject/system:serviceaccount:apigee:apigee-synchronizer-my-project-my-env-cdef123" \
            --role=roles/iam.workloadIdentityUser

        UDCA KSA: apigee-udca-PROJECT_ID-ENV_NAME-ENV_HASH_ID-sa KSA から apigee-udca Google IAM SA

        コード

        gcloud iam service-accounts add-iam-policy-binding \
          UDCA_IAM_SA_EMAIL \
            --member="principal://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/POOL_ID/subject/MAPPED_SUBJECT" \
            --role=roles/iam.workloadIdentityUser

        gcloud iam service-accounts add-iam-policy-binding \
          apigee-udca@my-project.iam.gserviceaccount.com \
            --member="principal://iam.googleapis.com/projects/1234567890/locations/global/workloadIdentityPools/my-pool/subject/system:serviceaccount:apigee:apigee-udca-my-project-my-env-cdef123" \
            --role=roles/iam.workloadIdentityUser

        非本番環境

        ランタイム KSA: apigee-runtime-PROJECT_ID-ENV_NAME-ENV_HASH_ID-sa KSA から apigee-non-prod Google IAM SA

        コード

        gcloud iam service-accounts add-iam-policy-binding \
          NON_PROD_IAM_SA_EMAIL \
            --member="principal://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/POOL_ID/subject/MAPPED_SUBJECT" \
            --role=roles/iam.workloadIdentityUser

        gcloud iam service-accounts add-iam-policy-binding \
          apigee-non-prod@my-project.iam.gserviceaccount.com \
            --member="principal://iam.googleapis.com/projects/1234567890/locations/global/workloadIdentityPools/my-pool/subject/system:serviceaccount:apigee:apigee-runtime-my-project-my-env-cdef123" \
            --role=roles/iam.workloadIdentityUser

        非本番環境

        Synchronizer KSA: apigee-synchronizer-PROJECT_ID-ENV_NAME-ENV_HASH_ID-sa KSA から apigee-non-prod Google IAM SA

        コード

        gcloud iam service-accounts add-iam-policy-binding \
          NON_PROD_IAM_SA_EMAIL \
            --member="principal://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/POOL_ID/subject/MAPPED_SUBJECT" \
            --role=roles/iam.workloadIdentityUser

        gcloud iam service-accounts add-iam-policy-binding \
          apigee-non-prod@my-project.iam.gserviceaccount.com \
            --member="principal://iam.googleapis.com/projects/1234567890/locations/global/workloadIdentityPools/my-pool/subject/system:serviceaccount:apigee:apigee-synchronizer-my-project-my-env-cdef123" \
            --role=roles/iam.workloadIdentityUser

        非本番環境

        UDCA KSA: apigee-udca-PROJECT_ID-ENV_NAME-ENV_HASH_ID-sa KSA から apigee-non-prod Google IAM SA

        コード

        gcloud iam service-accounts add-iam-policy-binding \
          NON_PROD_IAM_SA_EMAIL \
            --member="principal://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/POOL_ID/subject/MAPPED_SUBJECT" \
            --role=roles/iam.workloadIdentityUser

        gcloud iam service-accounts add-iam-policy-binding \
          apigee-non-prod@my-project.iam.gserviceaccount.com \
            --member="principal://iam.googleapis.com/projects/1234567890/locations/global/workloadIdentityPools/my-pool/subject/system:serviceaccount:apigee:apigee-udca-my-project-my-env-cdef123" \
            --role=roles/iam.workloadIdentityUser
  9. 環境グループ(virtualhosts)をインストールします。
    1. 一度にインストールできる環境グループ(virtualhost)は 1 つだけです。--set envgroup=ENV_GROUP を使用して環境グループを指定します。シェルで $ENV_GROUP 環境変数を設定している場合は、次のコマンドで使用できます。overrides.yaml ファイルに記載されている env グループそれぞれに対して、次のコマンドを繰り返します。

      ドライランを実行します。

      helm upgrade ENV_GROUP_RELEASE_NAME apigee-virtualhost/ \
        --install \
        --namespace APIGEE_NAMESPACE \
        --atomic \
        --set envgroup=$ENV_GROUP \
        -f overrides.yaml \
        --dry-run=server
      

        ENV_GROUP_RELEASE_NAME は、apigee-virtualhosts チャートのインストールとアップグレードの追跡に使用する名前です。この名前は、インストール内の他の Helm リリース名と重複していない必要があります。通常、これは ENV_GROUP と同じにします。ただし、環境グループの名前がインストール環境の環境と同じである場合は、環境グループと環境に異なるリリース名(dev-envgroup-releasedev-env-release など)を使用する必要があります。Helm でのリリースの詳細については、Helm ドキュメントの 3 つの大きなコンセプトをご覧ください。

    2. チャートをインストールします。

      helm upgrade ENV_GROUP_RELEASE_NAME apigee-virtualhost/ \
        --install \
        --namespace APIGEE_NAMESPACE \
        --atomic \
        --set envgroup=$ENV_GROUP \
        -f overrides.yaml
      
    3. ApigeeRoute(AR)の状態を確認します。

      virtualhosts をインストールすると、ApigeeRouteConfig(ARC)が作成されます。これにより、Apigee ウォッチャーがコントロール プレーンから env グループ関連の詳細を pull した時点で、ApigeeRoute(AR)が内部で作成されます。このため、対応する AR の状態が実行中であることを確認します。

      kubectl -n APIGEE_NAMESPACE get arc
      
      NAME                                STATE   AGE
      apigee-org1-dev-egroup                       2m
      
      kubectl -n APIGEE_NAMESPACE get ar
      
      NAME                                                        STATE     AGE
      apigee-ingressgateway-internal-chaining-my-project-123abcd   running   19m
      my-project-myenvgroup-000-321dcba                            running   2m30s
      

次のステップ

次のステップでは、Apigee Ingress ゲートウェイを構成し、プロキシをデプロイしてインストールをテストします。

(次)ステップ 1: Apigee ingress を公開する 2