Accesso Remoto a Minikube Dashboard y Servicios

Consejo Breve

Es común instalar un ambiente privado de Kubernetes usando MiniKube con VirtualBox.
Como se supone que sea una instalación local, los servicios de Minikube se exponen al localhost cuando usamos el comando minikube service.

Pero digamos que necesitas accesar remotamente o tienes una aplicación web y tu anfitrión no tiene un ambiente gráfico. Aquí una solución rápida.

Port Forwarding

Después de crear tu servicio al exponer tu despliegue:

kubectl expose deployment myapp-deploy --name=myapp-service --type=NodePort --port=80

simplemente necesitas hacer port-forward de tu pod en ejecución hacia tu interfaz de red externa y hacer que escuche en algún puerto:

kubectl port-forward myapp-6b6cdf6b78-mdw94 --address 0.0.0.0 8080:80

y eso es todo, puedes ver que tu anfitrión esta escuchando en el nuevo puerto:

patovm $ netstat -na | grep LISTEN
tcp6       0      0 :::8080                 :::*                    LISTEN

y puede ser accesado, por ejemplo si tienes una aplicación web apunta hacia la IP externa y el puerto de tu anfitrión:

http://patovm-external-IP:8080
Minikube Dashboard

Similarmente puedes accessar al tablero de control gráfico de Minikube.
Primero habilita el tablero de control y obtén el nombre del pod en ejecución:

pato@patovm:~$ minikube addons enable dashboard
* The 'dashboard' addon is enabled

pato@patovm:~$ kubectl get pods --namespace=kubernetes-dashboard
NAME                                         READY   STATUS    RESTARTS   AGE
dashboard-metrics-scraper-84bfdf55ff-5zw5d   1/1     Running   0          28s
kubernetes-dashboard-696dbcc666-bwwxt        1/1     Running   0          28s

ahora haz ese pod disponible externamente usando el siguiente comando proxy:

kubectl proxy --address 0.0.0.0 kubernetes-dashboard-696dbcc666-bwwxt 8001:80 --namespace=kubernetes-dashboard --disable-filter=true

Starting to serve on [::]:8001

y ahora puedes acceder con la siguiente dirección:

http://patovm-external-IP:8001/api/v1/namespaces/kubernetes-dashboard/services/http:kubernetes-dashboard:/proxy/

Ahora puedes acceder a tus servicios de Minikube y al Dashboard remotamente.