Apigee ハイブリッドの収益性の確保を有効にする

概要

このドキュメントでは、ハイブリッド組織で Apigee の収益性の確保機能の定期料金、チャージ料金、設定料金を有効にする手順について説明します。

前提条件

手順

Apigee ハイブリッドの収益化で定期的な料金、チャージ料金、設定料金を有効にするには、apigee-mint-task-scheduler Google サービス アカウントを作成して設定し、Pub/Sub データ パイプラインへのアクセス権を付与する必要があります。

  1. Helm チャートのバージョン 1.14.3 をまだダウンロードしていない場合は、次のコマンドを使用して Helm チャートを pull します。

    $APIGEE_HELM_CHARTS_HOME ディレクトリで、pull コマンドを使用して、すべての Apigee ハイブリッド Helm チャートをローカル ストレージにコピーします。

    export CHART_REPO=oci://us-docker.pkg.dev/apigee-release/apigee-hybrid-helm-charts
    export CHART_VERSION=1.14.3
    helm pull $CHART_REPO/apigee-operator --version $CHART_VERSION --untar
    helm pull $CHART_REPO/apigee-datastore --version $CHART_VERSION --untar
    helm pull $CHART_REPO/apigee-env --version $CHART_VERSION --untar
    helm pull $CHART_REPO/apigee-ingress-manager --version $CHART_VERSION --untar
    helm pull $CHART_REPO/apigee-org --version $CHART_VERSION --untar
    helm pull $CHART_REPO/apigee-redis --version $CHART_VERSION --untar
    helm pull $CHART_REPO/apigee-telemetry --version $CHART_VERSION --untar
    helm pull $CHART_REPO/apigee-virtualhost --version $CHART_VERSION --untar
    
  2. apigee-mint-task-scheduler サービス アカウントを作成します。

    apigee-mint-task-scheduler サービス アカウントをまだ作成していない場合は、create-service-account ツールを使用して作成します。ハイブリッドの新規インストールの一環としてサービス アカウントを作成する方法については、ステップ 4: サービス アカウントを作成するをご覧ください。

    1. $APIGEE_HELM_CHARTS_HOME ディレクトリで create-service-account ツールを見つけます。
      $APIGEE_HELM_CHARTS_HOME/
          └── apigee-operator/
              └── etc/
                  └── tools/
                      └── create-service-account

      create-service-account を実行できることを確認します。チャートをダウンロードしたばかりの場合は、create-service-account ファイルが実行可能モードになっていない可能性があります。APIGEE_HELM_CHARTS_HOME ディレクトリで、次のコマンドを実行します。

      $APIGEE_HELM_CHARTS_HOME/apigee-operator/etc/tools/create-service-account --help

      出力に permission denied と表示された場合は、ファイルを実行可能にする必要があります。たとえば、Linux、MacOS、UNIX、Windows エクスプローラーでは chmod を、Windows では icacls コマンドを使用します。例:

      chmod +x $APIGEE_HELM_CHARTS_HOME/apigee-operator/etc/tools/create-service-account
    2. 次のコマンドを使用して、apigee-mint-task-scheduler サービス アカウントを作成し、ダウンロードした証明書ファイルを apigee-org チャート ディレクトリに保存します。
      $APIGEE_HELM_CHARTS_HOME/apigee-operator/etc/tools/create-service-account \
        --profile apigee-mint-task-scheduler \
        --env prod \
        --dir $APIGEE_HELM_CHARTS_HOME/apigee-org
  3. apigee-mart サービス アカウントと apigee-mint-task-scheduler サービス アカウントのコントロール プレーン アクセスを有効にします。

    apigee-mart サービス アカウントと apigee-mint-task-scheduler サービス アカウントのコントロール プレーン アクセスをまだ有効にしていない場合は、次の手順で有効にします。ハイブリッドの新規インストールの一環としてコントロール プレーンのアクセスを有効にする方法については、ステップ 7: コントロール プレーンのアクセスを有効にするをご覧ください。

    1. Apigee ハイブリッド組織に関連付けられている Google Cloud プロジェクトのオーナーでない場合は、Google Cloud ユーザー アカウントに roles/apigee.admin(Apigee 組織管理者)ロールがあることを確認してください。次のコマンドで、割り当てられているロールを確認できます。
      gcloud projects get-iam-policy ${PROJECT_ID}  \
        --flatten="bindings[].members" \
        --format='table(bindings.role)' \
        --filter="bindings.members:your_account_email"
      

      出力に roles/apigee.admin が含まれていない場合は、ステップ 7: コントロール プレーンへのアクセスを有効にするでロールを追加する手順を確認するか、ロールを持つユーザーにこの手順を実施してもらいます。

    2. 次のコマンドを使用して updateControlPlaneAccess API を呼び出し、必要な権限を有効にします。

      データ所在地を使用しない場合

      curl -X PATCH -H "Authorization: Bearer $(gcloud auth print-access-token)" \
        -H "Content-Type:application/json" \
        "https://apigee.googleapis.com/v1/organizations/$ORG_NAME/controlPlaneAccess?update_mask=analytics_publisher_identities" \
        -d "{\"analytics_publisher_identities\": [\"serviceAccount:apigee-mart@$ORG_NAME.iam.gserviceaccount.com\",\"serviceAccount:apigee-mint-task-scheduler@$ORG_NAME.iam.gserviceaccount.com\",\"serviceAccount:apigee-runtime@$ORG_NAME.iam.gserviceaccount.com\"]}"
      

      ここで、次のメールアドレスはサービス アカウントのメールアドレスです。

      • apigee-mart@${ORG_NAME}.iam.gserviceaccount.com
      • apigee-mint-task-scheduler@${ORG_NAME}.iam.gserviceaccount.com
      • apigee-runtime@${ORG_NAME}.iam.gserviceaccount.com

      データ所在地

      curl -X PATCH -H "Authorization: Bearer $(gcloud auth print-access-token)" \
        -H "Content-Type:application/json" \
        "https://$CONTROL_PLANE_LOCATION-apigee.googleapis.com/v1/organizations/$ORG_NAME/controlPlaneAccess?update_mask=analytics_publisher_identities" \
        -d "{\"analytics_publisher_identities\": [\"serviceAccount:apigee-mart@$ORG_NAME.iam.gserviceaccount.com\",\"serviceAccount:apigee-mint-task-scheduler@$ORG_NAME.iam.gserviceaccount.com\",\"serviceAccount:apigee-runtime@$ORG_NAME.iam.gserviceaccount.com\"]}"
      

      ここで

      • CONTROL_PLANE_LOCATION はハイブリッド インストールでデータ所在地を使用する場合のコントロール プレーン データのロケーションです。お客様のコアコンテンツ(プロキシ バンドルなど)が保存されるロケーション。リストについては、使用可能な Apigee API コントロール プレーンのリージョンをご覧ください。
      • サービス アカウントのメールアドレスは次のとおりです。

        • apigee-mart@${ORG_NAME}.iam.gserviceaccount.com
        • apigee-mint-task-scheduler@${ORG_NAME}.iam.gserviceaccount.com
        • apigee-runtime@${ORG_NAME}.iam.gserviceaccount.com
    3. apigee-mart サービス アカウントと apigee-mint-task-scheduler サービス アカウントのコントロール プレーン アクセスを確認します。

      データ所在地を使用しない場合

      curl -X GET -H "Authorization: Bearer $(gcloud auth print-access-token)" \
        -H "Content-Type:application/json" \
        "https://apigee.googleapis.com/v1/organizations/$ORG_NAME/controlPlaneAccess"

      データ所在地

      curl -X GET -H "Authorization: Bearer $(gcloud auth print-access-token)" \
        -H "Content-Type:application/json" \
        "https://$CONTROL_PLANE_LOCATION-apigee.googleapis.com/v1/organizations/$ORG_NAME/controlPlaneAccess"

      出力には、次のように apigee-martapigee-mint-task-schedulerapigee-runtime のサービス アカウントが含まれています。

      {
        "synchronizerIdentities": [
          "serviceAccount:apigee-synchronizer@$ORG_NAME.iam.gserviceaccount.com"
        ],
        "analyticsPublisherIdentities": [
          "serviceAccount:apigee-mart@$ORG_NAME.iam.gserviceaccount.com",
          "serviceAccount:apigee-mint-task-scheduler@$ORG_NAME.iam.gserviceaccount.com",
          "serviceAccount:apigee-runtime@$ORG_NAME.iam.gserviceaccount.com"
        ]
      }
  4. 収益性の確保に固有のスタンザを overrides.yaml ファイルに追加します。

    次のスタンザを overrides.yaml ファイルに追加します。

    runtime:
      image:
        url: "gcr.io/apigee-release/hybrid/apigee-runtime"
        tag: "1.14.3" #must be 1.14.3 or higher.
    
    mintTaskScheduler:
      # if using stored SA cert files:
      serviceAccountPath: MINT_TASK_SCHEDULER_SA_CERT_FILE.json
      # if using stored Kubernetes secrets:
      serviceAccountRef: MINT_TASK_SCHEDULER_SA_K8S_SECRET
      # if using Workload Identity on GKE:
      gsa: "apigee-mint-task-scheduler@PROJECT_ID.iam.gserviceaccount.com"
    
    # or if using Vault:
    serviceAccountSecretProviderClass: apigee-orgsakeys-spc
    

    Kubernetes Secret を使用している場合は、Kubernetes Secret へのデータの保存をご覧ください。

    Vault を使用している場合は、Hashicorp Vault へのサービス アカウント キーの保存をご覧ください。

    Vault を使用している場合は、組織固有のシークレット プロバイダ クラスに mint が追加されていることを確認してください。SecretProviderClass オブジェクトを作成するをご覧ください。

  5. 変更を apigee-operatorapigee-orgapigee-env の各チャートに適用します。

    $ORG_NAME 環境変数と APIGEE_NAMESPACE 環境変数を設定している場合は、次のコマンドで使用できます。

    1. オペレーターをインストールします。

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

      helm upgrade operator apigee-operator/ \
        --install \
        --namespace $APIGEE_NAMESPACE \
        --atomic \
        -f overrides.yaml \
        --dry-run=server
      

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

      helm upgrade operator apigee-operator/ \
        --install \
        --namespace $APIGEE_NAMESPACE \
        --atomic \
        -f overrides.yaml
      
    2. Apigee 組織をインストールします。

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

      helm upgrade $ORG_NAME apigee-org/ \
        --install \
        --namespace $APIGEE_NAMESPACE \
        --atomic \
        -f overrides.yaml \
        --dry-run=server
      

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

      helm upgrade $ORG_NAME apigee-org/ \
        --install \
        --namespace $APIGEE_NAMESPACE \
        --atomic \
        -f overrides.yaml
      
    3. 環境をインストールします。この手順を環境ごとに繰り返します。

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

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

      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 つの大きなコンセプトをご覧ください。

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

      helm upgrade ENV_RELEASE_NAME apigee-env/ \
        --install \
        --namespace $APIGEE_NAMESPACE \
        --atomic \
        --set env=$ENV_NAME \
        -f overrides.yaml
      
  6. GKE 上の Workload Identity のみ: apigee-mint-task-scheduler サービス アカウントの Workload Identity を構成します。

    新規インストールを行う場合は、ステップ 11(省略可): Workload Identity を構成するの手順に加えて、この手順を実施します。

    apigee-org チャートに対して --dry-run フラグを使用して helm upgrade を実行すると、正しい Google サービス アカウント名と Kubernetes サービス アカウント名を使用して Workload Identity を構成するために必要なコマンドが出力に含まれます。

    1. apigee-org の Workload Identity を設定するコマンドを取得し、出力の NOTES: でコマンドを実行します。

      helm upgrade $ORG_NAME apigee-org/ \
        --namespace $NAMESPACE \
        -f overrides.yaml \
        --dry-run=server

      出力には、NOTES: の下に次のような手順が含まれます。

      NOTES:
      ...
      For organization GKE Workload Identity, please make sure to add the below membership to the IAM policy binding using the respective Kubernetes SA (KSA).
      gcloud iam service-accounts add-iam-policy-binding apigee-mint-task-scheduler@PROJECT_ID.iam.gserviceaccount.com \
            --role roles/iam.workloadIdentityUser \
            --member "serviceAccount:PROJECT_ID.svc.id.goog[APIGEE_NAMESPACE/apigee-mint-task-scheduler-PROJECT_ID-UNIQUE_ID-sa]" \
            --project PROJECT_ID
      

      Kubernetes サービス アカウント名の形式は apigee-mint-task-scheduler-PROJECT_ID-UNIQUE_ID です。

    2. コマンドを実行して、apigee-mint-task-scheduler の Workload Identity を設定します。

関連情報

  • Apigee の収益化の詳細については、Apigee 収益化を有効にするをご覧ください。
  • mintTaskScheduler.serviceAccountPath: apigee-mint-task-scheduler サービス アカウントのサービス アカウント キー ファイルのパスを設定します。
  • mintTaskScheduler.serviceAccountRef: apigee-mint-task-scheduler サービス アカウントのサービス アカウント キーを含む Kubernetes Secret を設定します。
  • mintTaskScheduler.gsa: apigee-mint-task-scheduler サービス アカウントの Google サービス アカウントを設定します。これはサービス アカウントのメールアドレスである必要があります。