Sintoma
Seus pods apigee-ingressgateway
mostram apenas 1 de 2 contêineres em execução quando você recebe a lista de pods.
Por exemplo, ao executar o comando:
kubectl -n apigee get pods -l app=apigee-ingressgateway
Saída:
NAME READY STATUS RESTARTS AGE apigee-ingressgateway-ext-ingress-myorg-hyb-8f2c412-shl9r 1/2 Running 0 6m48s apigee-ingressgateway-ext-ingress-myorg-hyb-8f2c412-vvzsf 1/2 Running 0 123m
Além disso, executar um comando describe
em um dos pods acima vai mostrar que a sondagem de prontidão falhou com um código de status 503.
Por exemplo, na seção Events
da descrição do pod, você pode ver a seguinte mensagem:
Events: Type Reason Age From Message ---- ------ ---- ---- ------- Warning Unhealthy 76s (x32903 over 18h) kubelet Readiness probe failed: HTTP probe failed with statuscode: 503
Possível causa
Causa | Descrição |
---|---|
A entrada da Apigee está configurada para detectar a porta 80 | A configuração de entrada da Apigee na porta 80 não é mais compatível a partir da Apigee híbrida 1.9. |
Causa: a entrada da Apigee está configurada para aguardar conexões na porta 80.
Esse problema ocorre porque o gateway de entrada da Apigee está configurado para ouvir na porta 80, que não é mais compatível a partir da Apigee híbrida 1.9.
Isso pode acontecer se você fez upgrade de uma versão anterior da Apigee híbrida que permitia a porta 80 ou se houver outra configuração incorreta que a ativou.
Diagnóstico
-
Receba uma lista dos seus pods
apigee-ingressgateway
.Execute este comando:
kubectl -n apigee get pods -l app=apigee-ingressgateway
Exemplo de saída
NAME READY STATUS RESTARTS AGE apigee-ingressgateway-ext-ingress-myorg-hyb-8f2c412-shl9r 1/2 Running 0 6m48s apigee-ingressgateway-ext-ingress-myorg-hyb-8f2c412-vvzsf 1/2 Running 0 123m
-
Descreva um dos pods listados para verificar os eventos:
kubectl -n apigee describe pod APIGEE_INGRESSGATEWAY_POD
Em que APIGEE_INGRESSGATEWAY_POD é um pod
apigee-ingressgateway
listado na resposta ao comando anterior.Exemplo de resposta:
Events: Type Reason Age From Message ---- ------ ---- ---- ------- Warning Unhealthy 76s (x32903 over 18h) kubelet Readiness probe failed: HTTP probe failed with statuscode: 503
-
Acesse os registros do pod APIGEE_INGRESSGATEWAY_POD.
kubectl -n apigee logs APIGEE_INGRESSGATEWAY_POD
Talvez você veja uma entrada de registro mostrando que a vinculação da porta 80 falhou devido a um erro de permissão negada, seguida de uma mensagem informando que o envoy não está pronto.
2025-09-11T06:16:45.457621Z error envoy config external/envoy/source/common/listener_manager/listener_manager_impl.cc:1186 listener '0.0.0.0_80' failed to bind or apply socket options: cannot bind '0.0.0.0:80': Permission denied ... 2025-09-11T06:16:46.365818Z warn Envoy proxy is NOT ready: config received from XDS server, but was rejected: cds updates: 1 successful, 0 rejected; lds updates: 0 successful, 1 rejected
- Analise a configuração atual do
apigeeroute
para encontrar aquela que tem a porta 80 (HTTP) ativada.-
Receba uma lista das rotas definidas da Apigee.
kubectl -n apigee get apigeeroute
Exemplo de resposta:
NAME STATE AGE myorg-hyb-dev-grp-000-33620d0 running 2d1h non-sni running 17s
-
Verifique cada
apigeeroute
para saber onde a porta 80 está definida.Execute o seguinte comando para cada
apigeeroute
listado na resposta ao comando anterior:kubectl -n apigee get apigeeroute APIGEE_ROUTE_NAME -o yaml
Em que APIGEE_ROUTE_NAME é o nome de um
apigeeroute
individual.Exemplo de comando:
kubectl -n apigee get apigeeroute non-sni -o yaml
Exemplo de resposta:
OapiVersion: apigee.cloud.google.com/v1alpha2 kind: ApigeeRoute metadata: name: non-sni namespace: apigee resourceVersion: "240441468" spec: enableNonSniClient: true hostnames: - '*' ports: - number: 443 protocol: HTTPS tls: credentialName: myorg-hyb-dev-grp minProtocolVersion: TLS_AUTO mode: SIMPLE - number: 80 protocol: HTTP selector: app: apigee-ingressgateway status: lastAppliedGeneration: 1 state: running
apigeeroute
não SNI mostra que a porta 80 está ativada como parte dessa rota.
-
Receba uma lista das rotas definidas da Apigee.
Resolução
Para resolver esse problema, desative a porta 80 no arquivo YAML apigeeroute
original removendo as seguintes linhas.
- number: 80 protocol: HTTP
Se você não tiver o arquivo yaml apigeeroute
original, siga estas etapas:
- Exporte a configuração atual com o seguinte comando:
kubectl -n apigee get apigeeroute APIGEE_ROUTE_NAME -o yaml > APIGEE_ROUTE_FILENAME.yaml
Em que APIGEE_ROUTE_NAME é o
apigeeroute
que está sendo atualizado para remover a configuração da porta 80.Em que APIGEE_ROUTE_FILENAME é o nome do arquivo de saída que contém o conteúdo yaml
apigeeroute
. -
Edite o arquivo yaml
apigeeroute
para remover a configuração da porta 80.Abra o arquivo APIGEE_ROUTE_FILENAME em um editor de texto e remova as seguintes linhas:
- number: 80 protocol: HTTP
-
Substitua o
apigeeroute
atual pelo arquivo YAML modificado:kubectl -n apigee replace -f APIGEE_ROUTE_FILENAME.yaml
em que APIGEE_ROUTE_FILENAME é o arquivo de saída que contém a configuração
apigeeroute
atualizada. -
Os pods
apigee-ingressgateway
agora devem ser executados com 2/2 contêineres. Caso contrário, exclua os pods para que novos sejam criados automaticamente.NAME READY STATUS RESTARTS AGE apigee-ingressgateway-ext-ingress-myorg-hyb-8f2c412-shl9r 2/2 Running 0 25h apigee-ingressgateway-ext-ingress-myorg-hyb-8f2c412-vvzsf 2/2 Running 0 26h
É 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:- Overrides.yaml
- Saída dos seguintes comandos:
kubectl -n apigee get pods -l app=apigee-ingressgateway
kubectl -n apigee logs APIGEE_INGRESSGATEWAY_POD
kubectl -n apigee get apigeeroutes
- Para cada uma das rotas declaradas, execute:
kubectl -n apigee get apigeeroute APIGEE_ROUTE_NAME -o yaml
- Como alternativa, execute e forneça as informações de necessidade da Apigee híbrida.