觀察配額限制規定

本文說明如何觀察配額強制執行情況。Google Distributed Cloud (GDC) 實體隔離方案配額系統可預防用量意外暴增,避免服務超載,進而保護服務。為協助您瞭解服務配額的設定和強制執行方式,您可以使用 Library Agent 服務觀察配額行為,例如速率限制。

Library Agent 服務會公開兩項 API:

  • GetShelf:擷取特定書架的詳細資料,且沒有速率限制。
  • ListShelves:擷取所有書架的清單,每分鐘最多可提出兩項要求。

本頁面適用於應用程式運算子群組中的開發人員,他們負責監控專案的配額和用量模式。詳情請參閱 GDC 氣隙環境適用的目標對象說明文件

事前準備

與 Library Agent 服務互動前,請確認您具備正確的權限和服務端點:

  1. 如要取得與 Library Agent 服務互動所需的權限,請要求專案 IAM 管理員在專案命名空間中授予您 LibraryAgent 使用者角色。舉例來說,專案 IAM 管理員可以套用 RoleBinding 資源,在專案命名空間中將 libraryagent-user 角色繫結至您的使用者帳戶:

    kubectl apply -f - <<EOF
    apiVersion: rbac.authorization.k8s.io/v1
    kind: RoleBinding
    metadata:
      name: libraryagent-user-binding
      namespace: PROJECT_NAMESPACE
    subjects:
    - kind: User
      name: USER_EMAIL_ADDRESS
      apiGroup: rbac.authorization.k8s.io
    roleRef:
      kind: Role
      name: libraryagent-user
      apiGroup: rbac.authorization.k8s.io
    EOF
    

    更改下列內容:

    • PROJECT_NAMESPACE:專案的命名空間,例如 project-123
    • USER_EMAIL_ADDRESS:與使用者身分相關聯的電子郵件地址。
  2. 請要求有權存取機構管理員叢集,且具備 DNS 監控 (dns-monitor-mp) 角色的平台管理員,取得 Library Agent 服務的 DNS 名稱:

    kubectl get dnsregistration.network.private.gdc.goog -n libraryagent-system libraryagent -o jsonpath='{.status.fqdn}'
    

    如要編輯 DNS 註冊,PA 也必須具備 DNS Debugger (dns-debugger-mp) 角色。

遵守配額限制

如要與 Library Agent API 互動並觀察速率限制,請按照下列步驟操作:

  1. 為 DNS 名稱和驗證權杖設定環境變數:

    export DNS_NAME=LIBRARY_AGENT_DNS_NAME
    export TOKEN="$($HOME/gdcloud auth print-identity-token --audiences=https://$DNS_NAME)"
    

    LIBRARY_AGENT_DNS_NAME 換成您稍早取得的 DNS 名稱。

  2. 呼叫 GetShelf API,依名稱擷取特定書架。這個方法沒有速率限制:

    curl -v -X GET \
    -H "Authorization: Bearer ${TOKEN?}" \
    --insecure \
    https://$DNS_NAME/v1alpha1/projects/PROJECT_NAMESPACE/shelves/Shelf1
    

    PROJECT_NAMESPACE 替換為您的專案命名空間。

    您會收到HTTP 200 OK回覆。

  3. 呼叫 ListShelves API,列出 DNS 名稱中反映的位置的所有貨架。這個方法的速率限制為每分鐘兩項要求:

    curl -v -X GET \
    -H "Authorization: Bearer ${TOKEN?}" \
    --insecure \
    https://$DNS_NAME/v1alpha1/projects/PROJECT_NAMESPACE/shelves
    

    PROJECT_NAMESPACE 替換為您的專案命名空間。

    如果每分鐘的要求數未超過兩次,您會收到 HTTP 200 OK 回覆。

  4. 如要觀察配額強制執行情況,請重複呼叫 ListShelves API,直到超過速率限制為止:

    curl -v -X GET \
    -H "Authorization: Bearer ${TOKEN?}" \
    --insecure \
    https://$DNS_NAME/v1alpha1/projects/PROJECT_NAMESPACE/shelves
    

    PROJECT_NAMESPACE 替換為您的專案命名空間。

    如果超過限制,您會收到 HTTP 429 Too Many Requests 回應,表示配額系統已限制要求頻率。輸出結果會與下列內容相似:

    * Request completely sent off
    < HTTP/2 429
    < x-envoy-ratelimited: true
    < date: Thu, 24 Apr 2025 18:37:16 GMT
    < server: istio-envoy
    < x-envoy-upstream-service-time: 46
    <
    * Connection #0 to host libraryagent.org-1.zone1.google.gdch.test left intact
    

    速率限制不一定會精確執行,可能需要在一分鐘內提出超過兩項要求,才會觸發 429 錯誤。