Osserva l'applicazione delle quote

Questo documento spiega come osservare l'applicazione delle quote. Il sistema di quote Google Distributed Cloud (GDC) con air gap protegge i servizi prevenendo picchi di utilizzo imprevisti che potrebbero sovraccaricarli. Per aiutarti a capire come vengono configurate e applicate le quote di servizio, puoi utilizzare il servizio Library Agent per osservare i comportamenti delle quote, ad esempio limitazione di frequenza.

Il servizio Library Agent espone due API:

  • GetShelf: recupera i dettagli di una sezione specifica e non è soggetto a limiti di frequenza.
  • ListShelves: recupera un elenco di tutti gli scaffali e ha un limite di frequenza di due richieste al minuto.

Questa pagina è dedicata agli sviluppatori del gruppo di operatori delle applicazioni, che sono responsabili del monitoraggio delle quote e dei pattern di utilizzo per il loro progetto. Per maggiori informazioni, consulta Segmenti di pubblico per la documentazione air-gap di GDC.

Prima di iniziare

Prima di interagire con il servizio Library Agent, assicurati di disporre delle autorizzazioni corrette e dell'endpoint del servizio:

  1. Per ottenere le autorizzazioni necessarie per interagire con il servizio Library Agent, chiedi all'amministratore IAM del progetto di concederti il ruolo Utente LibraryAgent nello spazio dei nomi del progetto. Ad esempio, l'amministratore IAM del progetto può associare il ruolo libraryagent-user al tuo account utente nello spazio dei nomi del progetto applicando una risorsa 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
    

    Sostituisci quanto segue:

    • PROJECT_NAMESPACE: lo spazio dei nomi del progetto, ad esempio project-123.
    • USER_EMAIL_ADDRESS: l'indirizzo email associato alla tua identità utente.
  2. Chiedi a un amministratore della piattaforma che ha accesso al cluster di amministrazione dell'organizzazione e che dispone del ruolo Monitor DNS (dns-monitor-mp) di ottenere il nome DNS per il servizio agente della libreria:

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

    Se devi modificare la registrazione DNS, l'amministratore delegato deve disporre anche del ruolo Debugger DNS (dns-debugger-mp).

Rispetta i limiti di quota

Per interagire con le API Library Agent e osservare limitazione di frequenza, segui questi passaggi:

  1. Imposta le variabili di ambiente per il nome DNS e il token di autenticazione:

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

    Sostituisci LIBRARY_AGENT_DNS_NAME con il nome DNS ottenuto in precedenza.

  2. Chiama l'API GetShelf per recuperare uno scaffale specifico per nome. Questo metodo non ha limiti di frequenza:

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

    Sostituisci PROJECT_NAMESPACE con lo spazio dei nomi del progetto.

    Ricevi una risposta HTTP 200 OK.

  3. Chiama l'API ListShelves per elencare tutti gli scaffali in una posizione indicata nel nome DNS. Questo metodo è limitato a due richieste al minuto:

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

    Sostituisci PROJECT_NAMESPACE con lo spazio dei nomi del progetto.

    Se rientri nel limite di due richieste al minuto, ricevi una risposta HTTP 200 OK.

  4. Per osservare l'applicazione della quota, chiama ripetutamente l'API ListShelves finché non superi il limite di frequenza:

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

    Sostituisci PROJECT_NAMESPACE con lo spazio dei nomi del progetto.

    Quando superi il limite, ricevi una risposta HTTP 429 Too Many Requests, che indica che la richiesta è stata limitata dal sistema di quote. L'output è simile al seguente:

    * 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
    

    L'applicazione del limite di frequenza non è sempre precisa. Potrebbero essere necessarie più di due richieste in un minuto per attivare l'errore 429.