このページの内容は Apigee を対象としています。Apigee ハイブリッドは対象としていません。
Apigee Edge のドキュメントを表示する。
このページでは、Apigee APIM Operator for Kubernetes をインストールして構成するために必要な手順について説明します。APIM Operator を使用する利点については、Apigee APIM Operator for Kubernetes の概要をご覧ください。
始める前に
APIM Operator のインストールを開始する前に、手順を完了するのに必要なロールと権限があることと、APIM Operator: 始める前にで説明されている前提条件タスクを完了していることを確認してください。
必要なロール
APIM Operator のインストールに必要な権限を取得するには、組織で次の IAM ロールを付与するよう管理者に依頼してください。
-
GKE クラスタを作成して管理する: コンテナ管理者 (
roles/container.admin
) -
サービス アカウントを作成して管理する: サービス アカウント管理者(
roles/iam.serviceAccountAdmin
) -
サービス拡張機能を作成して管理する: Service Extensions 管理者(
roles/networkservices.serviceExtensionsAdmin
) - ネットワーク エンドポイント グループ(NEG)を作成して管理する: Compute インスタンス管理者(
roles/compute.instanceAdmin
) - バックエンド サービスを作成して管理する: Compute ロードバランサ管理者(
roles/compute.loadBalancerAdmin
) -
Apigee リソースを作成して管理する: Apigee 管理者(
roles/apigee.admin
)
ロールの付与については、プロジェクト、フォルダ、組織に対するアクセス権の管理をご覧ください。
必要な権限は、カスタムロールや他の事前定義ロールから取得することもできます。
APIM Operator をインストールして構成する
次のセクションでは、APIM Operator のインストールと構成に必要な手順について説明します。
- 環境変数を設定する。
- 必要な API を有効にする。
- 認証情報を取得して構成する。
- APIM Operator をインストールする。
- Workload Identity を作成する。
- Apigee 環境を作成する。
- GKE Gateway の設定を確認する。
環境変数を設定する
Apigee インスタンスを含む Google Cloud プロジェクトで、次のコマンドを使用して環境変数を設定します。
export PROJECT_ID=PROJECT_ID
export CLUSTER_NAME=CLUSTER_NAME
export REGION=REGION
export APIGEE_ORG=APIGEE_ORG
ここで
PROJECT_ID
: Apigee インスタンスを含むプロジェクトの ID。CLUSTER_NAME
: GKE クラスタの名前。REGION
: GKE クラスタのリージョン。APIGEE_ORG
はPROJECT_ID
と同じ値に設定されます。
環境変数が正しく設定されていることを確認するには、次のコマンドを実行します。
echo $PROJECT_ID $CLUSTER_NAME $REGION $APIGEE_ORG
必要な API を有効にする
APIM Operator には、次の API へのアクセス権が必要です。
名前 | タイトル |
---|---|
apigee.googleapis.com |
Apigee API |
compute.googleapis.com |
Compute Engine API |
networkservices.googleapis.com |
Network Services API |
container.googleapis.com |
Google Kubernetes Engine API |
次のコマンドを使用して、必要な API が有効になっていることを確認します。
gcloud services list --project=$PROJECT_ID
コマンド出力に必要な API が表示されない場合は、次のコマンドを使用して有効にします。
gcloud services enable apigee.googleapis.com --project=$PROJECT_ID
gcloud services enable compute.googleapis.com --project=$PROJECT_ID
gcloud services enable networkservices.googleapis.com --project=$PROJECT_ID
gcloud services enable container.googleapis.com --project=$PROJECT_ID
認証情報を取得して構成する
クラスタの認証情報を取得し、サービス アカウントを作成して Google Cloud サービスに接続します。
次のコマンドを使用して、クラスタの認証情報を取得します。
gcloud container clusters get-credentials $CLUSTER_NAME --location=$REGION --project=$PROJECT_ID
これらの認証情報は、前提条件の手順で作成された GKE クラスタとの通信に使用されます。
- サービス アカウントの認証情報を設定して、 Google Cloud サービスに接続します。
gcloud iam service-accounts create apigee-apim-gsa
- 次のコマンドを使用して、作成したサービス アカウントに必要なロールと権限を付与します。
- Apigee 管理者ロール: Apigee リソースの作成と管理に必要です。
gcloud projects add-iam-policy-binding $PROJECT_ID \ --member "serviceAccount:apigee-apim-gsa@$PROJECT_ID.iam.gserviceaccount.com" \ --role "roles/apigee.admin"
- サービス拡張機能管理者ロール: サービス拡張機能の作成と管理に必要です。
gcloud projects add-iam-policy-binding $PROJECT_ID \ --member "serviceAccount:apigee-apim-gsa@$PROJECT_ID.iam.gserviceaccount.com" \ --role "roles/networkservices.serviceExtensionsAdmin"
- ネットワーキング管理者ロール: サービス拡張機能を使用した Apigee へのアクセス管理に必要です。
gcloud projects add-iam-policy-binding $PROJECT_ID \ --member "serviceAccount:apigee-apim-gsa@$PROJECT_ID.iam.gserviceaccount.com" \ --role "roles/compute.networkAdmin"
- ロードバランサ管理者ロール: ネットワーク エンドポイント グループ(NEG)とバックエンド サービス間のアクセス管理に必要です。
gcloud projects add-iam-policy-binding $PROJECT_ID \ --member "serviceAccount:apigee-apim-gsa@$PROJECT_ID.iam.gserviceaccount.com" \ --role "roles/compute.loadBalancerAdmin"
gcloud projects add-iam-policy-binding $PROJECT_ID \ --member "serviceAccount:apigee-apim-gsa@$PROJECT_ID.iam.gserviceaccount.com" \ --role "roles/iam.workloadIdentityUser"
- Apigee 管理者ロール: Apigee リソースの作成と管理に必要です。
Workload Identity を作成する
次の手順で APIM Operator に helm
をインストールすると、apim
Namespace に apim-ksa
という名前の必要な Kubernetes サービス アカウント(KSA)が作成されます。作成時に KSA には、必要な Apigee リソースやとサービス ネットワーキング リソースにアクセスする際に APIM Operator が使用する Workload Identity との関連付けに必要なアノテーションが含まれます。
Workload Identity を作成するには、次のコマンドを使用します。
gcloud iam service-accounts add-iam-policy-binding apigee-apim-gsa@$PROJECT_ID.iam.gserviceaccount.com --role roles/iam.workloadIdentityUser --member "serviceAccount:$PROJECT_ID.svc.id.goog[apim/apim-ksa]"
このコマンドは、認証情報を取得して構成する際に作成した Google サービス アカウントと KSA をバインドして、workloadIdentityUser
ロールを割り当てます。
Workload Identity の変更がシステム全体に反映されるまで数分かかることがあります(7 分以上かかる場合もあります)。
Workload Identity が作成されたことを確認するには、次のコマンドを使用します。
gcloud config set project $PROJECT_ID
kubectl run --rm -it --image google/cloud-sdk:slim \ --namespace apim workload-identity-test \ --overrides='{ "spec": { "serviceAccountName": "apim-ksa" } }' \ -- gcloud auth list
出力は次のようになります。
Credentialed Accounts ACTIVE ACCOUNT * GSA@$PROJECT_ID.iam.gserviceaccount.com
カスタム リソース定義(CRD)と APIM Operator をインストールする
Kubernetes のカスタム リソース定義(CRD)と APIM Operator をインストールします。
- APIM Operator の Namespace を作成します。
kubectl create ns apim
- APIM Operator のカスタム リソース定義(CRD)をインストールします。
helm install apigee-apim-crds -n apim \ oci://us-docker.pkg.dev/apigee-release/apigee-k8s-tooling-helm-charts/apigee-apim-operator-crds \ --version 1.0.0 \ --atomic
- APIM Operator をインストールします。
helm install apigee-apim-operator -n apim \ oci://us-docker.pkg.dev/apigee-release/apigee-k8s-tooling-helm-charts/apigee-apim-operator-helm \ --version 1.0.0 \ --set projectId=$PROJECT_ID \ --set serviceAccount=apigee-apim-gsa@$PROJECT_ID.iam.gserviceaccount.com \ --set apigeeOrg=$PROJECT_ID \ --set generateEnv=TRUE \ --atomic
- インストールが正常に完了したことを確認します。
helm list -n apim
出力は次のようになります。
NAME NAMESPACE REVISION UPDATED STATUS CHART APP VERSION apigee-apim-crds apim 1 2025-02-01 00:17:03.399810627 +0000 UTC deployed apigee-apim-operator-crds-1.0.0 1.0.0 apigee-apim-operator apim 1 2025-02-01 00:15:00.362829981 +0000 UTC deployed apigee-apim-operator-helm-1.0.0 1.0.0
- 必要なアノテーションを含む KSA が作成されたことを確認します。
kubectl describe serviceaccounts apim-ksa -n apim
出力は次のようになります。
Name: apim-ksa Namespace: apim ... Annotations: iam.gke.io/gcp-service-account: apigee-apim-gsa@my-project-id.iam.gserviceaccount.com
- APIM Operator がクラスタの Pod で稼働していることを確認します。
kubectl get pods -n apim
出力は次のようになります。
NAME READY STATUS RESTARTS AGE apigee-apim-operator-8559d4994b-h55fl 1/1 Running 0 8m34s
STATUS
がRunning
でない場合、またはREADY
に1/1
が表示されない場合は、APIM Operator のトラブルシューティングを参照してインストールのトラブルシューティングを行います。
Apigee 環境を作成する
前の手順で generateEnv=TRUE
を使用して APIM Operator をインストールした場合、APIM 拡張機能ポリシーが作成されて適用されると、オペレーターは新しい Apigee 環境を作成します。新しい環境の名前には接頭辞 apim-enabled-dep-env
が付きます。
generateEnv=FALSE
を使用して APIM Operator をインストールした場合は、新しい Apigee 環境を作成する必要があります。
curl
コマンドに必要なTOKEN
を設定します。export TOKEN=$(gcloud auth print-access-token)
- 次のいずれかのコマンドを使用して環境を作成します。
- サブスクリプション 2021 を利用している組織の場合:
curl -X POST "https://apigee.googleapis.com/v1/organizations/$APIGEE_ORG/environments" -H \ "Authorization: Bearer $TOKEN" -H "content-type:application/json" \ -d '{ "name": "ENV_NAME", "displayName": "ENV_NAME", "state": "ACTIVE", "deploymentType": "PROXY", "apiProxyType": "PROGRAMMABLE", "properties": { "property": [ { "name": "apigee-service-extension-enabled", "value": "true" } ] } }'
ここで、
ENV_NAME
は作成する環境の名前です。 - サブスクリプション 2024 と従量課金制を利用している組織の場合:
curl -i -X POST -H "Authorization: Bearer $TOKEN" "https://apigee.googleapis.com/v1/organizations/$APIGEE_ORG/environments" -H "Content-Type:application/json" -d '{ "name": "ENV_NAME", "displayName": "ENV_NAME", "state": "ACTIVE", "deploymentType": "PROXY", "apiProxyType": "PROGRAMMABLE", "type" : "COMPREHENSIVE", "properties": { "property": [ { "name": "apigee-service-extension-enabled", "value": "true" } ] } }'
ここで:
ENV_NAME
: 作成する環境の名前。ENV_TYPE
: 作成する環境のタイプ。たとえば、INTERMEDIATE
や、COMPREHENSIVE
です。
環境が正常に作成されたことを確認するには:
curl -i -H "Authorization: Bearer $TOKEN" \ "https://apigee.googleapis.com/v1/organizations/$APIGEE_ORG/environments"
- サブスクリプション 2021 を利用している組織の場合:
- 環境を Apigee インスタンスに接続します。
curl -i -X POST -H "Authorization: Bearer $TOKEN" \ "https://apigee.googleapis.com/v1/organizations/$APIGEE_ORG/instances/INSTANCE_NAME/attachments" \ -H "Content-Type:application/json" -d '{"environment": "ENV_NAME"}'
ここで
INSTANCE_NAME
: Apigee インスタンスの名前。ENV_NAME
: 前の手順で作成した環境の名前。
環境接続オペレーションのステータスを確認するには:
curl -X GET -H "Authorization: Bearer $TOKEN" \ "https://apigee.googleapis.com/v1/organizations/$APIGEE_ORG/operations/OPERATION_ID"
ここで、
OPERATION_ID
は環境接続オペレーションの ID です。
トラブルシューティング
APIM Operator のインストール中に問題が発生した場合は、APIM Operator のトラブルシューティングで一般的なエラーの解決策をご覧ください。