Apigee APIM Operator for Kubernetes をインストールする

このページの内容は Apigee を対象としています。Apigee ハイブリッドは対象としていません。

Apigee Edge のドキュメントを表示する。

このページでは、Apigee APIM Operator for Kubernetes をインストールして構成するために必要な手順について説明します。APIM Operator を使用する利点については、Apigee APIM Operator for Kubernetes の概要をご覧ください。

始める前に

APIM Operator のインストールを開始する前に、手順を完了するのに必要なロールと権限があることと、APIM Operator: 始める前にで説明されている前提条件タスクを完了していることを確認してください。

必要なロール

APIM Operator のインストールに必要な権限を取得するには、組織で次の IAM ロールを付与するよう管理者に依頼してください。

ロールの付与については、プロジェクト、フォルダ、組織に対するアクセス権の管理をご覧ください。

必要な権限は、カスタムロールや他の事前定義ロールから取得することもできます。

APIM Operator をインストールして構成する

次のセクションでは、APIM Operator のインストールと構成に必要な手順について説明します。

  1. 環境変数を設定する
  2. 必要な API を有効にする
  3. 認証情報を取得して構成する
  4. APIM Operator をインストールする
  5. Workload Identity を作成する
  6. Apigee 環境を作成する
  7. 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_ORGPROJECT_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 サービスに接続します。

  1. 次のコマンドを使用して、クラスタの認証情報を取得します。

    gcloud container clusters get-credentials $CLUSTER_NAME --location=$REGION --project=$PROJECT_ID

    これらの認証情報は、前提条件の手順で作成された GKE クラスタとの通信に使用されます。

  2. サービス アカウントの認証情報を設定して、 Google Cloud サービスに接続します。
    gcloud iam service-accounts create apigee-apim-gsa
  3. 次のコマンドを使用して、作成したサービス アカウントに必要なロールと権限を付与します。
    • 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"

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 をインストールします。

  1. APIM Operator の Namespace を作成します。
    kubectl create ns apim
  2. 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
  3. 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
  4. インストールが正常に完了したことを確認します。
    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   

  5. 必要なアノテーションを含む 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
  6. APIM Operator がクラスタの Pod で稼働していることを確認します。
    kubectl get pods -n apim

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

    NAME                                    READY   STATUS    RESTARTS     AGE
    apigee-apim-operator-8559d4994b-h55fl   1/1     Running   0            8m34s
    

    STATUSRunning でない場合、または READY1/1 が表示されない場合は、APIM Operator のトラブルシューティングを参照してインストールのトラブルシューティングを行います。

Apigee 環境を作成する

前の手順で generateEnv=TRUE を使用して APIM Operator をインストールした場合、APIM 拡張機能ポリシーが作成されて適用されると、オペレーターは新しい Apigee 環境を作成します。新しい環境の名前には接頭辞 apim-enabled-dep-env が付きます。

generateEnv=FALSE を使用して APIM Operator をインストールした場合は、新しい Apigee 環境を作成する必要があります。

  1. curl コマンドに必要な TOKEN を設定します。
    export TOKEN=$(gcloud auth print-access-token)
  2. 次のいずれかのコマンドを使用して環境を作成します。
    • サブスクリプション 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"

  3. 環境を 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 のトラブルシューティングで一般的なエラーの解決策をご覧ください。

次のステップ