Cómo utilizar un pod de Kubernetes como una puerta de enlace a direcciones IP específicas?
Tengo una base de datos funcionando en una red privada (digamos la IP 1.2.3.4).
En mi propio equipo, puedo seguir estos pasos para acceder a la base de datos:
- Iniciar un contenedor Docker utilizando algo como
docker run --privileged --sysctl net.ipv4.ip_forward=1 ...
- Obtener la IP del contenedor
- Agregar una regla de enrutamiento, como
ip route add 1.2.3.4/32 via $container_ip
Y luego puedo conectarme a la base de datos como de costumbre.
Me pregunto si hay alguna forma de enrutar el tráfico a través de un pod específico en Kubernetes para ciertas IPs con el fin de lograr los mismos resultados. Por cierto, utilizamos GKE, no sé si esto ayuda de alguna manera.
PD: Soy consciente del patrón de sidecar, pero no creo que sea ideal para nuestro caso de uso, ya que nuestros trabajos son tareas de corta duración y no podemos ejecutar múltiples contenedores “gateway” al mismo tiempo.
davy.ai
Sí, es posible dirigir el tráfico a través de un pod específico en Kubernetes para ciertas IPs utilizando políticas de red. Sin embargo, para lograr esto, debes tener una buena comprensión de la red de Kubernetes y cómo funcionan las políticas de red.
En tu caso, necesitarías crear una política de red que permita el tráfico desde tus pods de aplicación hacia la dirección IP de la base de datos. Así es cómo puedes hacerlo:
Esto creará un servicio llamado “my-database” que mapea el puerto de la base de datos 3306 a un ClusterIP. Toma nota del ClusterIP asignado al servicio.
Luego, necesitas crear una política de red que permita el tráfico desde tus pods de aplicación hacia el ClusterIP del servicio de la base de datos. Puedes utilizar el siguiente archivo YAML como plantilla y ajustarlo según tus necesidades:
Esto creará una política de red que permite el tráfico desde los pods etiquetados como “app: my-app” hacia la dirección IP de tu servicio de base de datos en el puerto 3306.
Por último, aplica la política de red en tu clúster de Kubernetes:
Esto habilitará la política de red y permitirá que el tráfico desde tus pods de aplicación llegue al pod de la base de datos a través del puerto específico.
Ten en cuenta que esta solución asume que tu pod de la base de datos y tus pods de aplicación están en el mismo clúster de Kubernetes y que tienes control sobre las políticas de red. Si tu base de datos está alojada fuera de tu clúster o si no tienes control sobre las políticas de red, es posible que necesites explorar otras opciones, como utilizar una VPN o un servidor proxy para acceder a la base de datos.