Installer le dashboard officiel de Kubernetes

Guide d'installation du dashboard officiel de Kubernetes

Installer le dashboard officiel de Kubernetes
kubernetes dashboard k3s k8s

Au sommaire :

  • 1-Qu'est-ce que le dashboard de Kubernetes ?
  • 2-Prérequis
  • 3-Déploiement
  • 4-Créer un ServiceAccount
  • 5-Accéder à l'interface
  • 6-Retour d'un utilisateur

1-Qu'est-ce que le dashboard de Kubernetes ?

Comme son nom l'indique, c'est le dashboard de Kubernetes. Il vous permettra d'avoir une visualisation graphique de votre cluster ainsi que de déployer vos pods à partir d'un manifeste YAML ou en l'éditant directement à partir de l'interface.

2-Prérequis

Installer K3s
Découvrons ensemble K3s, la version allégée et optimisée pour l’IOT par Rancher Labs

2-Déploiement

Tout d'abord, exportez les valeurs suivantes :

Le lien de téléchargement du dashboard.

GITHUB_URL=https://github.com/kubernetes/dashboard/releases

La dernière version en date (7.10.1 au moment où j'écris).

VERSION_KUBE_DASHBOARD=$(curl -w '%{url_effective}' -I -L -s -S ${GITHUB_URL}/latest -o /dev/null | sed -e 's|.*/||')

Enfin, déployez le manifeste YAML avec la commande suivante

kubectl create -f https://raw.githubusercontent.com/kubernetes/dashboard/${VERSION_KUBE_DASHBOARD}/aio/deploy/recommended.yaml

3-Créer un ServiceAccount

Créez un fichier "dashboard.admin-user.yml".

nano dashboard.admin-user.yml

Ajoutez les informations suivantes :

  • apiVersion : la version de l'API
  • kind : le type d'objet, en l'occurence on souhaite créer un service
  • metadata : comme son nom l'indique, les metadonnées avec le nom du service (admin-user) et le namespace dans lequel il se trouvera (kubernetes-dashboard)
apiVersion: v1
kind: ServiceAccount
metadata:
  name: admin-user
  namespace: kubernetes-dashboard

Créer un fichier "dashboard.admin-user-role.yml".

nano dashboard.admin-user-role.yml

Ajoutez les informations suivantes :

  • apiVersion : la version de l'API de rbac (contrôle d'accès basé sur les rôles)
  • kind : le type d'objet, en l’occurrence on souhaite créer un service
  • metadata : comme son nom l'indique, les métadonnées avec le nom du service (admin-user) et le namespace dans lequel il se trouvera (kubernetes-dashboard)
  • roleRef : indiquez l'API, le type d'objet et le nom pour définir le rôle
  • subject : indiquez le type d'objet (un service), le nom (admin-user) et le namespace (kubernetes-dashboard)
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
  name: admin-user
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: cluster-admin
subjects:
- kind: ServiceAccount
  name: admin-user
  namespace: kubernetes-dashboard

Déployez les deux manifestes YAML.

kubectl create -f dashboard.admin-user.yml -f dashboard.admin-user-role.yml

4-Accéder à l'interface

Éditez le service "kubernetes-dashboard" avec l'éditeur nano.

KUBE_EDITOR="nano" kubectl edit svc kubernetes-dashboard -n kubernetes-dashboard

Modifiez "ClusterIP" par "NodePort" et sauvegardez.

Vérifiez les services et récupérez le numéro de port.

kubectl get svc kubernetes-dashboard -n kubernetes-dashboard

Et récupérez le token pour accéder au dashboard avec la commande suivante.

kubectl -n kubernetes-dashboard create token admin-user

Tapez l'adresse IP de votre machine virtuelle ou de votre conteneur suivi du numéro de port puis on vous demandera un token (ce sera systématique).

Copiez-collez le token précédemment généré et vous pourrez accéder au dashboard.

À vous les joies du déploiement de pods directement) à partir du navigateur web.

6-Retour d'un utilisateur

Voici le retour d'un de mes lecteurs (Fall, si tu me lis) au sujet du tutoriel :

Au top TechnoNagib. Cependant le dashboard a beaucoup trop de droits sur le cluster , ce qui pourrait être utilisé lors d'une cyber attaque afin de compromettre le cluster et les hôtes qui en font partie , se déplacer latéralement et compromettre tout le système d'information. Il faudra penser à faire du least privileged et définir déjà pas un ClusterRole mais des Role en fonction des namespace à monitorer, ensuite minimiser au maximum sur des actions en read le plus souvent 😉 . Top pour l'article !