es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Cluster privado de GKE bloqueando el handshake TLS en el puerto 9090 desde el interior de la cápsula.

Acabamos de migrar de un clúster público a un privado en GKE y estamos enfrentando un problema extraño donde un pod no puede llamar a una API externa con HTTPS en el puerto 9090. Se vuelve irresponsivo y después de 60 segundos arroja “Connection reset by peer”.

Estamos utilizando Cloud NAT para habilitar el acceso a Internet para los pods. Hemos probado que no es un problema de bloqueo de puertos al agregar temporalmente reglas de salida e ingreso en el firewall para permitir todo el tráfico en cada puerto.

Probamos el handshake SSL utilizando curl desde dentro del pod ejecutando el siguiente comando:

curl -k -vvv --location 'https://103.xx.xx.xx:9090/v1/users/login' POST \
--header 'Content-Type: application/json' \
--header 'Authorization: Basic YWRtaW46QnJhbmR2ZXJzZUAxMjM=' \
--data-raw ''

Se queda atascado en esta respuesta:

*   Trying 103.xx.xx.xx:9090...
* TCP_NODELAY set
* Connected to 103.xx.xx.xx (103.xx.xx.xx) port 9090 (#0)
* ALPN, offering h2
* ALPN, offering http/1.1
* successfully set certificate verify locations:
*   CAfile: /etc/ssl/certs/ca-certificates.crt
  CApath: /etc/ssl/certs
* TLSv1.3 (OUT), TLS handshake, Client hello (1):
* TLSv1.3 (IN), TLS handshake, Server hello (2):
* TLSv1.3 (OUT), TLS change cipher, Change cipher spec (1):
* TLSv1.3 (OUT), TLS handshake, Client hello (1):

Mientras que en cualquier otro servicio funciona bien.

Agradecería mucho cualquier ayuda o indicación al respecto. Gracias.

Actualización:

He reducido el problema a la versión de TLS, por lo tanto el servicio al que estoy intentando llamar no admite TLS 1.3. ¿Hay alguna forma de configurar mi VPC/clúster para habilitar el soporte de TLS 1.2?

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Como experto en IT especializado en Google Kubernetes Engine y en la configuración de redes de GKE, a continuación se presentan mis recomendaciones para resolver el problema que se está enfrentando después de migrar de un clúster público a uno privado en GKE:

    1. Verifique la configuración de red del clúster privado y asegúrese de que permita el tráfico de salida hacia la API externa en el puerto 9090. Puede hacer esto revisando las reglas de firewall y las rutas en la red VPC.
    2. Verifique que la configuración de Cloud NAT sea correcta y funcional. Puede revisar la configuración y la instalación de Cloud NAT mediante la verificación de la puerta de enlace NAT, el enrutador NAT y la configuración de la subred en la Consola de Google Cloud.

    3. Revise si la inspección SSL está habilitada en Cloud NAT. Si la inspección SSL está habilitada, desactívela temporalmente para probar si eso está causando el problema.

    4. Verifique si la API externa está abierta y permite conexiones a través de TLS 1.2 además de TLS 1.3. Si la API externa está cerrada para las versiones anteriores de TLS, no se puede establecer una conexión.

    5. Revise la configuración de la imagen de contenedor para asegurarse de que esté correctamente configurada para utilizar los certificados y las APIs correctas.

    6. Verifique que el contenedor esté utilizando el nombre DNS y el puerto correcto para acceder a la API externa.

    7. Por último, puede intentar habilitar y configurar un Equilibrador de Carga HTTP(S) que actúe como proxy entre los contenedores y la API externa, admitiendo la degradación de TLS 1.3 a TLS 1.2.

    Espero que estas recomendaciones ayuden a resolver el problema actual.

Comments are closed.