Diese Seite gilt für Apigee, aber nicht für Apigee Hybrid.
Apigee Edge-Dokumentation aufrufen
Auf dieser Seite wird beschrieben, wie Sie Probleme mit dem Apigee APIM-Operator für Kubernetes beheben. Es gibt eine Reihe von Tools, mit denen Sie auftretende Probleme beheben können. Auf dieser Seite wird beschrieben, wie Sie den Status der benutzerdefinierten Ressourcen prüfen, den Log-Explorer verwenden und Probleme mit Apigee-Laufzeitverkehr beheben.
Status der benutzerdefinierten Ressource prüfen
Jede benutzerdefinierte Ressource, die im Apigee APIM-Operator für Kubernetes verwendet wird, enthält ein Statusobjekt mit zwei Feldern:
- STATE: Beschreibt den Status der Ressource. Zulässige Werte sind
running
undcreated
. - ERRORMESSAGE: Wenn der Ressourcenvorgang fehlschlägt, wird das Feld für die Fehlermeldung mit einer Erläuterung ausgefüllt.
Wenn eine benutzerdefinierte Ressourcen-yaml
-Datei auf den Cluster angewendet wird, nimmt Kubernetes die entsprechenden Änderungen an der zugrunde liegenden Infrastruktur vor. Wenn Sie das Statusobjekt der benutzerdefinierten Ressource prüfen, erhalten Sie Informationen zum Status der Ressource und können sich alle daraus resultierenden Fehler ansehen, falls die zugrunde liegenden Infrastrukturvorgänge fehlschlagen.
Sie können den Status der benutzerdefinierten Ressource mit dem folgenden Befehl prüfen:
kubectl -n NAMESPACE get CUSTOM_RESOURCE_KIND CUSTOM_RESOURCE_NAME
Wobei:
NAMESPACE
: Der Namespace, in dem die benutzerdefinierte Ressource bereitgestellt wird.CUSTOM_RESOURCE_KIND
: Die Art der benutzerdefinierten Ressource.CUSTOM_RESOURCE_NAME
: Der Name der benutzerdefinierten Ressource.
Mit dem folgenden Befehl wird beispielsweise der Status der benutzerdefinierten APIMExtensionPolicy
-Ressource mit dem Namen apim-extension-policy
im Namespace apim
geprüft:
kubectl -n apim get APIMExtensionPolicy apim-extension-policy-1
Die Ausgabe sieht in etwa so aus:
NAME STATE ERRORMESSAGE apim-extension-policy Create_Update_Failed Permission denied
Logs ansehen
In diesem Abschnitt wird beschrieben, wie Sie mithilfe von Protokollen Probleme mit der GKE-Gateway-Ressource (Google Kubernetes Engine) und der APIM-Betreiberressource beheben.
GKE-Gateway-Logs
Wenn Sie die APIMExtensionPolicy anwenden, wird das in Ihrem Cluster erstellte GKE-Gateway mit einer Traffic Extension konfiguriert.
Die Erweiterung verwendet die externe Verarbeitung von Kubernetes (ext-proc
), um die Apigee-Laufzeit- und Prozessrichtlinien aufzurufen.
Die Logs, die sich auf den ext-proc
-Traffic beziehen, können bei der Fehlerbehebung hilfreich sein.
Logs für ext-proc
-Infofelder ansehen
So rufen Sie Logs für den Traffic für Zusatzinformationen vom Typ ext-proc
auf:
- Rufen Sie die ID des Backend-Dienstes ab, der für die Apigee-Laufzeit erstellt wurde:
kubectl get gateways.gateway.networking.k8s.io GATEWAY_NAME -o=jsonpath="{.metadata.annotations.networking\.gke\.io/backend-services}"
Dabei ist
GATEWAY_NAME
der Name des GKE-Gateways.Der Back-End-Dienst enthält
apigee-service-extension-backend-service
in der ID. - Folgen Sie der Anleitung unter Logging in einem Backend-Dienst aktivieren, um das Logging zu aktivieren.
- Rufen Sie in der Google Cloud Console die Seite Log-Explorer auf, um sich Logs anzusehen.
- Unter
Protokollmeldungen für einen Backend-Dienst finden Sie Informationen zu verfügbaren Popup-Logeinträgen, einschließlich der JSON-Nutzlaststruktur für den
service_extension_info
-Load Balancer-Logeintrag. Sie können im Log-Explorer über das Feld Suchen nach den relevanten Informationen filtern.Das folgende Beispiel ist ein Logeintrag, der bei einem fehlgeschlagenen
ext-proc
-Infofeld angezeigt werden kann:{ "insertId": "s14dmrf10g6hi", "jsonPayload": { "serviceExtensionInfo": [ { "extension": "ext11", "perProcessingRequestInfo": [ { "eventType": "REQUEST_HEADERS", "latency": "0.001130s" } ], "backendTargetType": "BACKEND_SERVICE", "grpcStatus": "ABORTED", "backendTargetName": "gkegw1-2y13-apigee-service-extension-backend-service-443-yhsnrauznpwh", "chain": "chain1", "resource": "projects/${PROJECT}/locations/us-west1/lbTrafficExtensions/apim-extension" } ], "backendTargetProjectNumber": "projects/763484362408", "@type": "type.googleapis.com/google.cloud.loadbalancing.type.LoadBalancerLogEntry" }, "httpRequest": { ... }, "resource": { "type": "internal_http_lb_rule", "labels": { ... } }, "timestamp": "2024-04-01T20:15:15.182137Z", "severity": "INFO", "logName": "projects/${PROJECT}/logs/loadbalancing.googleapis.com%2Frequests", "receiveTimestamp": "2024-04-01T20:15:18.209706689Z" }
Beachten Sie, dass im Feld
grpcStatus
ABORTED
angezeigt wird.
APIM-Operator-Logs
Der APIM-Operator ist ein Kubernetes-Operator, der benutzerdefinierte APIM-Ressourcenereignisse (z. B. Erstellen, Lesen, Aktualisieren und Löschen) verarbeitet und diese Ereignisse in die entsprechende Apigee-Konfiguration übersetzt.
So rufen Sie Logs für den APIM-Betreiber auf:
- Rufen Sie in der Google Cloud Console die Seite Log-Explorer auf, um sich Logs anzusehen.
- Geben Sie im Bereich Abfrage eine Abfrage wie die folgende ein:
resource.type="k8s_container" resource.labels.namespace_name="apim" labels.k8s-pod/app="apigee-apim-operator" severity>=DEFAULT
- Klicken Sie auf Abfrage ausführen.
- Die gefilterten Logeinträge werden im Bereich Abfrageergebnisse angezeigt.
- Notieren Sie sich alle Probleme beim Erstellen, Aktualisieren oder Löschen der
APIMExtensionPolicy
in Google Cloud networks-Dienste oder Probleme mit API-Produkten in Apigee-Verwaltungsebenen.Ein Beispiel für einen Fehler sieht in etwa so aus:
ApimExtensionPolicy creation status400 response body:{ "error": { "code": 400, "message": "The request was invalid: backend service https://www.googleapis.com/compute/v1/projects/... must use HTTP/2 as the protocol", "status": "INVALID_ARGUMENT", "details": [ { "@type": "type.googleapis.com/google.rpc.BadRequest", "fieldViolations": [ { "field": "lb_traffic_extension.extension_chains[0].extensions[0].service" } ] }, { "@type": "type.googleapis.com/google.rpc.RequestInfo", "requestId": "d4e6f00ab5d367ec" } ] } }
403-Zugriffsfehler im APIM-Betreiber beheben
Wenn Sie Fehler mit dem Statuscode 403
erhalten, die auf Zugriffsprobleme hinweisen, prüfen Sie Folgendes:
- In Ihrem GKE-Cluster ist die Identitätsföderation von Arbeitslasten aktiviert. Die Identitätsföderation von Arbeitslasten ist für Cluster, die im Autopilot-Modus erstellt wurden, standardmäßig aktiviert. Wenn Sie einen Cluster im Standardmodus erstellt haben, aktivieren Sie die Workload Identity-Föderation wie unter Workload Identity-Föderation für GKE aktivieren beschrieben.
- Das Kubernetes-Dienstkonto (
apim-ksa
) wird von der Helm-Installation korrekt annotiert. Sie können dies mit dem folgenden Befehl prüfen:kubectl describe serviceaccount apim-ksa -n NAMESPACE
Dabei ist NAMESPACE der Namespace, in dem der APIM-Operator bereitgestellt wird.
Prüfen Sie, ob
apigee-apim-gsa@${PROJECT}.iam.gserviceaccount.com
im Feld Anmerkungen der Ausgabe angezeigt wird.Beispiel:
kubectl describe serviceaccount apim-ksa -n apim
Die Ausgabe sieht in etwa so aus: Name: apim-ksa Namespace: apim Labels: ... Anmerkungen: iam.gke.io/gcp-service-account: apigee-apim-gsa@apigee-product-demo.iam.gserviceaccount.com ... Secrets für das Abrufen von Images:
Bereitstellbare Secrets: Tokens: Ereignisse: - Das Dienstkonto
apigee-apim-gsa
hat die richtigen IAM-Rollen und -Berechtigungen. Sie können dies mit dem folgenden Befehl prüfen:gcloud iam service-accounts get-iam-policy \ apigee-apim-gsa@${PROJECT}.iam.gserviceaccount.com
Das Dienstkonto muss die Rolle
roles/iam.workloadIdentityUser
haben.In der folgenden Ausgabe wird beispielsweise die Rolle
roles/iam.workloadIdentityUser
angezeigt:bindings: - members: - serviceAccount:${PROJECT}.svc.id.goog[/apim-ksa] role: roles/iam.workloadIdentityUser etag: BwYUpeaM7XQ= version: 1
- Für die erforderlichen Rollen gelten keine speziellen IAM-Bedingungen, die den Zugriff für den Operator verhindern würden.
Probleme mit Apigee-Laufzeitverkehr beheben
In diesem Abschnitt wird beschrieben, wie Sie Probleme mit Apigee-Laufzeitverkehr beheben. In den folgenden Abschnitten wird beschrieben, wie Sie Probleme mit gültigen und ungültigen Anfragen beheben.
Gültige Anfragen schlagen fehl
Wenn Sie keine gültigen Anfragen an Ihre Apigee-Laufzeit senden können, liegen möglicherweise die folgenden Probleme vor:
- Das GKE-Gateway kann die Apigee-Laufzeit nicht erreichen.
- Ihr API-Schlüssel oder Ihre JWT-Anmeldedaten sind ungültig.
- Das Apigee API-Produkt ist nicht für das richtige Ziel und die richtige Umgebung konfiguriert.
- Die Apigee-Laufzeit kennt das Apigee API-Produkt nicht.
Schritte zur Fehlerbehebung
So beheben Sie Probleme mit gültigen Anfragen:
- Aktivieren Sie Load Balancer-Logs für das GKE-Gateway und prüfen Sie die Logs, um die Ursache der Fehler aus der Erweiterungsanfrage zu ermitteln. Weitere Informationen finden Sie in den GKE-Gateway-Protokollen.
- Prüfen Sie, ob der Back-End-Dienst, auf den im ext-proc-Dienst verwiesen wird, fehlerfrei ist.
- Prüfen Sie die API-Produktkonfiguration in Apigee:
- Prüfen Sie, ob das API-Produkt für die richtige Umgebung aktiviert ist (z. B.
test
oderprod
). - Prüfen Sie, ob der Ressourcenpfad mit Ihrer Anfrage übereinstimmt. Ein Pfad wie
/
oder/**
entspricht jedem Pfad. Sie können auch Platzhalter*
oder**
verwenden, um einen Abgleich zu ermöglichen. - Prüfen Sie, ob Sie eine Entwickler-App für das API-Produkt konfiguriert haben. Das API-Produkt muss an eine Entwickler-App gebunden sein, um die API-Schlüssel zu validieren.
- Prüfen Sie, ob das API-Produkt für die richtige Umgebung aktiviert ist (z. B.
- Überprüfen Sie Ihre Anfrage an das Gateway:
- Prüfe, ob der Consumer Key im
x-api-key
-Header übergeben wird. - Der Consumer Key muss gültig sein. Die Anmeldedaten der Entwickler-App müssen für Ihr API-Produkt genehmigt sein.
- Prüfe, ob der Consumer Key im
Ungültige Anfragen werden ausgeführt
Wenn ungültige Anfragen an Ihre Apigee-Laufzeit erfolgreich sind, liegen möglicherweise die folgenden Probleme vor:
FailOpen
ist in Ihrer APIMExtensionPolicy auftrue
festgelegt.- Für den Load Balancer Ihres GKE-Gateways ist keine Traffic-Erweiterung festgelegt.
Schritte zur Fehlerbehebung
So beheben Sie Probleme mit ungültigen Anfragen:
- Prüfen Sie, ob eine Diensterweiterung vorhanden ist und auf die richtigen Back-End-Dienste und die Weiterleitungsregel für Ihr GKE-Gateway verweist.
Verwenden Sie den folgenden Befehl, um die Diensterweiterung aufzurufen:
gcloud beta service-extensions lb-traffic-extensions describe NAME_OF_APIM_EXTENSION_POLICY --location=LOCATION --project=PROJECT
Wobei:
NAME_OF_APIM_EXTENSION_POLICY
: Der Name der benutzerdefinierten RessourceAPIMExtensionPolicy
.PROJECT
: die Projekt-IDLOCATION
: Der Standort des GKE-Clusters, in dem Ihr Gateway bereitgestellt wird.
Die Ausgabe sollte in etwa so aussehen:
... extensionChains: - extensions: - authority: ext11.com failOpen: false # make sure this is false name: ext11 service: https://www.googleapis.com/compute/v1/projects/my-project/regions/us-west1/backendServices/gkegw1-2y13-apigee-service-extension-backend-service-443-yhsnrauznpwh # Confirm this is correct supportedEvents: - REQUEST_HEADERS - RESPONSE_HEADERS - REQUEST_BODY - RESPONSE_BODY timeout: 0.100s matchCondition: celExpression: 'true' # Confirm this is set name: chain1 forwardingRules: - https://www.googleapis.com/compute/v1/projects/my-project/regions/us-west1/forwardingRules/gkegw1-2y13-default-internal-http-h6c1hhp1ce6q # Confirm this is the correct forwarding rule for your application load balancer loadBalancingScheme: INTERNAL_MANAGED name: projects/my-project/locations/us-west1/lbTrafficExtensions/apim-extension-policy-1
Fehlende Analysen
Wenn Sie Apigee API Analytics für den APIM-Betreiber nicht in der Google Cloud Console sehen können, kann die Aufnahme in Apigee um einige Minuten verzögert werden.
Zusätzliche Ressourcen
Die folgenden Ressourcen können auch zur Behebung von Problemen mit APIM Operator- und Apigee-Laufzeit-Traffic verwendet werden: