Installer le dashboard officiel de Kubernetes
Guide d'installation du dashboard officiel de Kubernetes
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
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 !