Cómo usar kubectl proxy para acceder a tus aplicaciones

En el artículo anterior te mostré una forma de acceder a Kubernetes Dashboard, pero no te expliqué cómo funciona. Hoy te quiero contar cómo usar kubectl proxy con el resto de tus aplicaciones en Kubernetes.

Como su propio nombre indica, kubectl proxy nos permite iniciar un proxy entre el host y nuestro clúster. Este está pensado para la depuración de aplicaciones y el acceso interno, por ejemplo a dashboards como el del artículo anterior. Tomándolo como ejemplo, en él se ve que accedemos a una URL, la cual se corresponde con el esquema que debes seguir para acceder a tus aplicaciones a través del proxy:

http://localhost:8001/api/v1/proxy/namespaces/<NAMESPACE>/services/<SERVICE-NAME>/proxy/

En el caso de Kubernetes Dashboard quedaba de la siguiente manera:

http://192.168.1.48:8001/api/v1/namespaces/kube-system/services/kubernetes-dashboard/proxy/

Esto es así porque el servicio kubernetes-dashboard pertenece al namespace kube-system. Además, para que esto sea posible, necesitas que tu despliegue sea expuesto a través de un servicio. Para comprobar todo esto que te digo, puedes revisar cuáles son los servicios que tienes creados en tu clúster, y verás que los valores que hemos reemplazado en la URL corresponden con el namespace y el nombre del servicio de Kubernetes Dashboard.

kubectl get services --all-namespaces
kubectl get services all namespaces kubernetes-dashboard

Ahora vamos a verlo con otro ejemplo: vamos a comprobar que también es posible acceder a nuestro nginx-deployment a través del proxy.

En el artículo cómo ejecutar contenedores en Kubernetes te expliqué que existe un concepto llamado servicio, que trabaja como balanceador entre las réplicas de nuestros pods. Para nuestro deployment llamado nginx-deployment ejecutábamos la siguiente línea:

kubectl expose deployment nginx-deployment --port=8000 --target-port=80

Con ello ya podemos acceder a él de la misma forma que en el ejemplo anterior. En este caso la URL sería: http://192.168.1.48:8001/api/v1/namespaces/default/services/nginx-deployment/proxy/

Accediendo a nginx desde kubectl proxy

¡Saludos!