E-NO
Kubernetes 8 min de lecture

Configuration d’un laboratoire local pour le tableau de bord Web Kubernetes : guide pratique de mise en œuvre

calendar_today Publié : 2026-08-29
update Dernière mise à jour : 2026-08-29
analytics Efficacité SEO : 100%
Illustration du guide technique pour « Configuration d’un laboratoire local pour le tableau de bord Web Kubernetes : guide pratique de mise en œuvre ».

Ce guide décrit la mise en place d’un environnement de laboratoire local sûr et reproductible pour le tableau de bord Web Kubernetes, destiné aux tests, au dépannage et aux expérimentations. Il couvre l’inventaire des versions, la configuration sécurisée, la vérification, la récupération et une liste de contrôle opérationnelle, avec des commandes concrètes et les sorties attendues.

Introduction

Le tableau de bord Web Kubernetes est un outil puissant pour visualiser les ressources d’un cluster, diagnostiquer les charges de travail et gérer les applications. Cependant, l’exposer en production comporte des risques de sécurité, et expérimenter sur un cluster partagé peut perturber les autres utilisateurs. Un environnement de laboratoire local offre un espace sûr et isolé pour apprendre les fonctionnalités du tableau de bord, tester les politiques RBAC (Role-Based Access Control, contrôle d’accès basé sur les rôles) et pratiquer des modèles de déploiement sans affecter les systèmes de production.

Ce guide présente une implémentation pratique d’un laboratoire local pour le tableau de bord Web Kubernetes. Nous aborderons l’inventaire de l’environnement, la configuration sécurisée, la vérification, les modes de défaillance et une liste de contrôle opérationnelle. À la fin, vous disposerez d’une configuration reproductible et sécurisée que vous pourrez utiliser pour tester et vous former.

Inventaire des versions et de l’environnement

Avant d’installer le tableau de bord, établissez un environnement cohérent pour éviter les incompatibilités de versions et les comportements inattendus. Les composants suivants sont requis :

  • Un cluster Kubernetes local. Il peut s’agir d’un cluster à nœud unique créé avec Minikube, kind ou k3s. Pour ce guide, nous utiliserons Minikube, mais les étapes sont similaires pour d’autres distributions.
  • kubectl configuré pour communiquer avec le cluster.
  • Un navigateur Web pour accéder à l’interface du tableau de bord.

Exemple d’inventaire de l’environnement :

ComposantVersion/OutilRemarques
Cluster Kubernetesv1.27.3 (Minikube)Cluster local à nœud unique
kubectlv1.27.3La version du client correspond au serveur
Tableau de bordv2.7.0Dernière version stable au moment de la rédaction
Système d’exploitationUbuntu 22.04 LTSSystème hôte pour Minikube

Démarrez le cluster et vérifiez la connectivité :

minikube start --driver=docker --kubernetes-version=v1.27.3
kubectl cluster-info

Sortie attendue :

Kubernetes control plane is running at https://192.168.49.2:8443
CoreDNS is running at https://192.168.49.2:8443/api/v1/namespaces/kube-system/services/kube-dns:dns/proxy

Pour vous assurer que votre contexte kubectl est défini sur Minikube, exécutez :

kubectl config current-context

Sortie attendue :

minikube

Si un contexte différent s’affiche, basculez avec :

kubectl config use-context minikube

Question rapide 1 sur 2

Quel est l'objectif du Kubernetes Dashboard ?

Le passage de référence indique que le Dashboard est une interface utilisateur web à usage général pour les clusters Kubernetes qui permet aux utilisateurs de gérer et de dépanner les applications exécutées dans le cluster, ainsi que le cluster lui-même.

Chemin de configuration sécurisé

Dans un environnement de laboratoire, nous suivons tout de même les meilleures pratiques de sécurité pour simuler des conditions proches de la production. Au lieu d’utiliser la configuration non sécurisée par défaut, nous allons :

  • Créer un espace de noms dédié au tableau de bord.
  • Déployer le tableau de bord avec un compte de service minimal.
  • Utiliser RBAC pour restreindre l’accès.
  • Accéder au tableau de bord via le proxy kubectl avec une authentification par jeton.

Étape 1 : Créer l’espace de noms et le compte de service

