Sie lesen gerade die Dokumentation zu Apigee und Apigee Hybrid.
Apigee Edge-Dokumentation aufrufen.
Symptome
API-Proxy-Bereitstellungen schlagen mit den folgenden Fehlermeldungen fehl.
Fehlermeldungen
Wenn das TLS-Zertifikat des Dienstes apigee-webhook-service.apigee-system.svc
abgelaufen oder noch nicht gültig ist, wird die folgende Fehlermeldung in Logs vom Typ apigee-watcher
angezeigt:
{"level":"error","ts":1687991930.7745812,"caller":"watcher/watcher.go:60", "msg":"error during watch","name":"ingress","error":"INTERNAL: INTERNAL: failed to update ApigeeRoute [org-env]-group-84a6bb5, namespace apigee: Internal error occurred: failed calling webhook \"mapigeeroute.apigee.cloud.google.com\": Post \"https://apigee-webhook-service.apigee-system.svc:443/mutate-apigee-cloud-google-com-v1alpha1-apigeeroute?timeout=30s\": x509: certificate has expired or is not yet valid: current time 2023-06-28T22:38:50Z is after 2023-06-17T17:14:13Z, INTERNAL: failed to update ApigeeRoute [org-env]-group-e7b3ff6, namespace apigee
Mögliche Ursachen
Ursache | Beschreibung |
---|---|
Das Apigee-Bereitstellungszertifikat wurde nicht gefunden | Wenn apigee-serving-cert im Namespace apigee-system nicht gefunden wird, kann dieses Problem auftreten. |
Doppelte Zertifikatsanfragen wurden zur Verlängerung von apigee-serving-cert erstellt |
Wenn doppelte Zertifikatsanfragen zur Verlängerung des apigee-serving-cert -Zertifikats erstellt werden, wird das apigee-serving-cert -Zertifikat möglicherweise nicht verlängert.
|
cert-manager ist nicht fehlerfrei |
Wenn cert-manager nicht fehlerfrei ist, wird das Zertifikat apigee-serving-cert möglicherweise nicht verlängert.
|
Ursache: Das Apigee-Bereitstellungszertifikat wurde nicht gefunden
Diagnose
-
Prüfen Sie die Verfügbarkeit des Zertifikats
apigee-serving-cert
im Namespaceapigee-system
:kubectl -n apigee-system get certificates apigee-serving-cert
Wenn dieses Zertifikat verfügbar ist, sollte die Ausgabe in etwa so aussehen:
NAME READY SECRET AGE apigee-serving-cert True webhook-server-cert 2d10h
-
Wenn das Apigee-Serving-Zertifikat nicht im Namespace
apigee-system
gefunden wird, kann dies der Grund für das Problem sein.
Lösung
-
apigee-serving-cert
wird während der Installation von Apigee Hybrid durch den Befehlapigeectl init
erstellt. Führen Sie daher diesen Befehl mit der entsprechenden Dateioverrides.yaml
aus, um sie neu zu erstellen:apigeectl init -f overrides/overrides.yaml
-
Prüfen Sie, ob das Zertifikat
apigee-serving-cert
erstellt wurde:kubectl -n apigee-system get certificates apigee-serving-cert
Ursache: Doppelte Zertifikatsanfragen wurden zur Verlängerung von apigee-serving-cert erstellt
Diagnose
-
Prüfen Sie die
cert-manager
-Controller-Logs und prüfen Sie, ob eine Fehlermeldung ähnlich der folgenden zurückgegeben wurde.Listen Sie alle
cert-manager
-Pods auf:kubectl -n cert-manager get pods
Beispielausgabe:
NAME READY STATUS RESTARTS AGE cert-manager-66d9545484-772cr 1/1 Running 0 6d19h cert-manager-cainjector-7d8b6bd6fb-fpz6r 1/1 Running 0 6d19h cert-manager-webhook-669b96dcfd-6mnm2 1/1 Running 0 6d19h
Prüfen Sie die
cert-manager
-Controller-Logs:kubectl -n cert-manager logs cert-manager-66d9545484-772cr | grep "issuance is skipped until there are no more duplicates"
Beispielausgabe:
1 controller.go:163] cert-manager/certificates-readiness "msg"="re-queuing item due to error processing" "error"="multiple CertificateRequests were found for the 'next' revision 3, issuance is skipped until there are no more duplicates" "key"="apigee-system/apigee-serving-cert"
Wenn eine Fehlermeldung wie diese angezeigt wird, wird das
apigee-serving-cert
-Zertifikat nicht verlängert. -
Listen Sie alle Zertifikatsanfragen im Namespace
apigee-system
auf und prüfen Sie, ob mehrere Zertifikatsanfragen für die Verlängerung derselbenapigee-serving-cert
-Zertifikatsüberarbeitung erstellt wurden:kubectl -n apigee-system get certificaterequests
Das für dieses Problem relevante Problem cert-manager
finden Sie unter
cert-manager hat mehrere CertificateRequest-Objekte mit derselben Zertifikatsprüfung erstellt.
Lösung
-
Löschen Sie alle Zertifikatsanfragen im Namespace
apigee-system
:kubectl -n apigee-system delete certificaterequests --all
-
Prüfen Sie, ob doppelte Zertifikatsanfragen gelöscht wurden und nur eine Zertifikatsanfrage für das Zertifikat
apigee-serving-cert
im Namespaceapigee-system
verfügbar ist:kubectl -n apigee-system get certificaterequests
-
Prüfen Sie, ob das Zertifikat
apigee-serving-cert
verlängert wurde:kubectl -n apigee-system get certificates apigee-serving-cert -o yaml
Beispielausgabe:
apiVersion: cert-manager.io/v1 kind: Certificate metadata: creationTimestamp: "2023-06-26T13:25:10Z" generation: 1 name: apigee-serving-cert namespace: apigee-system resourceVersion: "11053" uid: e7718341-b3ca-4c93-a6d4-30cf70a33e2b spec: dnsNames: - apigee-webhook-service.apigee-system.svc - apigee-webhook-service.apigee-system.svc.cluster.local issuerRef: kind: Issuer name: apigee-selfsigned-issuer secretName: webhook-server-cert status: conditions: - lastTransitionTime: "2023-06-26T13:25:11Z" message: Certificate is up to date and has not expired observedGeneration: 1 reason: Ready status: "True" type: Ready notAfter: "2023-09-24T13:25:11Z" notBefore: "2023-06-26T13:25:11Z" renewalTime: "2023-08-25T13:25:11Z" revision: 1
Ursache: cert-manager ist nicht fehlerfrei
Diagnose
-
Prüfen Sie den Status der
cert-manager
-Pods im Namespacecert-manager
:kubectl -n cert-manager get pods
Wenn
cert-manager
-Pods fehlerfrei sind, sollten allecert-manager
-Pods(1/1)
und im StatusRunning
bereit sein. Andernfalls kann dies der Grund für das Problem sein:NAME READY STATUS RESTARTS AGE cert-manager-59cf78f685-mlkvx 1/1 Running 0 15d cert-manager-cainjector-78cc865768-krjcp 1/1 Running 0 15d cert-manager-webhook-77c4fb46b6-7g9g6 1/1 Running 0 15d
-
Der
cert-manager
kann aus verschiedenen Gründen fehlschlagen. Prüfen Sie diecert-manager
-Logs, identifizieren Sie den Grund für den Fehler und beheben Sie sie entsprechend.Ein bekannter Grund ist, dass
cert-manager
fehlschlägt, wenn er nicht mit der Kubernetes API kommunizieren kann. In diesem Fall erhalten Sie eine Fehlermeldung ähnlich der folgenden:E0601 00:10:27.841516 1 leaderelection.go:330] error retrieving resource lock kube-system/cert-manager-controller: Get "https://192.168.0.1:443/api/v1/namespaces/kube-system/configmaps/cert-manager-controller": dial tcp 192.168.0.1:443: i/o timeout
Lösung
- Prüfen Sie den Status des Kubernetes-Clusters und beheben Sie etwaige Probleme. Siehe Fehlerbehebung für Cluster.
-
Weitere Informationen
Fehlerbehebung für zusätzliche
cert-manager
Informationen zur Fehlerbehebung.
Erfassen von Diagnoseinformationen erforderlich
Wenn das Problem auch nach Befolgen der obigen Anweisungen weiterhin besteht, sammeln Sie die folgenden Diagnoseinformationen und wenden Sie sich dann an den Google Cloud Customer Care:
- Google Cloud-Projekt-ID
- Apigee Hybrid-Organisation
-
Apigee Hybrid-
overrides.yaml
-Datei, in der alle vertraulichen Informationen maskiert sind. - Kubernetes-Pod-Status in allen Namespaces:
kubectl get pods -A > kubectl-pod-status`date +%Y.%m.%d_%H.%M.%S`.txt
-
Kubernetes-Dump
cluster-info
:# generate kubernetes cluster-info dump kubectl cluster-info dump -A --output-directory=/tmp/kubectl-cluster-info-dump # zip kubernetes cluster-info dump zip -r kubectl-cluster-info-dump`date +%Y.%m.%d_%H.%M.%S`.zip /tmp/kubectl-cluster-info-dump/*