Esta é a documentação da Apigee e da Apigee híbrida.
Confira a documentação da Apigee Edge.
Sintomas
As implantações de proxy de API falham com as mensagens de erro a seguir.
Mensagens de erro
Se o certificado TLS do
serviço apigee-webhook-service.apigee-system.svc
tiver expirado
ou ainda não for válido, a seguinte mensagem de erro será exibida nos
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 possíveis
Causa | Descrição |
---|---|
O apigee-serving-cert não foi encontrado | Se apigee-serving-cert não for encontrado no
namespace apigee-system , o problema poderá ocorrer. |
Solicitações de certificado duplicadas foram criadas para
renovar apigee-serving-cert |
Se solicitações duplicadas forem criadas para renovar o
certificado apigee-serving-cert , o
certificado apigee-serving-cert talvez não seja renovado.
|
O cert-manager não está íntegro |
Se cert-manager não estiver íntegro, o
certificado apigee-serving-cert poderá não ser renovado.
|
Causa: o apigee-serving-cert não foi encontrado
Diagnóstico
-
Verifique a disponibilidade do certificado
apigee-serving-cert
no namespaceapigee-system
:kubectl -n apigee-system get certificates apigee-serving-cert
Se o certificado estiver disponível, uma resposta semelhante a esta será exibida:
NAME READY SECRET AGE apigee-serving-cert True webhook-server-cert 2d10h
-
Se o certificado apigee-serving-cert não for encontrado no
namespace
apigee-system
, esse poderá ser o motivo do problema.
Resolução
-
O
apigee-serving-cert
é criado pelo comandoapigeectl init
durante a instalação da Apigee híbrida. Por isso, execute o comando com o arquivooverrides.yaml
relevante para recriá-lo:apigeectl init -f overrides/overrides.yaml
-
Verifique se o certificado
apigee-serving-cert
foi criado:kubectl -n apigee-system get certificates apigee-serving-cert
Causa: solicitações de certificado duplicadas foram criadas para renovar o apigee-serving-cert
Diagnóstico
-
Verifique os registros do controlador
cert-manager
e confira se alguma mensagem de erro semelhante à seguinte foi retornada.Liste todos os pods
cert-manager
:kubectl -n cert-manager get pods
Um exemplo de saída:
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
Verifique os registros do controlador
cert-manager
:kubectl -n cert-manager logs cert-manager-66d9545484-772cr | grep "issuance is skipped until there are no more duplicates"
Um exemplo de saída:
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 uma mensagem de erro semelhante a esta for exibida, isso impedirá a renovação do certificado
apigee-serving-cert
. -
Liste todas as solicitações de certificado no namespace
apigee-system
e verifique se várias solicitações foram criadas para renovar a mesma revisão de certificadoapigee-serving-cert
:kubectl -n apigee-system get certificaterequests
Confira o problema cert-manager
relevante para essa questão em
O cert-manager criou vários objetos CertificateRequest com a mesma
certificate-revision.
Resolução
-
Exclua todas as solicitações de certificado no namespace
apigee-system
:kubectl -n apigee-system delete certificaterequests --all
-
Verifique se as solicitações de certificado duplicadas foram excluídas e se apenas
uma solicitação está disponível para o certificado
apigee-serving-cert
no namespaceapigee-system
:kubectl -n apigee-system get certificaterequests
-
Verifique se o certificado
apigee-serving-cert
foi renovado:kubectl -n apigee-system get certificates apigee-serving-cert -o yaml
Um exemplo de saída:
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: o cert-manager não está íntegro
Diagnóstico
-
Verifique a integridade dos pods
cert-manager
no namespacecert-manager
:kubectl -n cert-manager get pods
Se os pods
cert-manager
estiverem íntegros, todos os podscert-manager
estarão prontos(1/1)
e no estadoRunning
. Caso contrário, esse poderá ser o motivo do 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
-
O
cert-manager
pode falhar por vários motivos. Verifique os registroscert-manager
, identifique o motivo da falha e resolva o problema adequadamente.Um motivo conhecido é que o
cert-manager
falhará se não conseguir se comunicar com a API Kubernetes. Nesse caso, uma mensagem de erro semelhante a esta será exibida: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
Resolução
- Verifique a integridade do cluster do Kubernetes e corrija os problemas encontrados. Consulte Solução de problemas de clusters.
-
Consulte
Solução de problemas para mais informações
sobre a solução de problemas do
cert-manager
.
É necessário coletar informações de diagnóstico
Se o problema persistir mesmo depois de seguir as instruções acima, reúna as seguintes informações de diagnóstico e entre em contato com o Suporte do Google Cloud.
- ID do projeto do Google Cloud
- Organização da Apigee híbrida
-
Arquivo
overrides.yaml
da Apigee híbrida, mascarando todas as informações sensíveis. - Status do pod do Kubernetes em todos os namespaces:
kubectl get pods -A > kubectl-pod-status`date +%Y.%m.%d_%H.%M.%S`.txt
-
Despejo
cluster-info
do 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/*