Clusters VPC com um ponto de extremidade de serviço público e privado: Por que não consigo me conectar ao console OpenShift?
Solucione problemas de conexão com o console OpenShift em um cluster que tenha um ponto de extremidade de serviço público e privado.
As informações contidas neste guia de solução de problemas referem-se a clusters de VPC com um endpoint de serviço público e um privado.
1. Compreensão do fluxo de conexão do cluster
O diagrama a seguir mostra o fluxo de conexão para um cluster VPC com pontos de extremidade de serviço públicos e privados para conexão com o console da Web OpenShift. Observe que todas as conexões do navegador da Web com os componentes do cluster ocorrem pela rede pública. Examine este diagrama e as descrições a seguir para entender melhor as etapas de solução de problemas que podem ser necessárias.
- O navegador da Web se conecta ao servidor de API mestre do cluster. Um certificado assinado é trocado e um redirecionamento instrui o navegador da Web a se conectar ao balanceador de carga público do console OpenShift.
- (a) O navegador da Web se conecta ao balanceador de carga do console OpenShift que expõe o console OpenShift. (b) Essa solicitação é enviada a um dos dois pods do openshift-console.
- O pod openshift-console se conecta por meio da rede pública à porta do servidor mestre do cluster OAuth para verificar se a conexão já está autenticada. Se a solicitação já estiver autenticada, a conexão com o console da Web OpenShift estará concluída e o console da Web poderá ser acessado. Se a solicitação não for autenticada, o usuário será redirecionado para o serviço OAuth do cluster no mestre do cluster.
- O navegador da Web se conecta à porta do servidor OAuth do cluster, que redireciona o cliente para o IAM.
- O navegador da Web se conecta ao IAM pela rede pública. O usuário digita sua senha e, se necessário, uma verificação 2FA. Se essa etapa for bem-sucedida, o usuário será redirecionado de volta ao servidor OAuth do cluster.
- O navegador da Web se conecta novamente à porta do servidor OAuth do cluster. A conexão é redirecionada de volta para o balanceador de carga do console OpenShift.
- O navegador da Web se conecta ao balanceador de carga do console OpenShift, que expõe o console OpenShift. Essa solicitação é enviada a um dos dois pods do openshift-console, que se conecta novamente à porta do servidor OAuth do mestre do cluster para verificar se a conexão já está autenticada. Se o usuário tiver inserido a senha e a verificação 2FA, a autenticação será validada e o usuário será conectado à página principal do console OpenShift.
2. Verifique a configuração da VPC e do cluster
- Certifique-se de que o navegador da Web tenha acesso à rede pública para que possa se conectar ao apiserver do cluster, ao balanceador de carga do console OpenShift e ao IAM (que usa tanto o
iam.cloud.ibm.comquanto ologin.ibm.com) - Se você modificou algum grupo de segurança, ACLs ou regras de restrição de base de contexto (CBR) para esse cluster ou balanceador de carga, certifique-se de que eles permitam o tráfego desse navegador da Web para esses recursos
3. Reunir dados do cluster
Siga estas etapas para reunir as informações do cluster necessárias para a solução de problemas. Os resultados que você obtém com esses comandos são usados em etapas posteriores.
-
Localize o servidor de API do cluster URL. Em comandos posteriores, esse URL é chamado de
${CLUSTER_APISERVER_URL}.- Execute o comando
ibmcloud ks cluster get -c CLUSTER_ID.
ibmcloud oc cluster get -c CLUSTER_ID ``` 2. Na seção `Master` da saída, localize o `URL`. O endereço URL deve estar no seguinte formato: `https://c<XXX>-e.<REGION>.containers.cloud.ibm.com:<YYYYY>`. - Execute o comando
-
Localize o cluster OAuth URL. Em comandos posteriores, esse URL é chamado de
${CLUSTER_OAUTH_URL}.- Execute o comando
kubectl get --raw /.well-known/oauth-authorization-server | grep issuer. Não use oibmcloud oc cluster get -c CLUSTER_ID, pois esse comando pode retornar um URL diferente.
kubectl get --raw /.well-known/oauth-authorization-server | grep issuer ``` 2. O endereço URL deve estar no seguinte formato: `https://c<XXX>-e.<REGION>.containers.cloud.ibm.com:<ZZZZZ>`. - Execute o comando
-
Encontre o subdomínio do Ingress. Em comandos posteriores, esse subdomínio é chamado de
${CONSOLE_LOAD_BALANCER}.- Execute o comando
ibmcloud oc cluster get -c CLUSTER_ID.
ibmcloud oc cluster get -c CLUSTER_ID ``` 2. Na saída, localize o subdomínio que corresponde ao seguinte formato: `<CLUSTER-NAME-PLUS-RANDOM-UNIQUE-STRING>.<REGION>.containers.appdomain.cloud`. Observe que, se você tiver configurado um subdomínio Ingress personalizado, o formato corresponderá à sua configuração personalizada. - Execute o comando
4. Verificar conexões e solucionar problemas
Siga estas etapas para verificar as conexões descritas no fluxo de conexão. Se você encontrar um problema com uma conexão, use as informações para solucionar o problema.
-
Verifique se o Ingress está íntegro e se os pods do roteador e do console estão íntegros.
- Execute os comandos.
ibmcloud oc cluster get -c CLUSTERID ibmcloud oc ingress status-report get -c CLUSTERID ``` 2. Se a saída mostrar um status de erro, use a [documentação de solução de problemas do Ingress](/docs/openshift?topic=openshift-ingress-status) para resolver o problema. -
Verifique se os operadores do cluster OpenShift estão saudáveis.
- Execute o comando.
oc get clusteroperators ``` 2. Se a saída mostrar que algum operador não está íntegro ou não está sendo executado na versão atual, use a [documentação de solução de problemas da versão do cluster OpenShift](/docs/openshift?topic=openshift-ts-cluster-version-downlevel) para resolver o problema. Ou você pode pesquisar na documentação dos sites IBM e Red Hat para encontrar erros específicos que são mostrados. 3. Se o operador do console especificamente não estiver íntegro, verifique os logs dos pods `openshift-console/console...` e `openshift-console-operator/console-operator...` para ver se um grupo de segurança, ACL ou personalização de DNS está impedindo que os pods se conectem à porta OAuth ou ao console OpenShift URL. Um grupo de segurança, ACL ou DNS pode estar configurado de forma a impedir a conexão. -
Verifique se a conexão com o servidor de API mestre do cluster foi bem-sucedida.
- Execute o comando. Especifique o apiserver do cluster URL que você encontrou nas etapas anteriores.
curl -k -vvv ${CLUSTER_APISERVER_URL}/version ``` 2. Se a conexão não for bem-sucedida, faça as seguintes verificações e resolva os problemas que encontrar. 1. Verifique se o mestre do cluster está funcionando bem executando o comando `ibmcloud oc cluster get -c <CLUSTER-ID>`. Consulte [Revisão da integridade do mestre](/docs/openshift?topic=openshift-debug_master) para obter informações sobre a resolução de problemas do mestre do cluster. 2. Verifique se a parte do nome do host do site URL foi resolvida via DNS. Use o comando `dig $(echo ${CLUSTER_APISERVER_URL} | cut -d/ -f3 | cut -d: -f1)` e especifique o servidor de API do cluster URL. 3. Verifique se alguma regra de Restrição Baseada em Contexto (CBR) no cluster impede que o cliente se conecte ao servidor de API do cluster. Você pode testar isso adicionando temporariamente uma zona de rede à sua regra CBR pública que permite todos os IPs e sub-redes. Se essa alteração temporária resolver o problema, faça as alterações necessárias na regra para permitir o tráfego. -
Verifique se a conexão com o balanceador de carga do cluster que expõe o console OpenShift foi bem-sucedida.
- Execute o comando. Especifique o subdomínio do Ingress que você encontrou nas etapas anteriores.
curl -k -vvv https://console-openshift-console.${CONSOLE_LOAD_BALANCER}/ ``` 2. Se a conexão não for bem-sucedida, faça as seguintes verificações e resolva os problemas que encontrar. 1. Verifique se a parte do nome do host do subdomínio foi resolvida pelo DNS. Use o comando `dig console-openshift-console.${CONSOLE_LOAD_BALANCER}`. 2. Se você modificou algum grupo de segurança, ACLs ou rotas VPC personalizadas que são aplicadas ao balanceador de carga, verifique se as alterações ou regras aplicadas impedem a conexão. Se você não modificou nenhum desses componentes e eles usam os valores padrão, pode pular esta etapa. -
Verifique se a conexão com o servidor do cluster OAuth foi bem-sucedida.
- Execute o comando. Especifique o cluster OAuth URL que você encontrou nas etapas anteriores.
curl -k -vvv ${CLUSTER_OAUTH_URL}/healthz ``` 2. Se a conexão não for bem-sucedida, faça as seguintes verificações e resolva os problemas que encontrar. 1. Verifique se o mestre do cluster está funcionando bem executando o comando `ibmcloud oc cluster get -c <CLUSTER-ID>`. Consulte [Revisão da integridade do mestre](/docs/openshift?topic=openshift-debug_master) para obter informações sobre a resolução de problemas do mestre do cluster. 2. Verifique se a parte do nome do host do cluster OAuth URL está resolvida via DNS. Use o endereço `dig $(echo ${CLUSTER_OAUTH_URL} | cut -d/ -f3 | cut -d: -f1)` e especifique o cluster OAuth URL. 3. Verifique se alguma regra de Restrição Baseada em Contexto (CBR) no cluster impede que o cliente se conecte ao servidor OAuth do cluster. Você pode testar isso adicionando temporariamente uma zona de rede à sua regra CBR pública que permite todos os IPs e sub-redes. Se essa alteração temporária resolver o problema, faça as alterações necessárias na regra para permitir o tráfego. -
Verifique se a conexão com o IAM foi bem-sucedida.
- Execute os comandos.
curl -vvv https://iam.cloud.ibm.com/healthz curl -vvv -o /dev/null -s https://login.ibm.com/ ``` 2. Se algum desses comandos falhar, verifique se o sistema do cliente consegue se conectar a esses URLs de forma confiável e se os URLs não estão bloqueados por nenhum firewall corporativo ou do cliente. Observe que esses URLs exigem acesso à Internet pública.
5. Entre em contato com o suporte
Se tiver concluído todas as etapas acima e o problema não tiver sido resolvido, entre em contato com o suporte. Abrir um caso de suporte. Nos detalhes do caso, certifique-se de incluir todos os arquivos de registro, mensagens de erro ou saídas de comando relevantes.