Sem conectividade de rede entre o plano do ambiente de execução e o plano de controle

Esta é a documentação da Apigee e da Apigee híbrida.
Não há documentação equivalente do Apigee Edge para esse tópico.

Sintomas

  • Os produtos de API, desenvolvedores e aplicativos não são preenchidos na interface da Apigee.
  • As implantações de proxy de API não foram concluídas.
  • As solicitações da API Management executadas para ler e gravar produtos de API, desenvolvedores e aplicativos falham.</li>

Mensagens de erro

Esta seção descreve as possíveis mensagens de erro exibidas quando não há conectividade de rede.

ApigeeIssue

Se este problema foi relatado como um ApigeeIssue quando o seguinte comando foi executado:

kubectl -n APIGEE_NAMESPACE get apigeeissues

em que APIGEE_NAMESPACE é o nome de um agrupamento de recursos do Kubernetes.

o seguinte código de erro é exibido:

NAME                               SEVERITY    AGE URL
control-plane-connectivity-failure Error       1hr https://cloud.google.com/apigee/docs/api-platform/troubleshoot/playbooks/no-network-connectivity

Páginas da interface da Apigee de produtos de API, desenvolvedores e apps

As páginas da interface da Apigee de produtos de API, desenvolvedores e apps exibem o seguinte erro:

Error: no connections available from the Apigee connect agent(s):
refer to documentation to triage further.

Registros do sincronizador da Apigee

A mensagem de erro a seguir pode ser vista nos registros de apigee-synchronizer:

{"level":"SEVERE","thread":"Apigee-Timer-3","mdc":{"action":"SYNC","env":"dev",
  "org":"example-hybrid-dev"},"className":"com.apigee.httpclient.adaptor.RequestAdaptor",
  "method":"doSend","severity":"SEVERE","message":"request failed
  [CONTEXT ratelimit_period\u003d\"1 MINUTES [skipped: 1]\" ]",
  "formattedDate":"2023-02-01T06:27:48.700Z","logger":"SERVICES.HTTPCLIENTSERVICE",
  "exceptionStackTrace":"java.net.SocketTimeoutException: connect timed out
... com.apigee.httpclient.adaptor.RequestAdaptor.send(RequestAdaptor.java:251)
at com.apigee.hybrid.runtime.contract.sync.context.HttpContractDownloader.download(HttpContractDownloader.java:84)
at com.apigee.hybrid.runtime.contract.sync.context.ControlPlaneReplicationContext.getContract(ControlPlaneReplicationContext.java:66)

Registros do Apigee Watcher

A seguinte mensagem de erro pode ser vista nos registros de apigee-watcher:

{"level":"error","ts":1675232549.5093117,"caller":"watcher/watcher.go:60",
"msg":"error during watch","name":"mpstatus","error":"INTERNAL: error sending
  mp status to mgmt: INTERNAL: failed to send runtime status
  Post \"https://apigee.googleapis.com/v1/organizations/example-hybrid-dev/instances/apigee-hybrid-australia-southeast1:reportStatus\":
  dial tcp 172.217.24.42:443: i/o timeout","stacktrace":
  "edge-internal.git.corp.google.com/apigee-watcher.git/watcher.
  (*Watcher).Start.func1.1\n\t/go/src/edge-internal/apigee-watcher/watcher/watcher.go:60"}

Causas possíveis

Plataforma Causa Descrição
Tudo Nenhuma rota de rede disponível para a Internet Se nenhuma rota de rede estiver disponível para a Internet, os componentes do plano do ambiente de execução da Apigee não poderão se comunicar com as APIs do plano de controle da Apigee.
Tudo Os endpoints da API Apigee não estão na lista de permissões Se houver um firewall em vigor, os endpoints da API Apigee podem não estar na lista de permissões.
GKE O Acesso privado do Google não está ativado Se a implantação estiver no GKE, o Acesso privado do Google poderá não ter sido ativado na sub-rede.
Tudo Falha de rede desconhecida Se houver uma falha desconhecida na rede do cluster ao estabelecer conexão com a Internet, esse problema poderá ocorrer.

Causa: não há rotas de rede disponíveis para a Internet

Diagnóstico

  1. Dependendo da plataforma usada, verifique se há uma rota de rede disponível da rede do cluster para a Internet. Por exemplo, para mais informações sobre redes no GKE, consulte Visão geral da rede.
  2. Verifique com sua equipe de infraestrutura e rede se a rede do cluster usa um servidor proxy de encaminhamento para se conectar à Internet.

Resolução

  1. Verifique com o administrador da rede e adicione uma rota de rede para a Internet, se possível.
  2. Se um servidor proxy de encaminhamento for usado para a comunicação entre a rede do cluster e a Internet, defina as configurações do servidor proxy de encaminhamento na Apigee usando o arquivo overrides.yaml e aplique essa alteração ao plano do ambiente de execução.
    apigeectl apply --settings virtualhosts -f overrides/overrides.yaml

Causa: os endpoints da API Apigee não estão na lista de permissões

Diagnóstico

Verifique com o administrador de rede se a lista de endpoints da API Apigee está na lista de permissões do firewall na plataforma em que a Apigee está instalada. Para o GKE, pode ser o Cloud Next Generation Firewall.

Resolução

Se a lista de endpoints da API Apigee acima não estiver na lista de permissões, entre em contato com o administrador de rede a fim de atender a esse requisito.

Causa: o Acesso privado do Google não está ativado

Diagnóstico

  1. Se a Apigee for implantada em um cluster particular do GKE sem acesso à Internet, o Acesso privado do Google precisará ser ativado para permitir que os componentes do plano do ambiente de execução da Apigee acessem internamente as APIs Google.
  2. No Console do Google Cloud, acesse a página Redes VPC.

    Acessar redes VPC

  3. Clique no nome de uma rede.
  4. Na guia Sub-redes, na coluna Acesso privado do Google, verifique se a sub-rede relevante está ativada. Se não estiver, esse será o motivo da falha.

Resolução

  1. No Console do Google Cloud, acesse a página Redes VPC.

    Acessar redes VPC

  2. Clique no nome de uma rede.
  3. Clique no nome de uma sub-rede.
  4. Clique em Editar.
  5. Selecione Ativar o Acesso privado do Google.
  6. Clique em Salvar. Depois da ativação, esse problema será resolvido.

Causa: falha de rede desconhecida

Diagnóstico

Entre em contato com o administrador de rede e verifique se há falhas desconhecidas na rede do cluster.

Resolução

Trabalhe com o administrador de rede e resolva os problemas na rede do cluster. Assim que os problemas de rede forem corrigidos, o erro será resolvido.

É 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:

  1. O ID do projeto do Google Cloud.
  2. O nome da organização da Apigee híbrida.
  3. As saídas dos comandos a seguir executados em todos os nós do cluster do Kubernetes:
    ping apigee.googleapis.com
    traceroute apigee.googleapis.com
    telnet apigee.googleapis.com 443
  4. O arquivo overrides.yaml, mascarando as informações confidenciais.
  5. Status do pod do Kubernetes em todos os namespaces:
    kubectl get pods -A > kubectl-pod-status`date +%Y.%m.%d_%H.%M.%S`.txt
  6. O despejo de informações do cluster do Kubernetes:

    Gere o despejo de informações do cluster do Kubernetes:

    kubectl cluster-info dump -A --output-directory=/tmp/kubectl-cluster-info-dump

    Compacte o despejo de informações do cluster do Kubernetes:

    zip -r kubectl-cluster-info-dump`date +%Y.%m.%d_%H.%M.%S`.zip /tmp/kubectl-cluster-info-dump/*