
Muchas aplicaciones requieren que sus consumidores las agreguen a listas blancas según la dirección IP de origen, generalmente por motivos de seguridad. Hoy por hoy, Google Kubernetes Engine no permite asignar un pool estático de direcciones a un cluster de GKE y obliga a desplegar una solución compleja basada en NAT, que resulta costosa, difícil de mantener y exige un conjunto complejo de reglas para balanceo de carga y redundancia.
kubeIP busca resolver este problema asignando direcciones IP externas estáticas a los nodos de GKE desde un pool de direcciones reservado, mientras monitorea de forma continua la API de Kubernetes para detectar nuevos nodos y aplicar los cambios correspondientes.
kubeIP está escrito en Go y corre como un pod dentro de tu cluster de GKE, sin necesidad de modificar el cluster. La configuración se hace mediante variables de entorno expuestas en el ConfigMap de kubeIP.
apiVersion:
v1data: KUBEIP_LABELKEY: "kubeip" KUBEIP_LABELVALUE: "my-gke-cluster-1" KUBEIP_NODEPOOL: "default-pool" kind:
ConfigMapmetadata: labels: app:
kubeipname:
kubeip-confignamespace:
defaultkubeIP se registra como listener de los eventos del cluster de Kubernetes. Cuando se crea un nuevo nodo, kubeIP revisa el pool reservado en busca de una dirección IP estática libre (etiquetada con el nombre de tu cluster de GKE) y se la asigna al nuevo nodo. Si no hay direcciones disponibles, no se ejecuta ninguna acción.
Para facilitar el despliegue, ponemos a tu disposición una imagen Docker de kubeIP en Docker Hub (docker pull doitintl/kubeip), o puedes compilarla tú mismo desde el código fuente clonando el repositorio de kubeIP en GitHub.
¿Quieres leer más? Visita nuestro blog o sigue a Aviv en Twitter.