Estás consultando la documentación de Apigee y Apigee Hybrid.
Consulta la documentación de
Apigee Edge.
Síntomas
Los despliegues de proxies de APIs fallan y devuelven los siguientes mensajes de error.
Mensajes de error
Si el certificado TLS del servicio apigee-webhook-service.apigee-system.svc
ha caducado o aún no es válido, se mostrará el siguiente mensaje de error en los registros de 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
Causas posibles
Causa | Descripción |
---|---|
No se encuentra apigee-serving-cert | Este problema puede producirse si no se encuentra apigee-serving-cert en el espacio de nombres apigee-system . |
Se han creado solicitudes de certificado duplicadas para renovar apigee-serving-cert . |
Si se crean solicitudes de certificado duplicadas para renovar el certificado apigee-serving-cert , es posible que no se renueve.apigee-serving-cert
|
cert-manager no está en buen estado |
Si cert-manager no está en buen estado, es posible que el certificado apigee-serving-cert no se renueve.
|
Causa: no se ha encontrado apigee-serving-cert
Diagnóstico
-
Comprueba la disponibilidad del certificado
apigee-serving-cert
en el espacio de nombresapigee-system
:kubectl -n apigee-system get certificates apigee-serving-cert
Si este certificado está disponible, debería aparecer un resultado similar al siguiente:
NAME READY SECRET AGE apigee-serving-cert True webhook-server-cert 2d10h
-
Si no se encuentra el certificado apigee-serving-cert en el espacio de nombres
apigee-system
, ese podría ser el motivo del problema.
Resolución
-
Actualiza
apigee-serving-cert
con Helm:helm upgrade ENV_NAME apigee-env/ \ --namespace APIGEE_NAMESPACE \ --set env=ENV_NAME \ --atomic \ -f OVERRIDES_FILE
Asegúrate de incluir todos los ajustes que se muestran, incluido
--atomic
para que la acción se revierta si falla. -
Verifica que se haya creado el certificado
apigee-serving-cert
:kubectl -n apigee-system get certificates apigee-serving-cert
Causa: se han creado solicitudes de certificado duplicadas para renovar apigee-serving-cert.
Diagnóstico
-
Comprueba los registros del controlador
cert-manager
y mira si se ha devuelto un mensaje de error similar al siguiente.Lista todos los pods de
cert-manager
:kubectl -n cert-manager get pods
Ejemplo de salida:
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
Consulta los registros del controlador
cert-manager
:kubectl -n cert-manager logs cert-manager-66d9545484-772cr | grep "issuance is skipped until there are no more duplicates"
Ejemplos de resultados:
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"
1 controller.go:167] cert-manager/certificates-readiness "msg"="re-queuing item due to error processing" "error"="multiple CertificateRequests were found for the 'next' revision 683, issuance is skipped until there are no more duplicates" "key"="apigee/apigee-istiod"
Si ves alguno de los mensajes que se muestran arriba, los certificados
apigee-serving-cert
yapigee-istiod-cert
no se renovarán. -
Lista todas las solicitudes de certificados del espacio de nombres
apigee-system
oapigee
, según el espacio de nombres que se haya impreso en las entradas de registro anteriores, y comprueba si se han creado varias solicitudes de certificados para renovar las mismas revisiones de certificadosapigee-serving-cert
oapigee-istiod-cert
:kubectl -n apigee-system get certificaterequests
Consulte el cert-manager
problema relacionado con este problema en
cert-manager ha creado varios objetos CertificateRequest con la misma
certificate-revision.
Resolución
-
Elimina todas las solicitudes de certificados del espacio de nombres
apigee-system
:kubectl -n apigee-system delete certificaterequests --all
-
Verifica que se hayan eliminado las solicitudes de certificado duplicadas y que solo haya una solicitud de certificado para el certificado
apigee-serving-cert
en el espacio de nombresapigee-system
:kubectl -n apigee-system get certificaterequests
-
Verifica que el certificado
apigee-serving-cert
se haya renovado:kubectl -n apigee-system get certificates apigee-serving-cert -o yaml
Ejemplo de salida:
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 no está en buen estado
Diagnóstico
-
Comprueba el estado de los pods
cert-manager
en el espacio de nombrescert-manager
:kubectl -n cert-manager get pods
Si los pods de
cert-manager
están en buen estado, todos los pods decert-manager
deberían estar listos(1/1)
y en estadoRunning
. De lo contrario, ese podría ser el motivo de este 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
-
La
cert-manager
puede fallar por muchos motivos. Consulta los registros decert-manager
para identificar el motivo del fallo y resuélvelo en consecuencia.Una de las razones conocidas es que
cert-manager
fallará si no puede comunicarse con la API de Kubernetes. En este caso, se mostrará un mensaje de error similar al siguiente::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
Resolución
- Comprueba el estado del clúster de Kubernetes y corrige los problemas que encuentres. Consulta Solución de problemas de clústeres.
-
Consulta la sección
Solución de problemas para obtener más información sobre
cert-manager
cómo solucionar problemas.
Debe recoger información de diagnóstico
Si el problema persiste incluso después de seguir las instrucciones anteriores, recoge la siguiente información de diagnóstico y ponte en contacto con el equipo de Asistencia de Google Cloud.
- Google Cloud ID de proyecto
- Organización de Apigee Hybrid
-
Archivo
overrides.yaml
de Apigee hybrid, ocultando la información sensible. - Estado de los pods de Kubernetes en todos los espacios de nombres:
kubectl get pods -A > kubectl-pod-status`date +%Y.%m.%d_%H.%M.%S`.txt
-
Volcado de
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/*