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

このページの内容は Apigee に適用されます。Apigee ハイブリッドには適用されません。

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

このページでは、Kubernetes 用 Apigee APIM Operator(プレビュー版)をインストールして構成するために必要な手順について説明します。APIM Operator を使用するメリットについては、 Kubernetes 用の Apigee APIM Operator の概要をご覧ください。

始める前に

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

  1. APIM Operator の名前空間を作成します。
    kubectl create ns apim
  2. 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
  3. 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
  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-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   

  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 オペレーターがクラスタの 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 オペレーターのトラブルシューティングでインストールのトラブルシューティングを行います。

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/$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 は、作成する環境のタイプです。たとえば、INTERMEDIATECOMPREHENSIVE です。

  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 は、前の手順で作成した環境の名前です。

トラブルシューティング

APIM Operator のインストール中に問題が発生した場合は、APIM Operator のトラブルシューティングで一般的なエラーの解決策をご覧ください。

次のステップ