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

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

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

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

始める前に

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

必要なロール

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

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

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

Apigee Operator for Kubernetes をインストールして構成する

以降のセクションでは、Apigee Operator for Kubernetes をインストールして構成する手順について説明します。

  1. 環境変数を設定する
  2. 必要な API を有効にする
  3. 認証情報を取得して構成する
  4. Apigee Operator for Kubernetes をインストールします
  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 の有効化

Apigee Operator for Kubernetes には、次の 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 を作成する

次の手順で Apigee Operator for Kubernetes に helm をインストールすると、apim Namespace に apim-ksa という名前の必要な Kubernetes サービス アカウント(KSA)が作成されます。作成時に KSA には、必要な Apigee リソースやとサービス ネットワーキング リソースにアクセスする際に Apigee Operator for Kubernetes が使用する 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)と Apigee Operator for Kubernetes をインストールする

Kubernetes のカスタム リソース定義(CRD)と Apigee Operator for Kubernetes をインストールします。

  1. Apigee Operator for Kubernetes の Namespace を作成します。
    kubectl create ns apim
  2. Apigee Operator for Kubernetes 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.1.0 \
      --atomic
  3. Kubernetes 用 Apigee 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.1.0 \
      --set projectId=$PROJECT_ID \
      --set serviceAccount=apigee-apim-gsa@$PROJECT_ID.iam.gserviceaccount.com \
      --set apigeeOrg=$PROJECT_ID \
      --set generateEnv=ENV_GENERATION_MODE \
      --atomic
  4. Apigee Operator for Kubernetes のインストール時にオペレータが新しい Apigee 環境を作成するようにする場合は、ENV_GENERATION_MODETRUE に置き換えます。Operator のインストール後に環境を手動で作成する場合は、ENV_GENERATION_MODEFALSE に設定します。詳細については、Apigee 環境を作成するをご覧ください。

  5. インストールが正常に完了したことを確認します。
    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.1.0	1.1.0
    apigee-apim-operator	apim     	1       	2025-02-01 00:15:00.362829981 +0000 UTC	deployed	apigee-apim-operator-helm-1.1.0	1.1.0   

  6. 必要なアノテーションを含む 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
  7. 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 が表示されない場合は、Apigee Operator for Kubernetes のトラブルシューティングを参照してインストールのトラブルシューティングを行います。

Apigee 環境を作成する

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

generateEnv=FALSE を使用して Apigee Operator for Kubernetes をインストールした場合は、新しい 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 です。

トラブルシューティング

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

次のステップ

APIMExtensionPolicy または ApigeeBackendService を使用してトラフィック サービス拡張機能を作成します。