Observar a aplicação de cota

Neste documento, explicamos como observar a aplicação de cotas. O sistema de cotas com isolamento físico do Google Distributed Cloud (GDC) protege os serviços, evitando picos de uso imprevistos que podem sobrecarregar os serviços. Para entender como as cotas de serviço são configuradas e aplicadas, use o serviço do agente da biblioteca para observar comportamentos de cota, como a limitação de taxa.

O serviço Library Agent expõe duas APIs:

  • GetShelf: recupera detalhes de uma seção específica e não tem limitação de taxa.
  • ListShelves: recupera uma lista de todas as prateleiras e tem um limite de taxa de duas solicitações por minuto.

Esta página é destinada a desenvolvedores do grupo de operadores de aplicativos, que são responsáveis por monitorar cotas e padrões de uso do projeto. Para mais informações, consulte Públicos-alvo da documentação do GDC com isolamento físico.

Antes de começar

Antes de interagir com o serviço do agente da biblioteca, verifique se você tem as permissões corretas e o endpoint do serviço:

  1. Para receber as permissões necessárias para interagir com o serviço Library Agent, peça ao administrador do IAM do projeto para conceder a você o papel de Usuário do LibraryAgent no namespace do projeto. Por exemplo, o administrador do IAM do projeto pode vincular o papel libraryagent-user à sua conta de usuário no namespace do projeto aplicando um recurso RoleBinding:

    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
    

    Substitua:

    • PROJECT_NAMESPACE: o namespace do projeto, como project-123.
    • USER_EMAIL_ADDRESS: o endereço de e-mail associado à sua identidade de usuário.
  2. Peça a um administrador da plataforma com acesso ao cluster de administrador da organização e com o papel de Monitor do DNS (dns-monitor-mp) para obter o nome de DNS do serviço Library Agent:

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

    Se for necessário editar o registro de DNS, o PA também precisará ter a função de depurador de DNS (dns-debugger-mp).

Respeitar os limites de cota

Para interagir com as APIs do agente da biblioteca e observar a limitação de taxa, siga estas etapas:

  1. Defina variáveis de ambiente para o nome DNS e o token de autenticação:

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

    Substitua LIBRARY_AGENT_DNS_NAME pelo nome de DNS que você recebeu anteriormente.

  2. Chame a API GetShelf para buscar uma seção específica pelo nome. Esse método não tem limite de taxa:

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

    Substitua PROJECT_NAMESPACE pelo namespace do projeto.

    Você vai receber uma resposta HTTP 200 OK.

  3. Chame a API ListShelves para listar todas as prateleiras em um local que é refletido no nome DNS. Esse método é limitado a duas solicitações por minuto:

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

    Substitua PROJECT_NAMESPACE pelo namespace do projeto.

    Se você estiver dentro do limite de duas solicitações por minuto, vai receber uma resposta HTTP 200 OK.

  4. Para observar a aplicação da cota, chame a API ListShelves repetidamente até exceder o limite de taxa:

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

    Substitua PROJECT_NAMESPACE pelo namespace do projeto.

    Quando você excede o limite, recebe uma resposta HTTP 429 Too Many Requests, indicando que a taxa da solicitação foi limitada pelo sistema de cotas. O resultado será o seguinte:

    * 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
    

    A aplicação do limite de taxa nem sempre é precisa. Pode ser necessário mais de dois pedidos em um minuto para acionar o erro 429.