kubectl create namespace kubernetes-dashboard
helm repo add kubernetes-dashboard https://kubernetes.github.io/dashboard/
helm upgrade --install kubernetes-dashboard kubernetes-dashboard/kubernetes-dashboard --create-namespace --namespace kubernetes-dashboard

Vérifiez que le compte de service a été créé :

kubectl get serviceaccount dashboard-admin -n kubernetes-dashboard

Sortie attendue :

NAME              SECRETS   AGE
dashboard-admin   0         10s

Remarque : Depuis Kubernetes v1.24, les comptes de service ne reçoivent plus automatiquement un secret de jeton à longue durée de vie. Nous générerons un jeton plus tard à l’aide de la commande kubectl create token.

Étape 2 : Appliquer les règles RBAC

Créez un ClusterRoleBinding pour un accès cluster-admin (à des fins de laboratoire) ou un rôle plus restrictif selon les besoins. Pour simplifier, nous accorderons cluster-admin au compte de service. Dans un environnement réel, vous devez définir un rôle à privilèges minimaux.

Créez un fichier dashboard-admin.yaml :

apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
  name: dashboard-admin
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: cluster-admin
subjects:
- kind: ServiceAccount
  name: dashboard-admin
  namespace: kubernetes-dashboard

Appliquez-le :

kubectl apply -f dashboard-admin.yaml

Sortie attendue :

clusterrolebinding.rbac.authorization.k8s.io/dashboard-admin created

Vérifiez la liaison :

kubectl get clusterrolebinding dashboard-admin

Sortie attendue :

NAME              ROLE                        AGE
dashboard-admin   ClusterRole/cluster-admin   5s

Pour un moindre privilège de type production, vous pourriez créer un Role et un RoleBinding limités à l’espace de noms du tableau de bord. Par exemple, pour autoriser uniquement la visualisation des pods et des déploiements, vous créeriez un Role avec les verbes get, list et watch sur ces ressources. Cependant, pour ce laboratoire, cluster-admin offre une visibilité complète sur les fonctionnalités du tableau de bord.

Étape 3 : Déployer le tableau de bord

Appliquez le manifeste officiel du tableau de bord :

kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v2.7.0/aio/deploy/recommended.yaml

Sortie attendue (tronquée) :

namespace/kubernetes-dashboard configured
serviceaccount/kubernetes-dashboard created
service/kubernetes-dashboard created
secret/kubernetes-dashboard-certs created
...
deployment.apps/kubernetes-dashboard created

Vérifiez que les pods sont en cours d’exécution :

kubectl get pods -n kubernetes-dashboard

Sortie attendue :

NAME                                         READY   STATUS    RESTARTS   AGE
dashboard-metrics-scraper-5c6d6f6c8b-xxxxx   1/1     Running   0          30s
kubernetes-dashboard-xxxxxxxxxx-xxxxx        1/1     Running   0          30s

Attendez que les deux pods affichent le statut Running. Le téléchargement des images peut prendre une minute.

Étape 4 : Obtenir un jeton

Obtenez un jeton pour le compte de service :

kubectl -n kubernetes-dashboard create token dashboard-admin

Cette commande génère un long jeton JWT (JSON Web Token, jeton Web JSON). Copiez-le pour la connexion. Notez que ce jeton est limité dans le temps (1 heure par défaut). Pour un jeton plus durable en laboratoire, vous pouvez spécifier une durée :

kubectl -n kubernetes-dashboard create token dashboard-admin --duration=24h

Vérification et diagnostic

Après le déploiement, vérifiez que le tableau de bord fonctionne correctement et est accessible via un proxy sécurisé.

Démarrez le proxy kubectl dans un terminal séparé :

kubectl proxy

Sortie attendue :

Starting to serve on 127.0.0.1:8001

Accédez au tableau de bord à l’adresse :

http://localhost:8001/api/v1/namespaces/kubernetes-dashboard/services/https:kubernetes-dashboard:/proxy/

Remarque : Vous devez inclure la barre oblique finale. L’URL est sensible à la casse.

Vous devriez voir une page de connexion. Sélectionnez Token et collez le jeton obtenu précédemment. Après une authentification réussie, vous verrez l’aperçu du tableau de bord.

Contrôles de diagnostic :

  • Vérifiez les journaux du pod pour détecter d’éventuelles erreurs :
kubectl logs -n kubernetes-dashboard deployment/kubernetes-dashboard

