このページの内容は Apigee に適用されます。Apigee ハイブリッドには適用されません。
Apigee Edge のドキュメントを表示する。
このページでは、Kubernetes 用 Apigee APIM Operator(プレビュー版)をインストールして構成するために必要な手順について説明します。APIM Operator を使用するメリットについては、 Kubernetes 用の Apigee APIM Operator の概要をご覧ください。
始める前に
APIM Operator のインストールを開始する前に、手順を完了するために必要なロールと権限があることと、APIM Operator: 始める前にに記載されている前提条件のタスクを完了していることを確認してください。
必要なロール
APIM Operator のインストールに必要な権限を取得するには、組織に対する次の IAM ロールを付与するよう管理者に依頼してください。
-
GKE クラスタを作成して管理する: コンテナ管理者 (
roles/container.admin
) -
サービス アカウントを作成、管理する: サービス アカウント管理者 (
roles/iam.serviceAccountAdmin
) -
Service Extensions の作成と管理: 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 には、APIM Operator が必要な Apigee リソースと Service Networking リソースにアクセスするために使用する 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\ -- gcloud auth list
出力は次のようになります。
Credentialed Accounts ACTIVE ACCOUNT * GSA@PROJECT_ID.iam.gserviceaccount.com
カスタム リソース定義(CRD)と APIM Operator をインストールする
Kubernetes カスタム リソース定義(CRD)と APIM Operator をインストールします。
- APIM Operator の名前空間を作成します。
kubectl create ns apim
- APIM Operator カスタム リソース定義(CRD)をインストールします。
helm install apigee-apim-crds oci://us-docker.pkg.dev/apigee-release/apigee-k8s-tooling-helm-charts/apigee-apim-operator-crds --version 0.6.0 -n apim --atomic
- APIM Operator をインストールします。
helm install apigee-apim-operator oci://us-docker.pkg.dev/apigee-release/apigee-k8s-tooling-helm-charts/apigee-apim-operator-helm --version 0.6.0 --set project_id=${PROJECT_ID} --set serviceAccount=apigee-apim-gsa@${PROJECT_ID}.iam.gserviceaccount.com --set apigeeOrg=${PROJECT_ID} --set generateEnv=TRUE --set apigeeMgmtUrl="https://apigee.googleapis.com" -n apim --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-0.6.0 0.6.0 apigee-apim-operator apim 1 2025-02-01 00:15:00.362829981 +0000 UTC deployed apigee-apim-operator-helm-0.6.0 0.6.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 オペレーターがクラスタの 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 オペレーターのトラブルシューティングでインストールのトラブルシューティングを行います。
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/$ORG_NAME/environments" -H \ "Authorization: Bearer $TOKEN" -H "content-type:application/json" \ -d '{ "name": "ENV_NAME", "properties": { "apigee-service-extension-enabled":"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" : ENV_TYPE, "properties": { "property": [ { "name": "apigee-service-extension-enabled", "value": "true" } ] } }'
ここで
ENV_NAME
は、作成する環境の名前です。ENV_TYPE
は、作成する環境のタイプです。たとえば、INTERMEDIATE
やCOMPREHENSIVE
です。
- サブスクリプション 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
は、前の手順で作成した環境の名前です。
トラブルシューティング
APIM Operator のインストール中に問題が発生した場合は、APIM Operator のトラブルシューティングで一般的なエラーの解決策をご覧ください。