Clusters VPC con un punto final de servicio público y privado: ¿Por qué no puedo conectarme a la consola OpenShift?
Solucionar problemas de conexión a la consola OpenShift en un clúster que tiene un punto final de servicio público y privado.
La información de esta guía de resolución de problemas se refiere a clústeres de VPC con un punto final de servicio público y uno privado.
1. Comprender el flujo de conexiones del clúster
El siguiente diagrama muestra el flujo de conexión para un clúster VPC con puntos finales de servicio públicos y privados para conectarse a la consola web OpenShift. Tenga en cuenta que todas las conexiones desde el navegador web a los componentes del clúster se realizan a través de la red pública. Revise este diagrama y las siguientes descripciones para comprender mejor qué pasos de solución de problemas pueden ser necesarios.
- El navegador web se conecta al servidor API del clúster maestro. Se intercambia un certificado firmado y una redirección indica al navegador web que se conecte en su lugar al equilibrador de carga público de la consola OpenShift.
- (a) El navegador web se conecta al equilibrador de carga de la consola OpenShift que expone la consola OpenShift. (b) Esta petición se envía a uno de los dos pods openshift-console.
- El pod openshift-console se conecta a través de la red pública al puerto del servidor OAuth del clúster maestro para comprobar si la conexión ya está autenticada. Si la solicitud ya está autenticada, la conexión a la consola web OpenShift se ha completado y se puede acceder a la consola web. Si la solicitud no está autenticada, el usuario es redirigido al servicio de clúster OAuth en el maestro de clúster.
- El navegador web se conecta al puerto del servidor OAuth del clúster, que redirige al cliente a IAM.
- El navegador web se conecta a IAM a través de la red pública. El usuario introduce su contraseña y, si es necesario, una verificación 2FA. Si este paso se realiza correctamente, el usuario es redirigido de nuevo al servidor OAuth del clúster.
- El navegador web vuelve a conectarse al puerto del servidor OAuth del clúster. La conexión se redirige de nuevo al equilibrador de carga de la consola OpenShift.
- El navegador web se conecta al equilibrador de carga de la consola OpenShift, que expone la consola OpenShift. Esta solicitud se envía a uno de los dos pods openshift-console, que se conecta de nuevo al puerto del servidor OAuth del clúster maestro para comprobar si la conexión ya está autenticada. Si el usuario ha introducido su contraseña y la verificación 2FA, la autenticación se valida y el usuario se conecta a la página web principal de la consola OpenShift.
2. Compruebe la configuración de su VPC y clúster
- Asegúrese de que su navegador web tiene acceso a la red pública para que pueda conectarse al apiserver del clúster, al equilibrador de carga de la consola OpenShift y a IAM (que utilizan tanto
iam.cloud.ibm.comcomologin.ibm.com) - Asegúrese de que, si ha modificado algún grupo de seguridad, ACL o regla de restricción basada en el contexto (CBR) para este clúster o equilibrador de carga, permite el tráfico desde este navegador Web a dichos recursos
3. Recopilar datos del cluster
Siga estos pasos para recopilar la información del clúster necesaria para la resolución de problemas. Los resultados que obtenga con estos comandos se utilizarán en pasos posteriores.
-
Busque el servidor API del clúster URL. En comandos posteriores, este URL se denomina
${CLUSTER_APISERVER_URL}.- Ejecute el mandato
ibmcloud ks cluster get -c CLUSTER_ID.
ibmcloud oc cluster get -c CLUSTER_ID ``` 2. En la sección `Master` de la salida, busque la dirección `URL`. La dirección URL debe tener el siguiente formato: `https://c<XXX>-e.<REGION>.containers.cloud.ibm.com:<YYYYY>`. - Ejecute el mandato
-
Encuentra el grupo OAuth URL. En comandos posteriores, este URL se denomina
${CLUSTER_OAUTH_URL}.- Ejecute el mandato
kubectl get --raw /.well-known/oauth-authorization-server | grep issuer. No utilice elibmcloud oc cluster get -c CLUSTER_ID, ya que este comando podría devolver un URL diferente.
kubectl get --raw /.well-known/oauth-authorization-server | grep issuer ``` 2. La dirección URL debe tener el siguiente formato: `https://c<XXX>-e.<REGION>.containers.cloud.ibm.com:<ZZZZZ>`. - Ejecute el mandato
-
Encuentra el subdominio Ingress. En comandos posteriores, este subdominio se denomina
${CONSOLE_LOAD_BALANCER}.- Ejecute el mandato
ibmcloud oc cluster get -c CLUSTER_ID.
ibmcloud oc cluster get -c CLUSTER_ID ``` 2. En la salida, busque el subdominio que coincida con el siguiente formato: `<CLUSTER-NAME-PLUS-RANDOM-UNIQUE-STRING>.<REGION>.containers.appdomain.cloud`. Tenga en cuenta que si ha configurado un subdominio Ingress personalizado, el formato coincidirá con su configuración personalizada. - Ejecute el mandato
4. Verificar las conexiones y solucionar los problemas
Siga estos pasos para comprobar las conexiones descritas en el flujo de conexiones. Si encuentras un problema con una conexión, utiliza la información para solucionar el problema.
-
Verifique que Ingress está en buen estado y que el router y los pods de consola están en buen estado.
- Ejecuta los comandos.
ibmcloud oc cluster get -c CLUSTERID ibmcloud oc ingress status-report get -c CLUSTERID ``` 2. Si la salida muestra un estado de error, utilice la [documentación de solución de problemas de Ingress](/docs/openshift?topic=openshift-ingress-status) para resolver el problema. -
Compruebe que los operadores del clúster OpenShift están en buen estado.
- Ejecute el mandato.
oc get clusteroperators ``` 2. Si la salida muestra que alguno de los operadores no está en buen estado o no se está ejecutando en la versión actual, utilice la [documentación de solución de problemas de versión de clúster OpenShift](/docs/openshift?topic=openshift-ts-cluster-version-downlevel) para resolver el problema. También puede buscar en la documentación de IBM y Red Hat los errores específicos que se muestran. 3. Si el operador de la consola no funciona correctamente, compruebe los registros de los pods `openshift-console/console...` y `openshift-console-operator/console-operator...` para ver si algún grupo de seguridad, ACL o personalización DNS impide que los pods se conecten al puerto OAuth o a la consola OpenShift URL. Puede que un grupo de seguridad, ACL o DNS esté configurado de forma que impida la conexión. -
Compruebe que la conexión con el servidor API maestro del clúster se ha realizado correctamente.
- Ejecute el mandato. Especifique el cluster apiserver URL que encontró en los pasos anteriores.
curl -k -vvv ${CLUSTER_APISERVER_URL}/version ``` 2. Si la conexión no se realiza correctamente, realice las siguientes comprobaciones y resuelva los problemas que encuentre. 1. Compruebe que el maestro del clúster está en buen estado ejecutando el comando `ibmcloud oc cluster get -c <CLUSTER-ID>`. Consulte [Revisión del estado del](/docs/openshift?topic=openshift-debug_master) maestro para obtener información sobre la resolución de problemas del maestro del clúster. 2. Compruebe que la parte del nombre de host de URL se resuelve mediante DNS. Utilice el comando `dig $(echo ${CLUSTER_APISERVER_URL} | cut -d/ -f3 | cut -d: -f1)` y especifique el servidor API del clúster URL. 3. Compruebe si alguna regla de restricción basada en el contexto (CBR) del clúster impide que el cliente se conecte al servidor API del clúster. Puede probarlo añadiendo temporalmente una zona de red a su regla CBR pública que permita todas las IP y subredes. Si este cambio temporal resuelve el problema, realice los cambios necesarios en la regla para permitir el tráfico. -
Compruebe que la conexión al equilibrador de carga del clúster que expone la consola OpenShift se realiza correctamente.
- Ejecute el mandato. Especifique el subdominio Ingress que encontró en los pasos anteriores.
curl -k -vvv https://console-openshift-console.${CONSOLE_LOAD_BALANCER}/ ``` 2. Si la conexión no se realiza correctamente, realice las siguientes comprobaciones y resuelva los problemas que encuentre. 1. Compruebe que la parte del subdominio correspondiente al nombre de host se resuelve mediante DNS. Utilice el mandato `dig console-openshift-console.${CONSOLE_LOAD_BALANCER}`. 2. Si ha modificado algún grupo de seguridad, ACL o ruta VPC personalizada que se aplique al equilibrador de carga, compruebe si algún cambio o regla que haya aplicado impide la conexión. Si no ha modificado ninguno de estos componentes y utilizan los valores por defecto, puede omitir este paso. -
Compruebe que la conexión con el servidor del clúster OAuth se ha realizado correctamente.
- Ejecute el mandato. Especifique el clúster OAuth URL que encontró en los pasos anteriores.
curl -k -vvv ${CLUSTER_OAUTH_URL}/healthz ``` 2. Si la conexión no se realiza correctamente, realice las siguientes comprobaciones y resuelva los problemas que encuentre. 1. Compruebe que su maestro de clúster está en buen estado ejecutando el comando `ibmcloud oc cluster get -c <CLUSTER-ID>`. Consulte [Revisión del estado del](/docs/openshift?topic=openshift-debug_master) maestro para obtener información sobre la resolución de problemas del maestro del clúster. 2. Compruebe que la parte del nombre de host del clúster OAuth URL se resuelve mediante DNS. Utilice `dig $(echo ${CLUSTER_OAUTH_URL} | cut -d/ -f3 | cut -d: -f1)` y especifique el clúster OAuth URL. 3. Compruebe si alguna regla de restricción basada en el contexto (CBR) del clúster impide que el cliente se conecte al servidor del clúster OAuth. Puede probarlo añadiendo temporalmente una zona de red a su regla CBR pública que permita todas las IP y subredes. Si este cambio temporal resuelve el problema, realice los cambios necesarios en la regla para permitir el tráfico. -
Compruebe que la conexión con IAM se ha realizado correctamente.
- Ejecuta los comandos.
curl -vvv https://iam.cloud.ibm.com/healthz curl -vvv -o /dev/null -s https://login.ibm.com/ ``` 2. Si alguno de estos comandos falla, compruebe que el sistema cliente es capaz de conectarse a estas URLs de forma fiable y que las URLs no están bloqueadas por ningún cortafuegos del cliente o de la empresa. Tenga en cuenta que estas URL requieren acceso a la Internet pública.
5. Contactar con el servicio de asistencia
Si ha realizado todos los pasos anteriores y no ha resuelto el problema, póngase en contacto con el servicio de asistencia. Abra un caso de soporte. En los detalles del caso, asegúrese de incluir todos los archivos de registro, mensajes de error o salidas de comandos relevantes...