La sortie attendue se termine par :

Starting server...

Si des erreurs surviennent, elles apparaîtront dans les journaux. Les problèmes courants incluent des permissions RBAC manquantes ou des échecs de téléchargement d’image.

  • Vérifiez les points de terminaison du service :
kubectl get endpoints -n kubernetes-dashboard

Sortie attendue :

NAME                         ENDPOINTS           AGE
dashboard-metrics-scraper   10.244.0.5:8000     5m
kubernetes-dashboard        10.244.0.6:8443     5m

Si les points de terminaison sont vides, les pods ne sont peut-être pas prêts ou le sélecteur de service ne correspond pas aux étiquettes des pods.

  • Testez l’accès à l’API avec curl (facultatif) :
export TOKEN=$(kubectl -n kubernetes-dashboard create token dashboard-admin)
curl -k https://localhost:8001/api/v1/namespaces/kubernetes-dashboard/services/https:kubernetes-dashboard:/proxy/ -H "Authorization: Bearer $TOKEN"

Vous devriez recevoir une page HTML (la page de connexion du tableau de bord). Cela confirme que le proxy et l’authentification fonctionnent.

De plus, vérifiez la sonde de préparation du pod du tableau de bord :

kubectl describe pod -n kubernetes-dashboard -l k8s-app=kubernetes-dashboard

Recherchez les sections Readiness et Liveness. Elles doivent indiquer success.

Question rapide 2 sur 2

Quelle méthode d'installation est actuellement prise en charge pour l'interface utilisateur Kubernetes Dashboard ?

Le passage de référence indique explicitement : « Kubernetes Dashboard prend en charge uniquement l'installation basée sur Helm actuellement, car elle est plus rapide et nous donne un meilleur contrôle sur toutes les dépendances requises par Dashboard pour fonctionner. »

Modes de défaillance et récupération

Problèmes courants et comment les résoudre :

Problème 1 : Le pod du tableau de bord est bloqué en CrashLoopBackOff

Symptôme : Le pod redémarre à plusieurs reprises et le statut affiche CrashLoopBackOff.

Diagnostic :

kubectl logs -n kubernetes-dashboard deployment/kubernetes-dashboard --previous

Causes possibles :

  • Permissions RBAC manquantes : assurez-vous que le ClusterRoleBinding est correctement appliqué.
  • Contraintes de ressources : minikube n’a peut-être pas assez de CPU/mémoire. Vérifiez minikube status et augmentez les ressources si nécessaire.
  • Erreurs de téléchargement d’image : vérifiez que l’image est accessible.

Correctif :

  • Réappliquez le manifeste RBAC : kubectl apply -f dashboard-admin.yaml.
  • Augmentez les ressources Minikube : minikube delete && minikube start --cpus=4 --memory=4096.
  • Si vous utilisez une image personnalisée, assurez-vous qu’elle est correctement téléchargée.

Problème 2 : Impossible d’accéder au tableau de bord via le proxy

Symptôme : Le navigateur affiche « 404 Not Found » ou « Service Unavailable ».

Diagnostic :

  • Assurez-vous que kubectl proxy est en cours d’exécution et qu’il n’y a pas de conflit de port. Le port par défaut est 8001 ; s’il est occupé, utilisez kubectl proxy --port=8002 et ajustez l’URL.
  • Vérifiez que l’URL utilise le bon chemin avec /proxy/ à la fin.
  • Vérifiez que le service existe : kubectl get svc -n kubernetes-dashboard.

Correctif :

  • Redémarrez le proxy si nécessaire.
  • Utilisez l’URL exacte : http://localhost:8001/api/v1/namespaces/kubernetes-dashboard/services/https:kubernetes-dashboard:/proxy/.

Problème 3 : L’authentification par jeton échoue

Symptôme : La page de connexion renvoie « Unauthorized » ou « Invalid token ».

Diagnostic :

  • Vérifiez que le compte de service existe : kubectl get serviceaccount dashboard-admin -n kubernetes-dashboard.
  • Vérifiez l’expiration du jeton : le jeton par défaut dure 1 heure. S’il est expiré, générez-en un nouveau.

Correctif :

  • Recréez le jeton : kubectl -n kubernetes-dashboard create token dashboard-admin.
  • Assurez-vous que le ClusterRoleBinding est correctement lié : kubectl get clusterrolebinding dashboard-admin -o yaml et vérifiez le sujet.

