Acceder a un clúster privado de AKS a través de VPN P2S
Hoy he estado jugando con el siguiente escenario: Necesitaba montarme un clúster de AKS privado y, como no soy una empresa y no quería instalarme una máquina de salto en la misma red que mi clúster, quería acceder a este a través de una conexión VPN P2S, conectada a la red donde está mi AKS. Te cuento cómo lo he hecho.
Crear la red virtual
Lo primero que voy a hacer es crear la red, y aprovecho para crear el grupo de recursos, donde estará mi AKS.
No he dejado que se genere durante la creación del clúster porque me va a ser más sencillo manipular esta misma después. También necesito crear un service principal que tenga permisos de Network contributor sobre este para que mi AKS pueda luego manipular la red.
Ahora que ya tengo la red,la subnet que va a usar mi AKS y el Service Principal el siguiente paso es crear el clúster.
Crear un clúster de AKS privado en una red propia
Para este paso puedo utilizar este comando, uniéndolo con todo lo anterior:
Ahora bien, una vez que el proceso termine, si recupero las credenciales:
#Get credentials
az aks get-credentials -n $AKS_NAME -g $RESOURCE_GROUP
e intento cualquier operación sobre el AKS, el resultado será que no es posible, ya que no estoy en la misma red que el clúster y este es privado.
Es por ello que necesitamos un componente que nos permita conectarnos a dicha red desde mi local, un VPN Gateway.
Crear un VPN Gateway
En realidad, te mostré un caso parecido con un App Service usando private links hace unos meses. En este caso le toca el turno a AKS, por lo que me creo este componente dentro de mi grupo de recursos, asociado a la misma red, de la siguiente manera:
Estos comandos crearán una nueva subnet en la red donde está alojado mi clúster de AKS, generará una IP pública que asociaremos a un VPN gateway, que además ya he dejado configurado para que pueda autenticarme usando Azure Active Directory. El último comando nos proporciona un zip con la configuración para usarla con Azure VPN, como mostré en el articulo de App Service con Private Link en este mismo escenario.
Sin embargo, si vuelvo a ejecutar el comando anterior, kubectl get nodes, seguiré obteniendo el mismo error. ¿Por qué ocurre esto? Porque si bien tenemos acceso a los recursos de esa red no estamos siendo capaces de resolver el nombre del private link asociado la IP del API Server de nuestro Kubernetes.
Modificar /etc/hosts
Para este artículo voy a dejarlo en la opción más sencilla, que es añadir el nombre a resolver en el archivo /etc/hosts. Con estos comandos puedes recuperar el nombre a resolver, el del private link, y la IP que hay detrás de este:
En mi caso quedaría una entrada como la siguiente:
Si ahora vuelves a intentar hablar con tu clúster verás que ya es posible.
Para un entorno de pruebas/desarrollo esta sería una opción válida. Sin embargo en entornos productivos se recomienda el uso de un DNS Forwarder.
El código con el script lo tienes en mi GitHub.
¡Saludos!
El articulo original -https://www.returngis.net/2021/11/acceder-a-un-cluster-privado-de-aks-a-traves-de-vpn-p2s/