本頁內容適用於 Apigee 和 Apigee Hybrid。
查看
Apigee Edge 說明文件。
本頁說明如何建立 ApigeeBackendService
,以及叢集內執行的 Google Kubernetes Engine (GKE) Gateway 上所需的流量擴充功能。
這種做法可替代使用 APIMExtensionPolicy
將 Apigee 資料層識別為 GKE Gateway 的政策決策點 (PDP)。建立 ApigeeBackendService
時,Kubernetes 適用的 Apigee Operator 會自動建立 APIMExtensionPolicy
,其名稱和命名空間與 ApigeeBackendService
相同。這是支援的 APIMExtensionPolicy
。
如果您建立及管理 Cloud Load Balancing 流量擴充功能,並想在流量擴充功能資源中新增 Apigee 做為擴充功能,建議採用這種做法。如果 Apigee 流量擴充功能會與其他流量擴充功能搭配運作,就必須使用 ApigeeBackendService
。
事前準備
開始這項工作前,請先完成下列步驟:
- 確認您的 GKE 實作項目使用 GKE 1.34.x 以上版本。
- 確認 GKE 叢集已設定 Workload Identity。如需必要步驟,請參閱「建立工作負載身分」。
- 確認叢集已設定並正常運作 GKE Gateway。詳情請參閱「部署閘道」。
- 安裝 Kubernetes 適用的 Apigee 運算子。如需安裝操作說明,請參閱「安裝 Kubernetes 適用的 Apigee Operator」。
必要的角色
如果您已按照「 安裝 Kubernetes 適用的 Apigee Operator」一文的說明,將必要角色指派給服務帳戶,就不需要其他 IAM 角色或權限,即可完成這些工作。
您可以使用 Kubernetes 內建的角色型存取權控管 (RBAC) 機制,授權在 Google Kubernetes Engine 叢集中的資源上執行動作。詳情請參閱「 使用角色型存取控制授權叢集中的動作」。
建立 ApigeeBackendService 資源
如要在 GKE Gateway 上設定流量服務擴充功能,請建立兩個主要資源:
- 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 中為選填,在 Hybrid 中則為必填。 - SECURITY_ENABLED (選用) 指定是否自動啟用 API 金鑰驗證和配額檢查的預設 Apigee 政策。如未指定,則預設值為
true
。 - REGION_NAME_1 指定部署 GKE Gateway 的區域。
- NETWORK_NAME_1 和 SUBNET_NAME_1 則指定網路和子網路的完整資源 URI,這些是建立 PSC NEG 的位置。例如
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 流量擴充功能,就需要這些項目。
- 在
default
命名空間中,將 YAML 檔案套用至叢集: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
時,Kubernetes 適用的 Apigee 運算子會自動建立 APIMExtensionPolicy
,其名稱和命名空間與 ApigeeBackendService
相同。
這是支援的 APIMExtensionPolicy
。
如果 defaultSecurityEnabled
設為 true
,Kubernetes 適用的 Apigee 運算子會自動將預設 API 金鑰和配額政策新增至 APIMExtensionPolicy
。如要新增其他政策,請參閱「將政策新增至 GKE Gateway」。
建立 GCPTrafficExtension
資源
GCPTrafficExtension
資源會定義 Apigee 的擴充功能,並將在上一個步驟中建立的 ApigeeBackendService
參照為其 backendRef
。
如要進一步瞭解如何設定 GCPTrafficExtension
,請參閱「設定服務擴充功能」。
supportedEvents
欄位會指定要向擴充功能公開要求和回應生命週期的哪些部分。Kubernetes 適用的 Apigee 運算子支援下列事件:
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
欄位會指定要求和回應生命週期中,要向擴充功能公開哪些部分。Kubernetes 適用的 Apigee 運算子支援下列事件:RequestHeaders
RequestBody
RequestTrailers
ResponseHeaders
ResponseBody
ResponseTrailers
supportedEvents
清單中加入RequestBody
和ResponseBody
。 如要進一步瞭解支援的事件,請參閱「Cloud Load Balancing 流量擴充功能」說明文件。
- 將 YAML 檔案套用至叢集:
kubectl apply -f gcp-traffic-extension.yaml