image de mise en avant pour l'article Kubernetes Dashboard

Comment installer Kubernetes Dashboard

Temps de lecture estimé: 3 minutes

J’ai attaqué la refonte de mon infrastructure et je me suis installé un cluster Kubernetes. Je ne suis vraiment pas familier avec et j’avoue qu’une petite interface pourrait me faciliter la vie. ça tombe bien, Kubernetes propose son tableau de bord, Kubernetes Dashboard

On va voir ici comment l’installer et y accéder

Deployer Kubernetes dashboard

Pour déployer Kubernetes Dashboard, il suffit juste de les créer les pods avec le fichier de config disponible sur le dépôt git

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

Quelques secondes, le temps que ça se lance correctement et je vérifie avec

kubectl get pods --namespace kubernetes-dashboard

les nouveaux pods sont bien lancés

NAME                                        READY   STATUS    RESTARTS   AGE
dashboard-metrics-scraper-8c47d4b5d-l9v7g   1/1     Running   0          5d3h
kubernetes-dashboard-5676d8b865-lpqvp       1/1     Running   0          5d2h

Premier test depuis le worker

Pour tester si déjà le worker répond, je vais lancer

kubectl proxy

le proxy est à l’écoute

Starting to serve on 127.0.0.1:8001

je peux tester une requête curl

curl -I 127.0.0.1:8001

Je suis sur la bonne lancée, ça me répond

HTTP/1.1 200 OK
Audit-Id: 8e822983-6fa7-4a0a-aa67-3e150d695b0e
Cache-Control: no-cache, private
Content-Type: application/json
Date: Fri, 10 Jun 2022 10:56:11 GMT
X-Kubernetes-Pf-Flowschema-Uid: fd05701e-e3d7-43ad-bde8-b5429acdf7c3
X-Kubernetes-Pf-Prioritylevel-Uid: 3d3ab161-4ff3-420d-8b7e-176381b1d7d9

Rendre le Dashboard accessible

Je passe à l’étape d’après, je vais permettre au pod d’être accessible depuis un poste externe. Pour ça je vais éditer le service du dashboard et définir un mode d’accès par port sur le nœud

kubectl -n kubernetes-dashboard edit service kubernetes-dashboard

Et pratiquement tout à la fin, je remplace

type: ClusterIP

Par

type: NodePort

Lors de l’édition ou en tapant

kubectl describe services kubernetes-dashboard --namespace=kubernetes-dashboard

Je peux retrouver

NodePort:                 <unset>  32129/TCP

en testant avec l’ip de mon worker, j’arrive bien sur mon dashboard

kubernetes Dashboard login
kubernetes Dashboard login

Créer le service Account

Pour accéder au Dashboard, je vais utiliser un nouveau compte. Je créer un fichier admin.yml quelque part dans lequel je mets

apiVersion: v1
kind: ServiceAccount
metadata:
  name: admin-user
  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

Puis j’applique mon fichier

kubectl apply -f admin.yml

Token d’accès

Auparavant, Kubernetes créait automatiquement des token pour les service account créés. Il fallait alors les récupérer avec

kubectl get secret -n kubernetes-dashboard $(kubectl get serviceaccount admin-user -n kubernetes-dashboard -o jsonpath="{.secrets[0].name}") -o jsonpath="{.data.token}" | base64 --decode

Voyant que moi je n’en avais pas. j’ai fait mes recherches et j’ai compris qu’à partir de la version 1.24 de Kubernetes, il n’y a pas de token d’accès créé automatiquement, il faut soit ajouter quelques annotations, Soit le générer à la demande avec la commande

kubectl create token -n kubernetes-dashboard admin-user

Et tadam, avec le token obtenu, je peux me connecter au Dashboard de mon cluster Kubernetes

kubernetes dashboard nodes
kubernetes dashboard nodes

Creer un secret token

sinon pour générer un secret token fixe, j’ai créé un fichier yaml admin-secret.yml avec

apiVersion: v1
kind: Secret
type: kubernetes.io/service-account-token
metadata:
   name: admin-user
   namespace: kubernetes-dashboard
   annotations:
      kubernetes.io/service-account.name: "admin-user"

que j’ai appliqué avec

kubectl apply -f admin-secret.yml

et après j’ai pu le récupérer avec

kubectl describe secret admin-user -n kubernetes-dashboard

Voilà pour l’installation!! Je découvre un peu l’interface, ça à l’air assez complet et typiquement ce que je recherche. De l’accès à des informations basiques ou avancées en quelques clics.

Je souhaitais aussi tester portainer.io pour lequel je ferais surement un autre article pour détailler l’installation.

Je te partage aussi une application que j’ai aussi testée sommairement (quand je n’arrivais pas à accéder au Dashboard Kubernetes). C’est plutôt pratique puisqu’elle s’installe sur le poste client et accède aux infos via l’api Kubernetes. Cette application c’est Octant

Dis-moi ce que tu en penses et si ça a pu te servir ! En attendant, je te dis à bientôt pour de nouvelles aventures!!

Partagez l'article:
FacebookTwitterEmailLinkedIn

3 réflexions au sujet de « Comment installer Kubernetes Dashboard »

  1. Hello,
    Merci mille fois ! je ne comprenais pas pourquoi le secret n’était pas généré automatiquement !
    Ton tutoriel est clair et précis.

    Je me pose une question : comment retrouver le token créé ?

    Merci de ton retour !

    1. Merci pour ton retour!

      Et bien c’est une bonne question… je ne pense pas qu’il soit possible de récupérer le token généré, d’autant plus que par défaut, le token est valide pour 1h (sinon il faut utiliser l’option –duration=999999h).

      Il doit bien être quelque part, mais je n’ai rien trouvé dans ce sens-là. j’imagine que par ce biais là, il faut en régénérer un à chaque fois.

      sinon pour générer un secret token fixe, j’ai créé un fichier yaml admin-secret.yml avec

      apiVersion: v1
      kind: Secret
      type: kubernetes.io/service-account-token
      metadata:
         name: admin-user
         namespace: kubernetes-dashboard
         annotations:
            kubernetes.io/service-account.name: "admin-user"

      que j’ai appliqué avec

      kubectl apply -f admin-secret.yml

      et après j’ai pu le récupérer avec

      kubectl describe secret admin-user -n kubernetes-dashboard

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.