Site iconSite icon Anthony Jacob

Comment installer Kubernetes Dashboard

image de mise en avant pour l'article Kubernetes Dashboardimage de mise en avant pour l'article Kubernetes Dashboard

image de mise en avant pour l'article 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

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

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:
Quitter la version mobile