Stai visualizzando la documentazione di Apigee e Apigee hybrid.
Visualizza la documentazione di
Apigee Edge.
Sintomi
I deployment dei proxy API non riescono con i seguenti messaggi di errore.
Messaggi di errore
Se il certificato TLS del servizio apigee-webhook-service.apigee-system.svc
è scaduto o non è ancora valido, nei log di apigee-webhook-service.apigee-system.svc
viene visualizzato il seguente messaggio di errore:apigee-watcher
{"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
Possibili cause
Causa | Descrizione |
---|---|
Il file apigee-serving-cert non è stato trovato | Se apigee-serving-cert non viene trovato nel
namespaces apigee-system , potrebbe verificarsi questo problema. |
Sono state create richieste di certificati duplicate per il rinnovo di apigee-serving-cert |
Se sono state create richieste di certificati duplicate per il rinnovo del
apigee-serving-cert certificato, il
apigee-serving-cert certificato potrebbe non essere rinnovato.
|
cert-manager non è in stato integro |
Se cert-manager non è in stato di salute, il certificato apigee-serving-cert potrebbe non essere rinnovato.
|
Causa: il file apigee-serving-cert non è stato trovato
Diagnosi
-
Verifica la disponibilità del certificato
apigee-serving-cert
nello spazio dei nomiapigee-system
:kubectl -n apigee-system get certificates apigee-serving-cert
Se questo certificato è disponibile, dovresti vedere un output simile al seguente:
NAME READY SECRET AGE apigee-serving-cert True webhook-server-cert 2d10h
-
Se il certificato apigee-serving-cert non viene trovato nello spazio dei nomi
apigee-system
, questo potrebbe essere il motivo del problema.
Risoluzione
-
apigee-serving-cert
viene creato dal comandoapigeectl init
durante l'installazione di Apigee hybrid. Pertanto, esegui il comando con il fileoverrides.yaml
pertinente per ricrearlo:apigeectl init -f overrides/overrides.yaml
-
Verifica che il certificato
apigee-serving-cert
sia stato creato:kubectl -n apigee-system get certificates apigee-serving-cert
Causa: sono state create richieste di certificati duplicate per il rinnovo di apigee-serving-cert
Diagnosi
-
Controlla i log del controller
cert-manager
e verifica se è stato restituito un messaggio di errore simile al seguente.Elenca tutti i pod
cert-manager
:kubectl -n cert-manager get pods
Un esempio di output:
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
Controlla i log del controller
cert-manager
:kubectl -n cert-manager logs cert-manager-66d9545484-772cr | grep "issuance is skipped until there are no more duplicates"
Un esempio di output:
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"
Se viene visualizzato un messaggio di errore simile a questo, il rinnovo del certificato
apigee-serving-cert
verrà impedito. -
Elenca tutte le richieste di certificato nello spazio dei nomi
apigee-system
e controlla se sono state create più richieste di certificato per il rinnovo della stessa revisione del certificatoapigee-serving-cert
:kubectl -n apigee-system get certificaterequests
Consulta il problema cert-manager
pertinente a questo problema all'indirizzo
cert-manager ha creato più oggetti CertificateRequest con la stessa revisione del certificato.
Risoluzione
-
Elimina tutte le richieste di certificato nello spazio dei nomi
apigee-system
:kubectl -n apigee-system delete certificaterequests --all
-
Verifica che le richieste di certificati duplicate siano state eliminate e che sia disponibile una sola richiesta di certificato per il certificato
apigee-serving-cert
nel namespaceapigee-system
:kubectl -n apigee-system get certificaterequests
-
Verifica che il certificato
apigee-serving-cert
sia stato rinnovato:kubectl -n apigee-system get certificates apigee-serving-cert -o yaml
Un esempio di output:
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
Causa: cert-manager non è integro
Diagnosi
-
Controlla lo stato dei pod
cert-manager
nello spazio dei nomicert-manager
:kubectl -n cert-manager get pods
Se i pod
cert-manager
sono integri, tutti i podcert-manager
dovrebbero essere pronti(1/1)
e nello statoRunning
, altrimenti questo potrebbe essere il motivo del problema: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
-
L'
cert-manager
può non riuscire per diversi motivi. Controlla i logcert-manager
, identifica il motivo dell'errore e risolvilo di conseguenza.Un motivo noto è che
cert-manager
non andrà a buon fine se non riesce a comunicare con l'API Kubernetes. In questo caso, viene visualizzato un messaggio di errore simile al seguente: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
Risoluzione
- Controlla l'integrità del cluster Kubernetes e risolvi eventuali problemi rilevati. Consulta la sezione Risoluzione dei problemi relativi ai cluster.
-
Per ulteriori informazioni sulla risoluzione dei problemi, consulta la sezione
Risoluzione dei problemi.
cert-manager
Deve raccogliere informazioni di diagnostica
Se il problema persiste anche dopo aver seguito le istruzioni riportate sopra, raccogli le seguenti informazioni di diagnostica, quindi contatta l'assistenza clienti Google Cloud.
- ID progetto Google Cloud
- Organizzazione Apigee hybrid
-
File
overrides.yaml
di Apigee hybrid, che maschera le informazioni sensibili. - Stato del pod Kubernetes in tutti gli spazi dei nomi:
kubectl get pods -A > kubectl-pod-status`date +%Y.%m.%d_%H.%M.%S`.txt
-
Dump
cluster-info
Kubernetes:# 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/*