本頁內容適用於 Apigee 和 Apigee Hybrid。
查看
Apigee Edge 說明文件。
本頁說明如何啟用 Apigee Operator for Kubernetes 提供的預設安全性和配額強制執行選項。
事前準備
開始這項工作前,請務必完成下列步驟:
- 安裝 Kubernetes 適用的 Apigee 運算子。如需安裝操作說明,請參閱「安裝 Kubernetes 適用的 Apigee Operator」。
- 建立流量服務擴充功能。如要完成這個步驟,可以使用
ApigeeBackendService
或APIMExtensionPolicy
。 如要進一步瞭解如何使用APIMExtensionPolicy
建立流量擴充功能,請參閱「建立 APIMExtensionPolicy」。 如要進一步瞭解如何使用ApigeeBackendService
建立流量擴充功能,請參閱「建立 ApigeeBackendService」。
無論您是使用 ApigeeBackendService
或 APIMExtensionPolicy
為 GKE Gateway 建立流量服務擴充功能,都必須完成本逐步導覽中的步驟,才能啟用新增至支援 APIMExtensionPolicy
的預設 API 金鑰和配額政策。
必要的角色
如果您已按照「安裝 Kubernetes 適用的 Apigee Operator」一文的說明,將必要角色指派給服務帳戶,則完成這些工作時不需要其他 IAM 角色或權限。
您可以選擇使用 Kubernetes 內建的角色型存取權控管 (RBAC) 機制,授權在 Google Kubernetes Engine 叢集中的資源上執行動作。詳情請參閱「 使用角色型存取控制授權叢集中的動作」。
總覽
以下各節說明如何啟用 Apigee Operator for Kubernetes 提供的預設安全性和配額強制執行選項。 在本逐步操作說明中,您將:
視您是使用 ApigeeBackendService
還是 APIMExtensionPolicy
為 GKE Gateway 建立流量擴充功能而定,定義 API 產品和 API 作業集的步驟會略有不同。
定義 API 產品
在本步驟中,您將定義用於管理 API 金鑰強制執行和配額政策的 API 產品。
使用 APIMExtensionPolicy
定義 API 產品:
- 在
apim
命名空間中建立名為api-product.yaml
的新檔案。 - 將下列內容複製到新檔案中:
# api-product.yaml apiVersion: apim.googleapis.com/v1 kind: APIProduct metadata: name: api-product namespace: apim spec: approvalType: auto description: Http bin GET calls displayName: api-product enforcementRefs: - name: global-ext-lb1-apim-policy kind: APIMExtensionPolicy group: apim.googleapis.com namespace: apim attributes: - name: access value: private
- 使用下列指令將檔案套用至閘道:
kubectl -n apim apply -f api-product.yaml
使用 ApigeeBackendService
定義 API 產品:
- 在
apim
命名空間中建立名為api-product.yaml
的新檔案。 - 將下列內容複製到新檔案中:
# api-product.yaml apiVersion: apim.googleapis.com/v1 kind: APIProduct metadata: name: api-product namespace: apim spec: approvalType: auto description: Http bin GET calls displayName: api-product enforcementRefs: - name: global-ext-lb1-apim-policy kind: ApigeeBackendService group: apim.googleapis.com namespace: default attributes: - name: access value: private
- 使用下列指令將檔案套用至閘道:
kubectl -n default apply -f api-product.yaml
定義 API 作業集
在這個步驟中,您將定義用於管理 REST 作業強制執行的 API 作業集。
使用 APIMExtensionPolicy
定義在上一個步驟中建立的 API 產品適用的 API 作業集:
- 在
apim
命名空間中建立名為apim-policies.yaml
的新檔案。 - 將下列內容複製到新檔案中。
這個檔案會定義配額政策,以及上一個步驟中定義的 API 產品可用的 REST 作業:
# apim-policies.yaml apiVersion: apim.googleapis.com/v1 kind: APIOperationSet metadata: name: item-set namespace: apim spec: apiProductRefs: - name: api-product kind: APIProduct group: apim.googleapis.com namespace: apim quota: limit: 10 interval: 1 timeUnit: minute restOperations: - name: GetItems path: /get methods: - GET
- 將檔案套用至閘道:
kubectl -n apim apply -f apim-policies.yaml
使用 ApigeeBackendService
定義在上一個步驟中建立的 API 產品適用的 API 作業集:
- 在
default
命名空間中建立名為apim-policies.yaml
的新檔案。 - 將下列內容複製到新檔案中。
這個檔案會定義配額政策,以及上一個步驟中定義的 API 產品可用的 REST 作業:
# apim-policies.yaml apiVersion: apim.googleapis.com/v1 kind: APIOperationSet metadata: name: item-set namespace: default spec: apiProductRefs: - name: api-product kind: APIProduct group: apim.googleapis.com namespace: default quota: limit: 10 interval: 1 timeUnit: minute restOperations: - name: GetItems path: /get methods: - GET
- 將檔案套用至閘道:
kubectl -n default apply -f apim-policies.yaml
測試 Apigee 服務擴充功能
在這個步驟中,您將使用 Google Cloud 控制台中的 Apigee UI,測試 Apigee 服務擴充功能,以及套用至 Gateway 的 Apigee 擴充功能政策。
測試設定
設定測試所需的 API 資源:
前往 Google Cloud 控制台的「Apigee API management」(Apigee API 管理) 頁面:
- 選取您安裝 Kubernetes 適用的 Apigee Operator 的 Apigee 組織。
- 建立開發人員:
- 選取「發行」>「開發人員」。
- 在「開發人員」頁面中,按一下「+ 建立」。
- 在「新增開發人員」頁面中,使用任意值填寫必填欄位。
- 按一下「新增」。
- 建立應用程式:
- 選取「發布」>「應用程式」。
- 在「應用程式」頁面,按一下「+ 建立」
- 在「建立應用程式」頁面中,使用下列值填寫「應用程式詳細資料」區段中的必填欄位:
- 應用程式名稱:demo-app
- 開發人員:選取您在上一個步驟中建立的開發人員,或從清單中選取其他開發人員。
- 在「應用程式憑證」部分中,按一下「+ 新增憑證」。
- 在「憑證」部分,使用下列值填寫「憑證詳細資料」部分中的必填欄位:
- 憑證名稱:demo-credential
- 憑證類型:選取「API 金鑰」。
- 點選「建立」。
- 在「產品」部分中,按一下「+ 新增產品」。
- 選取上一個步驟中建立的
api-product-1
。 - 按一下「新增」。
- 點選「建立」。
- 在「應用程式詳細資料」頁面的「憑證」部分,按一下
visibility_off 即可顯示「金鑰」的值。
複製
Key
值。您會在後續步驟中使用這組金鑰,對服務發出 API 呼叫。 - 在「應用程式詳細資料」頁面的「憑證」部分,按一下 visibility_off 即可顯示「應用程式密鑰」的值。
複製「應用程式密鑰」值。您會在後續步驟中使用這個值產生存取權杖。
測試 API 金鑰強制執行功能
使用下列指令,透過先前步驟中取得的 API 金鑰,將要求傳送至 Gateway:
curl http://GATEWAY_IP_ADDRESS/get -H "Host: HOST_NAME" -H "x-api-key: API_KEY"
其中:
GATEWAY_IP_ADDRESS
是閘道的 IP 位址。您可以使用下列指令擷取閘道 IP 位址,其中GATEWAY_NAME
是閘道的名稱:kubectl get gateways.gateway.networking.k8s.io GATEWAY_NAME -o=jsonpath="{.status.addresses[0].value}"
HOST_NAME
是在 Gateway 的HTTPRoute
中定義的主機名稱。API_KEY
是在「測試設定」中取得的 API 金鑰值。
要求應會成功,並傳回類似下列內容的回應:
{ "args": {}, "headers": { "Accept": "*/*", "Host": "apigee-apim-operator-test.apigee.net", "User-Agent": "curl/8.7.1", "X-Api-Key": "f0N6sYYYclGYYYe0oP5YYYdA20PjgrP2x8YYYh7z4YYYKiYt", "X-Cloud-Trace-Context": "bb3a768787099bda628781188bfb318b/15554891713516675739" }, "origin": "34.54.193.72", "url": "https://34.54.193.72/get" }
測試配額限制
如要測試 APIMExtensionPolicy
中定義的配額強制執行,請在一分鐘內,將上一個步驟中的要求傳送至閘道十次。
您可以執行下列指令碼來產生要求:
#!/bin/sh for i in $(seq 1 11); do curl http://GATEWAY_IP_ADDRESS/get -H "Host: HOST_NAME" -H "x-api-key: API_KEY" sleep 1 done
其中:
GATEWAY_IP_ADDRESS
是閘道的 IP 位址。您可以使用下列指令擷取閘道 IP 位址,其中GATEWAY_NAME
是閘道的名稱:kubectl get gateways.gateway.networking.k8s.io GATEWAY_NAME -o=jsonpath="{.status.addresses[0].value}"
HOST_NAME
是在 Gateway 的HTTPRoute
中定義的主機名稱。API_KEY
是在「測試設定」中取得的 API 金鑰值。
這項動作應會觸發配額違規,並引發類似下列的錯誤:
{"fault":{"faultstring":"Rate limit quota violation. Quota limit exceeded. Identifier : _default","detail":{"errorcode":"policies.ratelimit.QuotaViolation"}}}
測試 REST 作業強制執行
如要測試其餘作業的強制執行情況,請使用下列指令,透過不在 API 作業集中的網址,將要求傳送至 Gateway:
curl http://GATEWAY_IP_ADDRESS/post -H "Host: HOST_NAME" -H "x-api-key: API_KEY"
其中:
GATEWAY_IP_ADDRESS
是閘道的 IP 位址。您可以使用下列指令擷取閘道 IP 位址,其中GATEWAY_NAME
是閘道的名稱:kubectl get gateways.gateway.networking.k8s.io GATEWAY_NAME -o=jsonpath="{.status.addresses[0].value}"
HOST_NAME
是在 Gateway 的HTTPRoute
中定義的主機名稱。API_KEY
是在「測試設定」中取得的 API 金鑰值。
要求應會失敗,並傳回類似以下的回應:
{"fault":{"faultstring":"Invalid ApiKey for given resource","detail":{"errorcode":"oauth.v2.InvalidApiKeyForGivenResource"}}}
在 Google Cloud 控制台中查看 Apigee API 數據分析
您可以在控制台中使用 Apigee API Analytics,查看 GKE Gateway 處理的 API 流量和 APIMExtensionPolicy
: Google Cloud
- 前往 Google Cloud 控制台的「Apigee API 管理」頁面:
- 選取您安裝 Apigee Operator for Kubernetes 的 Apigee 組織。
- 在側邊導覽選單中,依序選取「Analytics」>「API 指標」。
- 在「API Proxy Performance」(API Proxy 效能) 分頁中,選擇您在選用安裝步驟「建立 Apigee 環境」中建立的環境,或是 Apigee Operator for Kubernetes 在安裝期間建立的環境。環境名稱開頭會是前置字串
apigee-ext-proc-enabled-env
。 - 觀察記錄的 API 流量。
疑難排解
如果在 Kubernetes 適用的 Apigee Operator 中使用 API 管理政策時遇到問題,請參閱「排解 Kubernetes 適用的 Apigee Operator 問題」,瞭解常見錯誤的解決方法。
後續步驟
如要新增其他政策,請參閱「將政策新增至 GKE Gateway」。