このページは Apigee と Apigee ハイブリッドに適用されます。
Apigee Edge のドキュメントを表示する。
このページでは、Apigee ハイブリッド用の Apigee Operator for Kubernetes をインストールして構成するために必要な手順について説明します。Apigee Operator for Kubernetes を使用する利点については、 Apigee Operator for Kubernetes の概要をご覧ください。
Apigee ハイブリッドを使用していない場合は、Apigee Operator for Kubernetes をインストールするを参照して、Apigee 用の Apigee Operator for Kubernetes をインストールします。
始める前に
始める前に、以下のものが揃っていることを確認してください。
必要なロール
Apigee Operator for Kubernetes のインストールと使用に必要なリソースを設定するために必要な権限については、組織で次の IAM ロールを付与するよう管理者に依頼してください。
- サービス アカウントを作成して管理する: サービス アカウント管理者(
roles/iam.serviceAccountAdmin
) - Apigee リソースを作成して管理する: Apigee 管理者(
roles/apigee.admin
)
ロールの付与については、プロジェクト、フォルダ、組織に対するアクセス権の管理をご覧ください。
必要な権限は、カスタムロールや他の事前定義ロールから取得することもできます。
必要な設定タスク
Kubernetes 用 Apigee Operator をインストールする前に、次のタスクを完了して、この機能を使用するのに必要なリソースを設定します。
- バージョン 1.15.0 以降を使用して Apigee ハイブリッドをインストールします。Apigee ハイブリッドのインストール手順については、全体像をご覧ください。
- Google Cloud、Azure、Amazon など、Istio Gateway をサポートするクラウド プロバイダに Kubernetes クラスタを作成します。
- K8s クラスタに Istio Gateway をインストールします。
- GKE のクラスタの場合:
kubectl apply -f https://github.com/kubernetes-sigs/gateway-api/releases/download/v1.1.0/standard-install.yaml
curl -L https://istio.io/downloadIstio | sh -
cd 1.6.11-asm.1
export PATH=$PWD/bin:$PATH
istioctl install --set profile=minimal --set values.global.platform=gke -y
- 他のプロバイダのクラスタの場合:
kubectl apply -f https://github.com/kubernetes-sigs/gateway-api/releases/download/v1.1.0/standard-install.yaml
curl -L https://istio.io/downloadIstio | sh -
cd 1.6.11-asm.1
export PATH=$PWD/bin:$PATH
istioctl install --set profile=minimal -y
- GKE のクラスタの場合:
- Istio Gateway を Kubernetes クラスタにデプロイします。
- 次の内容を含む gateway.yaml というファイルを作成して、次の内容で Istio Gateway をデプロイします。
#gateway.yaml apiVersion: gateway.networking.k8s.io/v1 kind: Gateway metadata: name: istio-gateway namespace: default annotations: service.beta.kubernetes.io/port_80_health-probe_protocol: tcp spec: gatewayClassName: istio listeners: - name: default hostname: "*.httpbin.com" port: 80 protocol: HTTP allowedRoutes: namespaces: from: All
- 次のコマンドを使用して、ファイルをクラスタに適用します。
kubectl apply -f gateway.yaml
- 次の内容を含む gateway.yaml というファイルを作成して、次の内容で Istio Gateway をデプロイします。
Istio Gateway の設定を確認する(省略可)
このガイドでは、デプロイしたゲートウェイをテストするために、デフォルトの Namespace にサンプル httpbin アプリケーションをデプロイすることをおすすめします。
- バックエンド アプリケーションを Kubernetes クラスタにデプロイして、Gateway をテストします。
- 次の内容のファイルを
target.yaml
という名前で新規に作成します。kubectl apply -f - <<EOF apiVersion: v1 kind: ServiceAccount metadata: name: httpbin --- apiVersion: v1 kind: Service metadata: name: httpbin labels: app: httpbin service: httpbin spec: ports: - name: http port: 8000 targetPort: 8080 selector: app: httpbin --- apiVersion: apps/v1 kind: Deployment metadata: name: httpbin spec: replicas: 1 selector: matchLabels: app: httpbin version: v1 template: metadata: labels: app: httpbin version: v1 spec: serviceAccountName: httpbin containers: - image: docker.io/mccutchen/go-httpbin:v2.15.0 imagePullPolicy: IfNotPresent name: httpbin ports: - containerPort: 8080 EOF
- HTTPRoute リソースをクラスタにデプロイして、Gateway からバックエンド サービスへのトラフィックをマッピングします。
このガイドでは、HTTPRoute を作成するの手順に沿って、外部ゲートウェイと HTTPRoute をデプロイすることをおすすめします。
HTTPRoute リソースの詳細については、HTTPRoute をデプロイする(内部ゲートウェイの場合)または HTTPRoute を作成する(外部ゲートウェイの場合)をご覧ください。
- 次の YAML 構成を使用して、HTTPRoute を作成するの手順に沿って HTTPRoute を作成します。
apiVersion: gateway.networking.k8s.io/v1 kind: HTTPRoute metadata: name: http-bin-route namespace: default spec: parentRefs: - name: istio-gateway namespace: default hostnames: ["example.httpbin.com"] rules: - matches: - path: type: PathPrefix value: /get backendRefs: - name: httpbin port: 8000
- ファイルをクラスタに適用します。
kubectl apply -f httproute.yaml
- 次の YAML 構成を使用して、HTTPRoute を作成するの手順に沿って HTTPRoute を作成します。
- GKE Gateway の設定を確認して、想定どおりに動作していることを確認します。
- 次のコマンドを使用して、Gateway の詳細を取得します。
kubectl get gateway global-ext-lb1
出力は次のようになります。
NAME CLASS ADDRESS PROGRAMMED AGE istio-gateway istio 34.54.193.72 True 11d
IP アドレスがゲートウェイに割り当てられ、
PROGRAMMED
の値がTrue
であることを確認します。 - ゲートウェイを記述して、ルートが接続されていることを確認します。
kubectl describe gateway istio-gateway
出力は次のようになります。
... Listeners: Attached Routes: 1 Conditions: Last Transition Time: 2024-10-03T03:10:17Z ...
[Attached Routes] の値が 1 になっていることを確認します。これは、ルートが接続されていることを示します。
- Gateway にリクエストを送信する
curl http://GATEWAY_IP_ADDRESS/get \ -H "Host: example.httpbin.com"
ここで、GATEWAY_IP_ADDRESS は Gateway の IP アドレスです。Gateway の IP アドレスは、次のコマンドを使用して取得できます。ここで、GATEWAY_NAME は Gateway の名前です。
kubectl get gateways.gateway.networking.k8s.io GATEWAY_NAME -o=jsonpath="{.status.addresses.value}"
次に例を示します。
curl http://34.54.193.72/get -H "Host: example.httpbin.com"
レスポンスは次のようになります。
{ "args": {}, "headers": { "Accept": "*/*", "Host": "http://example.httpbin.com", "User-Agent": "curl/8.7.1", "X-Cloud-Trace-Context": "2bb8a80e29e80662ff9cb89971c447d9/13083106619927322701" }, "origin": "67.164.1.10,34.54.193.72", "url": "http://example.httpbin.com/get" }
- 次のコマンドを使用して、Gateway の詳細を取得します。
Apigee Operator for Kubernetes をインストールする
この手順では、Apigee Operator for Kubernetes をインストールして構成するために必要な手順について説明します。
Apigee Operator for Kubernetes をインストールして構成する
以降のセクションでは、Apigee Operator for Kubernetes のインストールと構成に必要な手順について説明します。
- 環境変数を設定する。
- APIM サービス アカウントを作成して構成します。
- Kubernetes 用の Apigee Operator をインストールします。
- Apigee ハイブリッド環境を作成します。
- Helm を使用して Apigee ハイブリッド環境をインストールします。
環境変数を設定する
Apigee インスタンスを含む Google Cloud プロジェクトで、次のコマンドを使用して環境変数を設定します。
export PROJECT_ID=PROJECT_ID
export APIGEE_ORG=APIGEE_ORG
ここで
- PROJECT_ID: Apigee ハイブリッド インスタンスを含むプロジェクトの ID。
- APIGEE_ORG は Apigee ハイブリッド インスタンスの組織名です。
次のコマンドを使用して、環境変数が正しく設定されていることを確認します。
echo $PROJECT_ID $APIGEE_ORG
APIM サービス アカウントを作成して構成する
Apigee ハイブリッド構成プレーンに接続するためのサービス アカウントを作成します。
- Google Cloud サービスに接続する
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"
- サービス アカウントに対応する JSON キーファイルをダウンロードします。
- 次のコマンドを使用して、
$PROJECT_ID-apigee-apim-gsa.json
鍵ファイルを作成してダウンロードします。gcloud iam service-accounts keys create $PROJECT_ID-apigee-apim-gsa.json \ --iam-account=apigee-apim-gsa@$PROJECT_ID.iam.gserviceaccount.com --project=$PROJECT_ID
- ファイルが正しくダウンロードされたことを確認します。
ls $PROJECT_ID-apigee-apim-gsa.json
- 次のコマンドを使用して、
gcloud iam service-accounts create apigee-apim-gsa
Apigee Operator for Kubernetes をインストールする
Kubernetes のカスタム リソース定義(CRD)と Apigee Operator for Kubernetes をインストールします。
- Apigee Operator for Kubernetes の Namespace を作成する
kubectl create namespace apim
- 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
- 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 serviceAccount=apigee-apim-gsa@$PROJECT_ID.iam.gserviceaccount.com \ --set apigeeOrg=$APIGEE_ORG \ --set apigeeEnv=ENV_NAME \ --set-file serviceAccountKeyFileContent=$PROJECT_ID-apigee-apim-gsa-key.json \ --atomic
ここで、ENV_NAME は、Apigee Operator for Kubernetes をインストールする Apigee ハイブリッド環境の名前です。
- インストールが正常に完了したことを確認します。
helm list -n apim
出力は次のようになります。
NAME NAMESPACE REVISION UPDATED STATUS CHART APP VERSION apigee-apim-crds apim 1 2025-09-01 00:17:03.399810627 +0000 UTC deployed apigee-apim-operator-crds-1.1.0 1.1.0 apigee-apim-operator apim 1 2025-09-01 00:15:00.362829981 +0000 UTC deployed apigee-apim-operator-helm-1.1.0 1.1.0
- 必要なアノテーションを含む Kubernetes サービス アカウント(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
- Kubernetes 用 Apigee 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 が表示されない場合は、Apigee Operator for Kubernetes のトラブルシューティングを参照して、インストールのトラブルシューティングを行います。
Apigee ハイブリッド環境を作成する
Apigee Hybrid で Kubernetes 用 Apigee Operator を使用するには、サービス拡張用の特別なフラグを使用して環境を作成する必要があります。
- Apigee API に対する認証用のトークンを取得します。
次の例のように、コマンドラインで
gcloud
認証情報を取得します。TOKEN=$(gcloud auth print-access-token)
トークンにデータが入力されていることを確認するには、次の例のように
echo
を使用します。echo $TOKEN
エンコードされた文字列としてトークンが表示されるはずです。
詳細については、gcloud コマンドライン ツールの概要をご覧ください。
- 次のいずれかのコマンドを使用して環境を作成します。
- サブスクリプション 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_DISPLAY_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" : "ENV_TYPE", "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"
詳細については、Apigee ハイブリッドのインストール手順の環境を作成するをご覧ください。
- サブスクリプション 2021 を利用している組織の場合:
- 次のコマンドを使用して環境グループを作成します。
curl -i -X POST -H "Authorization: Bearer $TOKEN" "https://apigee.googleapis.com/v1/organizations/$APIGEE_ORG/envgroups" -H "Content-Type:application/json" -d '{ "name": "'"$ENV_GROUP"'", "hostnames":["'"$DOMAIN"'"] }'
ここで
- ENV_GROUP (必須) 環境名には小文字、ダッシュ、数字を含めることができます。また、先頭は小文字にする必要があります。この名前は ID として使用されるため、作成後には変更できません。
- DOMAIN (必須) これは、このグループ内の環境にデプロイされるすべてのプロキシが使用するホスト名です。これは、お客様が管理するドメインである必要があります。アドレスには、ドメイン自体(example.com など)またはサブドメイン(my-proxies.example.com など)を指定できます。マネージド ドメインを保有されていない場合は、この時点ではプレースホルダを入力できます。ドメイン アドレスは後で変更できます。
詳細については、Apigee ハイブリッドのインストール手順の環境グループを作成するをご覧ください。
- 次のコマンドを使用して、作成した環境グループに環境を接続します。
curl -i -X POST -H "Authorization: Bearer $TOKEN" "https://apigee.googleapis.com/v1/organizations/$APIGEE_ORG/envgroups/$ENV_GROUP/attachments" -H "Content-Type:application/json" -d '{ "environment": "'"$ENV_NAME"'", }'
Helm を使用して Apigee ハイブリッド環境をインストールする
Apigee ハイブリッド クラスタに新しい環境をインストールする手順は、クラスタに他の環境をインストールする手順と似ています。これは、Apigee ハイブリッドがインストールされている Kubernetes クラスタに新しい環境と環境グループの詳細を追加するために必要です。
- 次のコマンドを使用して、環境グループのドメインの TLS 証明書を生成します。
openssl req -nodes -new -x509 -keyout $APIGEE_HELM_CHARTS_HOME/apigee-virtualhost/certs/keystore_$ENV_GROUP.key -out $APIGEE_HELM_CHARTS_HOME/apigee-virtualhost/certs/keystore_$ENV_GROUP.pem -subj "/CN=$DOMAIN" -addext "subjectAltName = DNS:$DOMAIN" -days 3650
ここで
- APIGEE_HELM_CHARTS_HOME (必須) Apigee ハイブリッドのインストール時に Apigee Helm チャートをダウンロードしたディレクトリ。
- 次のコマンドを使用して、TLS 公開証明書を Base64 でエンコードします。
cat $APIGEE_HELM_CHARTS_HOME/apigee-virtualhost/certs/keystore_$ENV_GROUP.pem | base64 -w0 > $APIGEE_HELM_CHARTS_HOME/apigee-virtualhost/certs/keystore_$ENV_GROUP.pem.base64
overrides.yaml
ファイルを更新して、envs に次のエントリを追加します。- name: ENV_NAME serviceAccountPaths: # Provide the path relative to the apigee-env chart directory. synchronizer: SYNCHRONIZER_SERVICE_ACCOUNT_FILEPATH # For example: "PROJECT_ID-apigee-synchronizer.json" runtime: RUNTIME_SERVICE_ACCOUNT_FILEPATH # For example: "PROJECT_ID-apigee-runtime.json" udca: UDCA_SERVICE_ACCOUNT_FILEPATH # For example: "PROJECT_ID-apigee-udca.json"
*_SERVICE_ACCOUNT_FILEPATH (必須)は、Apigee ハイブリッドのインストール時に使用したサービス アカウントの JSON キーファイルです。詳細については、Apigee ハイブリッドのインストール手順のオーバーライドを作成するをご覧ください。
- overrides.yaml ファイルの virtualhosts に次のエントリを追加します。
- name:
selector: app: apigee-ingressgateway ingress_name: INGRESS_NAME sslCertPath: certs/keystore_$ENV_GROUP.pem sslKeyPath: certs/keystore_$ENV_GROUP.key ここで、INGRESS_NAME (必須)はデプロイの Apigee Ingress ゲートウェイの名前です。詳細については、こちらをご覧ください。
- 環境と環境グループをインストールする
-
環境をインストールします。
同時にインストールできる環境は 1 つだけです。
--set env=
ENV_NAME で環境を指定します。シェルで $ENV_NAME 環境変数を設定している場合は、次のコマンドで使用できます。ドライランを実行します。
helm upgrade ENV_RELEASE_NAME apigee-env/ \ --install \ --namespace APIGEE_NAMESPACE \ --atomic \ --set env=$ENV_NAME \ -f overrides.yaml \ --dry-run=server
ENV_RELEASE_NAME は、
apigee-env
チャートのインストールとアップグレードの追跡に使用する名前です。この名前は、インストール内の他の Helm リリース名と重複していない必要があります。通常、これはENV_NAME
と同じにします。ただし、環境と環境グループの名前が同じである場合は、環境と環境グループに対して異なるリリース名(dev-env-release
とdev-envgroup-release
など)を使用する必要があります。Helm でのリリースの詳細については、Helm ドキュメントの 3 つの大きなコンセプトをご覧ください。チャートをインストールします。
helm upgrade ENV_RELEASE_NAME apigee-env/ \ --install \ --namespace APIGEE_NAMESPACE \ --atomic \ --set env=$ENV_NAME \ -f overrides.yaml
それぞれの環境の状態をチェックして、稼働していることを確認します。
kubectl -n APIGEE_NAMESPACE get apigeeenv
NAME STATE AGE GATEWAYTYPE apigee-org1-dev-1 running 2d
-
環境グループ(
virtualhosts
)をインストールします。- 一度にインストールできる環境グループ(virtualhost)は 1 つだけです。
--set envgroup=
ENV_GROUP を使用して環境グループを指定します。シェルで $ENV_GROUP 環境変数を設定している場合は、次のコマンドで使用できます。overrides.yaml
ファイルに記載されている env グループそれぞれに対して、次のコマンドを繰り返します。ドライランを実行します。
helm upgrade ENV_GROUP_RELEASE_NAME apigee-virtualhost/ \ --install \ --namespace APIGEE_NAMESPACE \ --atomic \ --set envgroup=$ENV_GROUP \ -f overrides.yaml \ --dry-run=server
ENV_GROUP_RELEASE_NAME は、
apigee-virtualhosts
チャートのインストールとアップグレードの追跡に使用する名前です。この名前は、インストール内の他の Helm リリース名と重複していない必要があります。通常、これはENV_GROUP
と同じにします。ただし、環境グループの名前がインストール環境の環境と同じである場合は、環境グループと環境に異なるリリース名(dev-envgroup-release
とdev-env-release
など)を使用する必要があります。Helm でのリリースの詳細については、Helm ドキュメントの 3 つの大きなコンセプトをご覧ください。チャートをインストールします。
helm upgrade $ENV_GROUP_RELEASE_NAME apigee-virtualhost/ \ --install \ --namespace APIGEE_NAMESPACE \ --atomic \ --set envgroup=$ENV_GROUP \ -f overrides.yaml
- 一度にインストールできる環境グループ(virtualhost)は 1 つだけです。
これで、Apigee Hybrid 組織で新しい環境を使用してサービス拡張機能をテストする準備が整いました。
APIMExtensionPolicy
を作成するの手順に沿って、拡張機能ポリシーを作成します。 -
- 次の内容のファイルを