このページは Apigee と Apigee ハイブリッドに適用されます。
Apigee Edge のドキュメントを表示する。
このページでは、クラスタで実行されている Google Kubernetes Engine(GKE)Gateway に必要なトラフィック拡張機能を作成するために ApigeeBackendService
を作成する方法について説明します。
この方法は、APIMExtensionPolicy
を使用して Apigee データプレーンを GKE Gateway のポリシー決定ポイント(PDP)として識別する方法の代替手段です。ApigeeBackendService
を作成すると、Apigee Operator for Kubernetes は、ApigeeBackendService
と同じ名前と Namespace を持つ APIMExtensionPolicy
を自動的に作成します。これはバックアップ APIMExtensionPolicy
です。
Cloud Load Balancing トラフィック拡張機能を作成して管理し、トラフィック拡張機能リソースに拡張機能として Apigee を追加する場合は、この方法をおすすめします。Apigee トラフィック拡張機能が他のトラフィック拡張機能と連携して動作する場合は、ApigeeBackendService
を使用する必要があります。
始める前に
このタスクを始める前に、次のことを行ってください。
- GKE 実装で GKE バージョン 1.34.x 以降が使用されていることを確認します。
- GKE クラスタに Workload Identity が構成されていることを確認します。必要な手順については、Workload Identity を作成するをご覧ください。
- クラスタで GKE Gateway が構成され、動作していることを確認します。詳細については、Gateway のデプロイをご覧ください。
- Apigee Operator for Kubernetes をインストールします。インストール手順については、Apigee Operator for Kubernetes をインストールするをご覧ください。
必要なロール
Apigee Operator for Kubernetes をインストールするで説明されているように、必要なロールをサービス アカウントに割り当てた場合は、これらのタスクを完了するために追加の IAM ロールや権限は必要ありません。
Kubernetes に組み込まれたロールベース アクセス制御(RBAC)メカニズムを使用して、Google Kubernetes Engine クラスタ内のリソースに対するアクションを認可できます。詳細については、ロールベース アクセス制御を使用してクラスタ内でのアクションを認可するをご覧ください。
ApigeeBackendService リソースを作成する
GKE Gateway でトラフィック サービス拡張機能を構成するには、次の 2 つのメインリソースを作成します。
- ApigeeBackendService: このカスタム リソースは、Apigee データプレーンをポリシー決定点(PDP)として指定し、Private Service Connect(PSC)ネットワーク エンドポイント グループ(NEG)のネットワークの詳細を構成します。
- GCPTrafficExtension: この GKE Gateway API リソースは、トラフィックが ApigeeBackendService に転送される方法などの拡張機能チェーンを定義します。
ApigeeBackendService
を作成します。
ApigeeBackendService
リソースは、Apigee データプレーンを GCPTrafficExtension
の PDP として指定します。
ApigeeBackendService
の作成方法:
- 次の内容で
apigee-backend-service.yaml
という名前の YAML ファイルを作成します。 - ENV_NAME は使用する Apigee 環境です。これは、
APIMExtensionPolicy
のapigeeEnv
フィールドに似ています。このフィールドは、Apigee では省略可能ですが、ハイブリッドでは必須です。 - SECURITY_ENABLED(省略可)は、API キーの検証と割り当てチェックのデフォルトの Apigee ポリシーを自動的に有効にするかどうかを指定します。指定しない場合のデフォルトは
true
です。 - REGION_NAME_1 は、GKE Gateway をデプロイするリージョンを指定します。
- NETWORK_NAME_1 と SUBNET_NAME_1 は、PSC NEG が作成されるネットワークとサブネットワークの完全なリソース URI を指定します。たとえば、
projects/my-project/global/networks/my-default
やprojects/my-project/regions/us-central1/subnetworks/my-default
です。通常、これらは GKE クラスタのネットワークとサブネットワークと同じです。 - REGION_NAME_2、NETWORK_NAME_2、SUBNET_NAME_2 は省略可能です。Apigee トラフィック拡張機能を複数のリージョンにデプロイする場合は、これらが必要です。
- YAML ファイルを
default
Namespace のクラスタに適用します。kubectl apply -f apigee-backend-service.yaml
ApigeeBackendService
が正常に作成されたことを確認します。kubectl get apigeebackendservice
出力は次のようになります。
NAMESPACE NAME STATE ERRORMESSAGE default default-ext-lb1-apim-policy CREATED
# apigee-backend-service.yaml kind: ApigeeBackendService apiVersion: apim.googleapis.com/v1 metadata: name: my-apigee-extension-backend-service spec: apigeeEnv: ENV_NAME # optional for Apigee, required for hybrid defaultSecurityEnabled: SECURITY_ENABLED locations: # required field - name: REGION_NAME_1 network: NETWORK_NAME_1 subnet: SUBNET_NAME_1 - name: REGION_NAME_2 network: NETWORK_NAME_2 subnet: SUBNET_NAME_2
ここで
ApigeeBackendService
を作成すると、Apigee Operator for Kubernetes は、ApigeeBackendService
と同じ名前と Namespace の APIMExtensionPolicy
を自動的に作成します。これはバックアップ APIMExtensionPolicy
です。
defaultSecurityEnabled
が true
に設定されている場合、Apigee Operator for Kubernetes はデフォルトの API キーと割り当てポリシーを APIMExtensionPolicy
に自動的に追加します。ポリシーを追加するには、GKE Gateway にポリシーを追加するをご覧ください。
GCPTrafficExtension
リソースを作成する
GCPTrafficExtension
リソースは Apigee の拡張機能を定義し、前の手順で作成した ApigeeBackendService
を backendRef
として参照します。GCPTrafficExtension
の構成の詳細については、サービス拡張機能を構成するをご覧ください。
supportedEvents
フィールドは、リクエストとレスポンスのライフサイクルのどの部分が拡張機能に公開されるかを指定します。Apigee Operator for Kubernetes は、次のイベントをサポートしています。
RequestHeaders
RequestBody
RequestTrailers
ResponseHeaders
ResponseBody
ResponseTrailers
supportedEvents
リストに RequestBody
と ResponseBody
を含める必要があります。サポートされているイベントの詳細については、Cloud Load Balancing トラフィック拡張機能のドキュメントをご覧ください。
GCPTrafficExtension
の作成方法:
- 次の内容で
gcp-traffic-extension.yaml
という名前の YAML ファイルを作成します。# gcp-traffic-extension.yaml kind: GCPTrafficExtension apiVersion: networking.gke.io/v1 metadata: name: my-apigee-extension spec: targetRefs: - group: "gateway.networking.k8s.io" kind: Gateway name: GATEWAY_NAME # Replace with your GKE Gateway name extensionChains: - name: EXTENSION_CHAIN_NAME matchCondition: celExpressions: - celMatcher: request.path.startsWith("/") extensions: - name: EXTENSION_NAME metadata: # This metadata label must match the name of the ApigeeBackendService apigee-extension-processor : APIGEE_BACKEND_SERVICE_NAME failOpen: false supportedEvents: - SUPPORTED_EVENT1 - SUPPORTED_EVENT2 timeout: 1s requestBodySendMode: FullDuplexStreamed backendRef: # References the ApigeeBackendService by
kind
andname
kind: ApigeeBackendService name: APIGEE_BACKEND_SERVICE_NAME Port: 443ここで
- GATEWAY_NAME は、拡張機能が適用される GKE Gateway の名前です。
- EXTENSION_CHAIN_NAME は拡張機能チェーンの名前です。
- EXTENSION_NAME は、トラフィック サービス拡張機能の名前です。
- APIGEE_BACKEND_SERVICE_NAME は、以前に作成した
ApigeeBackendService
の名前です。extensions
ブロック内のこのラベルは、先ほど作成したApigeeBackendService
のmetadata.name
と一致している必要があります。 supportedEvents
フィールドは、リクエストとレスポンスのライフサイクルのどの部分が拡張機能に公開されるかを指定します。Apigee Operator for Kubernetes は、次のイベントをサポートしています。RequestHeaders
RequestBody
RequestTrailers
ResponseHeaders
ResponseBody
ResponseTrailers
supportedEvents
リストにRequestBody
とResponseBody
を含める必要があります。 サポートされているイベントの詳細については、Cloud Load Balancing トラフィック拡張機能のドキュメントをご覧ください。
- YAML ファイルをクラスタに適用します。
kubectl apply -f gcp-traffic-extension.yaml