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
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
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!!
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 !
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
que j’ai appliqué avec
et après j’ai pu le récupérer avec
Milles mercis pour ce tutoriel. Je cherchais une procédure claire pour installer ce dashboard.