Instalar Kubernetes Dashboard en tu clúster

Hasta ahora, todo lo que te he contado de Kubernetes y Docker ha sido a través del terminal. Hoy vamos a ver cómo instalar Kubernetes Dashboard en un entorno de desarrollo, para que pruebes una forma más visual de gestionar tu clúster.

Instalación

Como puedes intuir, este Dashboard no viene instalado cuando montaste tu clúster de Kubernetes. Este se instala como un pod más, bajo el namespace kube-system, que es el espacio de nombres donde se instalan los pods del sistema. En su repositorio de GitHub te ofrecen diferentes versiones del mismo. En este ejemplo vamos a utilizar la versión alternativa, que es menos segura (no se requiere el uso de certificados y se expone a través de HTTP) y se utiliza para este tipo de entornos. Como en el artículo anterior, para hacer un despliegue de un pod basta con utilizar el comando kubectl create y el archivo donde viene definido lo que quieres crear:

kubectl create -f https://raw.githubusercontent.com/kubernetes/dashboard/v1.10.1/src/deploy/alternative/kubernetes-dashboard.yaml

Para comprobar que Kubernetes Dashboard se ha desplegado correctamente puedes consultar los pods del sistema a través de este comando:

kubectl get pods --all-namespaces

O bien indicando el el namespace del sistema, que es kube-system:

kubectl get pods --namespace kube-system

Si todo ha salido bien, un pod con el nombre kubernetes-dashboard-* debería de estar en el estado Running entre tus pods.

Pod de Kubernetes Dashboard en estado Running

¿Cómo accedo a Kubernetes Dashboard?

Si recuerdas lo que te conté cuando hablábamos de ejecutar contenedores en Kubernetes, los pods sólo pueden ser accedidos desde dentro del clúster, ya que inicialmente no están expuestos al exterior de ninguna manera. Hasta ahora, para hacer peticiones al pod hello-world o a nuestro servidor Nginx hacíamos uso de cURL. Sin embargo, en este caso necesitamos acceder a través de un navegador.
En entornos no productivos la forma más sencilla de exponer un pod es a través del comando kubectl proxy. Ejecuta el siguiente comando para exponer nuestro dashboard:

kubectl proxy --address 0.0.0.0 --accept-hosts '.*'

Ahora, desde el navegador abre la siguiente dirección: http://192.168.1.48:8001/api/v1/namespaces/kube-system/services/kubernetes-dashboard/proxy/#!/node?namespace=default. La IP 192.168.1.48 debes modificarla por la que se corresponda con tu master. Una vez allí, verás que has podido acceder al sitio pero no tienes permisos para ver los recursos de tu clúster.

Error en Kubernetes Dashboard por falta de privilegios

Dando permisos de administrador a Kubernetes Dashboard

Desde la versión 1.7 de Kubernetes Dashboard, el usuario que viene por defecto no tiene privilegios administrativos, por lo que debemos darlos de alta en nuestro clúster. En este caso, vamos a asignarle el rol cluster admin a través de este comando:

kubectl create clusterrolebinding kubernetes-dashboard \
  --clusterrole=cluster-admin \
  --serviceaccount=kube-system:kubernetes-dashboard

A partir de este momento podrás acceder a tu Dashboard sin problemas.

Kubernetes Dashboard funcionando correctamente

Desplegar un pod desde Kubernetes Dashboard

¡Ahora ya tienes otra forma de gestionar tu clúster mucho más visual! Puedes ver que existen diferentes secciones de cosas que todavía ni conocemos pero, para empezar, haz una prueba y despliega un pod. Haz clic en CREATE y puedes copiar y pegar el ejemplo de nginx del post anterior para ver lo sencillo que es:

Desplegando nginx desde Kubernetes Dashboard

Al cabo de unos instantes tu despliegue estará listo, al igual que ocurría con kubectl.

Kubernetes Dashboard - Overview
Kubernetes Dashboard – Overview

¡Saludos!