Retour en arrière

Pour supprimer complètement le tableau de bord :

kubectl delete -f https://raw.githubusercontent.com/kubernetes/dashboard/v2.7.0/aio/deploy/recommended.yaml
kubectl delete namespace kubernetes-dashboard
kubectl delete clusterrolebinding dashboard-admin

Cela nettoie toutes les ressources du tableau de bord. Vous pouvez ensuite recréer le laboratoire à partir de zéro si nécessaire.

Liste de contrôle opérationnelle

Utilisez cette liste de contrôle pour des opérations reproductibles :

  • [ ] Le cluster est en cours d’exécution et kubectl peut communiquer (minikube status, kubectl cluster-info).
  • [ ] L’espace de noms kubernetes-dashboard existe (kubectl get ns kubernetes-dashboard).
  • [ ] Le compte de service dashboard-admin est créé et lié à une RBAC appropriée (kubectl get clusterrolebinding dashboard-admin).
  • [ ] Le déploiement du tableau de bord est appliqué et les pods sont en cours d’exécution (kubectl get pods -n kubernetes-dashboard).
  • [ ] Le jeton est généré et stocké de manière sécurisée (utilisez kubectl -n kubernetes-dashboard create token dashboard-admin).
  • [ ] L’accès est vérifié via le proxy kubectl (ouvrez l’URL du tableau de bord et connectez-vous).
  • [ ] Les journaux sont examinés pour détecter des erreurs (kubectl logs -n kubernetes-dashboard deployment/kubernetes-dashboard).
  • [ ] Les procédures de nettoyage sont documentées (voir la section Retour en arrière).

Référence des commandes clés :

ActionCommande
Démarrer le clusterminikube start
Créer l’espace de nomskubectl create namespace kubernetes-dashboard
Créer le compte de servicekubectl create serviceaccount dashboard-admin -n kubernetes-dashboard
Appliquer la RBACkubectl apply -f dashboard-admin.yaml
Appliquer le tableau de bordkubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v2.7.0/aio/deploy/recommended.yaml
Obtenir un jetonkubectl -n kubernetes-dashboard create token dashboard-admin
Démarrer le proxykubectl proxy
Accéder au tableau de bordhttp://localhost:8001/api/v1/namespaces/kubernetes-dashboard/services/https:kubernetes-dashboard:/proxy/
Vérifier les podskubectl get pods -n kubernetes-dashboard
Consulter les journauxkubectl logs -n kubernetes-dashboard deployment/kubernetes-dashboard
Supprimer le tableau de bordkubectl delete -f https://raw.githubusercontent.com/kubernetes/dashboard/v2.7.0/aio/deploy/recommended.yaml
Supprimer l’espace de nomskubectl delete namespace kubernetes-dashboard
Supprimer la liaison RBACkubectl delete clusterrolebinding dashboard-admin

Conclusion

Un laboratoire local pour le tableau de bord Web Kubernetes offre un environnement sûr pour l’apprentissage et les tests. En suivant ce guide, vous avez configuré un tableau de bord avec une isolation par espace de noms, une RBAC et un accès sécurisé appropriés. Vous pouvez désormais expérimenter la gestion des ressources, surveiller les charges de travail et tester des configurations avant de les appliquer à des clusters partagés. Utilisez la liste de contrôle opérationnelle pour maintenir la cohérence et garantir la reproductibilité.

Ensuite, envisagez d’explorer des rôles RBAC plus granulaires pour limiter les autorisations du tableau de bord selon différents scénarios utilisateur. Par exemple, créez un rôle en lecture seule qui autorise uniquement la visualisation des ressources, ou un rôle administrateur limité à un espace de noms. De plus, vous pouvez intégrer le tableau de bord à un fournisseur OIDC (OpenID Connect) pour une authentification externe dans une configuration plus proche de la production. Les compétences que vous avez pratiquées ici vous aideront à administrer Kubernetes de manière plus efficace et plus sécurisée.

Recherches connexes

Score de qualité de l’article

Utilité pour le lecteur 100%
  • check_circle Guide prêt à lire
  • check_circle Exemples pratiques inclus
  • check_circle URL d’article optimisée pour le SEO