概要
このドキュメントでは、ハイブリッド組織で Apigee の収益性の確保機能の定期料金、チャージ料金、設定料金を有効にする手順について説明します。
前提条件
- Apigee ハイブリッド バージョン 1.15.1 以降。アップグレード手順については、Apigee ハイブリッドのアップグレードをご覧ください。
- Apigee ハイブリッド プロジェクトで収益性の確保が有効になっている。Apigee 収益性の確保を有効にするをご覧ください。
手順
Apigee ハイブリッドの収益化で定期的な料金、チャージ料金、設定料金を有効にするには、apigee-mint-task-scheduler
Google サービス アカウントを作成して設定し、Pub/Sub データ パイプラインへのアクセス権を付与する必要があります。
- Helm チャートのバージョン 1.15.1 をまだダウンロードしていない場合は、次のコマンドを使用して 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.15.1
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
apigee-mint-task-scheduler
サービス アカウントを作成します。apigee-mint-task-scheduler
サービス アカウントをまだ作成していない場合は、create-service-account
ツールを使用して作成します。ハイブリッドの新規インストールの一環としてサービス アカウントを作成する方法については、ステップ 4: サービス アカウントを作成するをご覧ください。-
$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
-
次のコマンドを使用して、
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
-
$APIGEE_HELM_CHARTS_HOME ディレクトリで
apigee-mart
サービス アカウントとapigee-mint-task-scheduler
サービス アカウントのコントロール プレーン アクセスを有効にします。apigee-mart
サービス アカウントとapigee-mint-task-scheduler
サービス アカウントのコントロール プレーン アクセスをまだ有効にしていない場合は、次の手順で有効にします。ハイブリッドの新規インストールの一環としてコントロール プレーンのアクセスを有効にする方法については、ステップ 7: コントロール プレーンのアクセスを有効にするをご覧ください。- 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: コントロール プレーンへのアクセスを有効にするでロールを追加する手順を確認するか、ロールを持つユーザーにこの手順を実施してもらいます。
- 次のコマンドを使用して 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
-
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-mart
、apigee-mint-task-scheduler
、apigee-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" ] }
- Apigee ハイブリッド組織に関連付けられている Google Cloud プロジェクトのオーナーでない場合は、Google Cloud ユーザー アカウントに roles/apigee.admin(Apigee 組織管理者)ロールがあることを確認してください。次のコマンドで、割り当てられているロールを確認できます。
- 収益性の確保に固有のスタンザを
overrides.yaml
ファイルに追加します。次のスタンザを
overrides.yaml
ファイルに追加します。runtime: image: url: "gcr.io/apigee-release/hybrid/apigee-runtime" tag: "1.15.1" #must be 1.15.1 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
オブジェクトを作成するをご覧ください。 -
変更を
apigee-operator
、apigee-org
、apigee-env
の各チャートに適用します。$ORG_NAME 環境変数と APIGEE_NAMESPACE 環境変数を設定している場合は、次のコマンドで使用できます。
- オペレーターをインストールします。
ドライランを実行します。
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
- 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
- 環境をインストールします。この手順を環境ごとに繰り返します。
同時にインストールできる環境は 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-release
とdev-envgroup-release
など)を使用する必要があります。Helm でのリリースの詳細については、Helm ドキュメントの 3 つの大きなコンセプトをご覧ください。チャートをインストールします。
helm upgrade ENV_RELEASE_NAME apigee-env/ \ --install \ --namespace $APIGEE_NAMESPACE \ --atomic \ --set env=$ENV_NAME \ -f overrides.yaml
- オペレーターをインストールします。
- GKE 上の Workload Identity のみ:
apigee-mint-task-scheduler
サービス アカウントの Workload Identity を構成します。新規インストールを行う場合は、ステップ 11(省略可): Workload Identity を構成するの手順に加えて、この手順を実施します。
apigee-org
チャートに対して--dry-run
フラグを使用して helm upgrade を実行すると、正しい Google サービス アカウント名と Kubernetes サービス アカウント名を使用して Workload Identity を構成するために必要なコマンドが出力に含まれます。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]" \ --project PROJECT_ID
Kubernetes サービス アカウント名の形式は
apigee-mint-task-scheduler-PROJECT_ID-UNIQUE_ID
です。- コマンドを実行して、
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 サービス アカウントを設定します。これはサービス アカウントのメールアドレスである必要があります。