In diesem Dokument wird erläutert, wie Sie die Durchsetzung von Kontingenten beobachten können. Das Kontingentsystem von Google Distributed Cloud (GDC) Air-gapped schützt Dienste vor unvorhergesehenen Nutzungsspitzen, die zu einer Überlastung führen könnten. Damit Sie besser nachvollziehen können, wie Dienstkontingente konfiguriert und erzwungen werden, können Sie den Library Agent-Dienst verwenden, um das Kontingentverhalten zu beobachten, z. B. die Ratenbegrenzung.
Der Library Agent-Dienst bietet zwei APIs:
- GetShelf: Ruft Details zu einem bestimmten Shelf ab und unterliegt keiner Ratenbeschränkung.
- ListShelves: Ruft eine Liste aller Regale ab und hat ein Ratenlimit von zwei Anfragen pro Minute.
Diese Seite richtet sich an Entwickler in der Gruppe der Anwendungsoperatoren, die für die Überwachung von Kontingenten und Nutzungsmustern für ihr Projekt verantwortlich sind. Weitere Informationen finden Sie unter Dokumentation zu Zielgruppen für GDC mit Air Gap.
Hinweise
Bevor Sie mit dem Library Agent-Dienst interagieren, müssen Sie die richtigen Berechtigungen und den Dienstendpunkt haben:
Bitten Sie Ihren Projekt-IAM-Administrator, Ihnen die Rolle LibraryAgent User in Ihrem Projekt-Namespace zuzuweisen, um die Berechtigungen zu erhalten, die Sie für die Interaktion mit dem Library Agent-Dienst benötigen. Der Projekt-IAM-Administrator kann beispielsweise die Rolle
libraryagent-useran Ihr Nutzerkonto in Ihrem Projektnamespace binden, indem er eineRoleBinding-Ressource anwendet: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 EOFErsetzen Sie Folgendes:
PROJECT_NAMESPACE: der Namespace Ihres Projekts, z. B.project-123.USER_EMAIL_ADDRESS: die E-Mail-Adresse, die mit Ihrer Nutzeridentität verknüpft ist.
Bitten Sie einen Plattformadministrator, der Zugriff auf den Organisationsadministratorcluster und die Rolle „DNS Monitor“ (
dns-monitor-mp) hat, den DNS-Namen für den Library Agent-Dienst abzurufen:kubectl get dnsregistration.network.private.gdc.goog -n libraryagent-system libraryagent -o jsonpath='{.status.fqdn}'Wenn Sie die DNS-Registrierung bearbeiten müssen, muss die PA auch die Rolle „DNS Debugger“ (
dns-debugger-mp) haben.
Kontingentlimits einhalten
So interagieren Sie mit den Library Agent APIs und beobachten die Ratenbegrenzung:
Legen Sie Umgebungsvariablen für den DNS-Namen und Ihr Authentifizierungstoken fest:
export DNS_NAME=LIBRARY_AGENT_DNS_NAME export TOKEN="$($HOME/gdcloud auth print-identity-token --audiences=https://$DNS_NAME)"Ersetzen Sie
LIBRARY_AGENT_DNS_NAMEdurch den zuvor abgerufenen DNS-Namen.Rufen Sie die
GetShelfAPI auf, um ein bestimmtes Regal nach Namen abzurufen. Für diese Methode gilt kein Ratenlimit:curl -v -X GET \ -H "Authorization: Bearer ${TOKEN?}" \ --insecure \ https://$DNS_NAME/v1alpha1/projects/PROJECT_NAMESPACE/shelves/Shelf1Ersetzen Sie
PROJECT_NAMESPACEdurch den Namespace Ihres Projekts.Sie erhalten eine
HTTP 200 OK-Antwort.Rufen Sie die
ListShelvesAPI auf, um alle Regale an einem Standort aufzulisten, der im DNS-Namen angegeben ist. Diese Methode ist auf zwei Anfragen pro Minute beschränkt:curl -v -X GET \ -H "Authorization: Bearer ${TOKEN?}" \ --insecure \ https://$DNS_NAME/v1alpha1/projects/PROJECT_NAMESPACE/shelvesErsetzen Sie
PROJECT_NAMESPACEdurch den Namespace Ihres Projekts.Wenn Sie das Limit von zwei Anfragen pro Minute nicht überschreiten, erhalten Sie eine
HTTP 200 OK-Antwort.Rufen Sie die
ListShelvesAPI wiederholt auf, bis Sie das Ratenlimit überschreiten, um die Kontingentdurchsetzung zu beobachten:curl -v -X GET \ -H "Authorization: Bearer ${TOKEN?}" \ --insecure \ https://$DNS_NAME/v1alpha1/projects/PROJECT_NAMESPACE/shelvesErsetzen Sie
PROJECT_NAMESPACEdurch den Namespace Ihres Projekts.Wenn Sie das Limit überschreiten, erhalten Sie eine
HTTP 429 Too Many Requests-Antwort, die angibt, dass die Anfrage vom Kontingentsystem ratenbegrenzt wurde. Die Ausgabe sieht etwa so aus:* 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 intactDie Durchsetzung von Ratenbeschränkungen ist nicht immer präzise. Es kann mehr als zwei Anfragen pro Minute dauern, bis der Fehler 429 ausgelöst wird.