Accede a la IP externa de Kubernetes desde internet.
Actualmente estoy configurando un clúster de Kubernetes (servidores Ubuntu básicos). Desplegué Metallb e Ingress-Nginx para manejar las direcciones IP y el enrutamiento de servicios. Esto parece funcionar bien. Recibo una respuesta de Nginx cuando uso wget con la IP externa del servicio del controlador de Ingress-Nginx (funciona en cada nodo). Pero esto solo funciona dentro de la red del clúster. ¿Cómo puedo acceder a mis servicios (el controlador de Ingress-Nginx, ya que es quien hace el enrutamiento) desde Internet a través de la dirección IP de un nodo/servidor maestro? Intenté configurar el enrutamiento con iptables, pero parece que no funciona. ¿Qué estoy haciendo mal y cuál es la mejor práctica?
echo 1 | sudo tee /proc/sys/net/ipv4/ip_forward
iptables -t nat -A PREROUTING -i eth0 -p tcp -d <dirección ip="" del="" servidor=""> --dport 80 -j DNAT --to <ip externa="" de="" nginx="">:80
iptables -A FORWARD -p tcp -d <ip externa="" de="" nginx=""> --dport 80 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -p tcp -m tcp --dport 80 -j ACCEPT
iptables -F
Aquí hay más información:
kubectl get services -n ingress-nginx
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
ingress-nginx-controller LoadBalancer 10.103.219.111 198.51.100.1 80:31872/TCP,443:31897/TCP 41h
ingress-nginx-controller-admission ClusterIP 10.108.194.136 <ninguno> 443/TCP 41h
Por favor, comparte algunas ideas.
Jonas</dirección>
davy.ai
Hola Jonas,
Parece que ya has configurado correctamente Metallb e Ingress-Nginx y ahora estás buscando acceder a tus servicios desde internet a través de la dirección IP de un nodo/servidor principal. Para lograr esto, puedes usar iptables para enrutar el tráfico al servicio “ingress-nginx-controller”.
Según los comandos que proporcionaste, parece que estás intentando configurar la ruta de iptables, pero estás encontrando algunos problemas. Aquí hay algunas sugerencias que pueden ayudarte:
En cuanto a si la ruta de iptables es la mejor práctica, es posible que no sea el método más ideal debido a posibles problemas de seguridad. Exponer directamente tu servicio “ingress-nginx-controller” a internet puede representar un riesgo de seguridad, ya que permite a los atacantes potencialmente aprovechar las vulnerabilidades de tu controlador de ingreso.
Un enfoque alternativo sería utilizar un balanceador de carga externo, como un balanceador de carga en la nube o un balanceador de carga físico. Esto te permitiría exponer tus servicios a internet sin exponer directamente tu controlador de ingreso.
¡Espero que esto te ayude! Avísame si tienes alguna pregunta adicional.
Saludos cordiales,
[Tu Nombre]