Panel de control de la interfaz web para Kubernetes

El panel de control de Kubernetes proporciona una interfaz de usuario basada en la web para el clúster. Se pueden desplegar aplicaciones en el clúster utilizando el panel de control, así como solucionar los problemas de las aplicaciones existentes en el clúster. El tablero de mandos también proporciona información sobre los recursos del clúster. El tablero de mandos lo proporciona oficialmente Kubernetes. Se pueden crear, modificar, actualizar y eliminar objetos de Kubernetes utilizando el panel.

En este artículo, instalaremos el tablero oficial proporcionado por Kubernetes y configuraremos una cuenta de servicio para acceder a él. Antes de continuar con este artículo, se supone que estás familiarizado con Kubernetes y que tienes un clúster de Kubernetes.

Requisitos previos

  1. Cluster de Kubernetes con al menos 1 nodo trabajador.
    Si quieres aprender a crear un Clúster Kubernetes, haz clic aquí. Esta guía te ayudará a crear un clúster de Kubernetes con 1 nodo maestro y 2 nodos trabajadores en instancias EC2 de AWS Ubuntu 18.04.
  2. Conocimiento básico de Kubernetes.

¿Qué vamos a hacer?

  1. Desplegar el panel de control de Kubernetes.
  2. Configurar una cuenta de servicio para acceder al panel de control de Kubernetes.
  3. Acceder al panel de control de Kubernetes.

Desplegar el panel de control de Kubernetes

Para desplegar el panel de control de Kubernetes, podemos descargar su archivo objeto desde Github. Utiliza el siguiente comando para descargar el archivo de objetos. Este archivo contiene definiciones para Namespace, ServiceAccount, Service, Secret, ConfigMap, Role, ClusterRole, RoleBinding, ClusterRoleBinding, Deployment, Service.

pwd
wget https://raw.githubusercontent.com/kubernetes/dashboard/master/aio/deploy/recommended.yaml

Descargar plantillas

Cambia el nombre del archivo y cambia el tipo de servicio a NodePort. Consulta la siguiente captura de pantalla.

mv recommended.yaml kubernetes-dashboard-deployment.yml
vim kubernetes-dashboard-deployment.yml

Cambiar el tipo de servicio a NodePort

Una vez que hayas cambiado el tipo de servicio a NodePort, es el momento de crear todos los objetos responsables de desplegar el tablero de Kubernetes.

kubectl apply -f kubernetes-dashboard-deployment.yml

Comprueba el despliegue, Pod, Servicio que se ha creado con el comando anterior. El comando anterior también crea Namespace, ServiceAccount, Service, Secret, ConfigMap, Role, ClusterRole, RoleBinding, ClusterRoleBinding, Deployment, Service.

kubectl get deployments -n kubernetes-dashboard
kubectl get svc
kubectl get pods
kubectl get pods -n kubernetes-dashboard
kubectl get svc -n kubernetes-dashboard

Crear objetos Kubernetes para el cuadro de mando

En la captura de pantalla anterior, puedes ver que se ha creado el Servicio del Cuadro de Mando de Kubernetes con el tipo «NodePort». Esto significa que el tablero estará disponible en cualquiera de las IP de los nodos en el NodePort «32304». Puede que veas un puerto diferente para el servicio en tu clúster.

Utiliza el siguiente comando para obtener las IPs de tus nodos que necesitarás en los pasos posteriores.

kubectl get nodes -o wide

Configura una ServiceAccount para acceder al Dashboard de Kubernetes

Para acceder al panel de control de Kubernetes necesitas tener un token. Para crear un token primero tenemos que crear una ServiceAccount

Crea un nuevo archivo y añade el siguiente contenido para crear una ServiceAccount. También puedes descargar el archivo objeto desde mi repo de Github.

vim admin-sa.yml
cat admin-sa.yml
apiVersion: v1
kind: ServiceAccount
metadata:
  name: rahul-admin
  namespace: kube-system

Una vez que tengas el archivo objeto, ejecuta el siguiente comando para crear una ServiceAccount.

kubectl apply -f admin-sa.yml

Crear una cuenta de servicio

Ahora tienes que asociar la ServiceAccount «rahul-admin» al rol de clúster «cluster-admin». Crea un nuevo archivo con el siguiente contenido para crear un ClusterRoleBinding o haz clic aquí para descargar el archivo objeto de mi repo de Github.

vim admin-rbac.yml
cat admin-rbac.yml
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
  name: rahul-admin
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: cluster-admin
subjects:
  - kind: ServiceAccount
    name: rahul-admin
    namespace: kube-system

Ejecuta el siguiente comando para crear un «ClusterRoleBinding».

kubectl apply -f admin-rbac.yml

Crear un ClusterRoleBinding

Ahora tenemos un «ClusterRole» –> «cluster-admin» vinculado a la «ServiceAccount» –> «rahul-admin».

Ahora estamos preparados para obtener el token que se utilizará para acceder al panel de control de Kubernetes. Para obtener el token, ejecuta los siguientes comandos.

SA_NAME="rahul-admin"
kubectl -n kube-system describe secret $(kubectl -n kube-system get secret | grep ${SA_NAME} | awk '{print $1}')

Consigue la ficha

En la captura de pantalla anterior, puedes ver un token que se utilizará para iniciar sesión en el panel de control de Kubernetes. Copia este token y pulsa la URL del salpicadero en «NodeIP:NodePort».

Aquí, NodeIP es la IP de cualquiera de los nodos del cluster y NodePort es el Puerto (en este caso es 32304, en tu caso puedes tener un puerto diferente) del servicio que hemos creado.

Una vez que pulses la URL «NodeIP:NodePort», verás una pantalla como la siguiente. Aquí, selecciona la opción «Token», introduce el Token que hemos obtenido en el paso anterior y pulsa el botón «Iniciar sesión».

Accede al panel de control de Kubernetes

Accede al panel de control en IP:NodePort

Una vez que hayas iniciado la sesión con éxito, deberías ver el Tablero de Kubernetes de la siguiente manera.

El Tablero - Espacio de nombres por defecto

En la parte superior de la pantalla, puedes incluso cambiar el Namespace y ver los recursos que hay en él. Ahora ya estás preparado para explorar el Panel de control de Kubernetes.

El panel de control - espacio de nombres kubernetes-dashboard

Conclusión

En este artículo, hemos desplegado todos los objetos de Kubernetes necesarios para tener el Dashboard en el cluster. Hemos creado un ServiceAccount y un ClusterRoleBinding para tener un Token de acceso al Dashboard de Kubernetes, ya que no se puede acceder a él de forma sencilla. El dashboard puede ayudarte a conocer el cluster y ver todos los objetos que tiene en él.

También te podría gustar...