Présentation
Kubernetes (souvent nommé k8s) est une plateforme complète pour la mise en place du déploiement et automatisation de conteneurs sur des milliers de machines.
Une fois installĂ© sur chaque machine, on s’abstrait du matĂ©riel pour entrer dans un environnement complet pour dĂ©ployer, automatiser et Ă©quilibrer les charges pour diffĂ©rents services dĂ©livrĂ©s par des conteneurs.
La plateforme est tellement souple qu’elle permet de choisir son moteur de conteneurs, la façon de surveiller le tout, quel load balancer on souhaite, comment gĂ©rer le chiffrement (Let’s Encrypt, etc.) et ainsi de suite.
Ce projet a été créé par Google puis donné, en Open Source, à la CNCF (Cloud Native Computing Foundation).
Pour en savoir plus, il y a une page concernant Kubernetes sur le site officiel de la CNCF .
Variantes
Kubernetes est délivré sous plusieurs formes. Chacun propose une distribution de Kubernetes avec des composants différents.
Parmi les distributions notables on a :
- Minikube , pour une utilisation locale et la phase de développement de vos outils ou services sous Kubernetes,
- k3s , une version allégée qui tourne, notamment, sur les célèbres RPI ,
- k0s , une distribution dĂ©livrĂ©e en un binaire unique ! S’installe donc facilement sur n’importe quelle machine physique ou virtuelle, dans le cloud ou sur une machine physique.
Outils
Étant donnĂ© que Kubernets (k8s) est une plateforme très utilisĂ©e et ayant de multiples variantes, elle fait couler de l’encre sur Internet. Et la communautĂ© gĂ©nère de multiples outils pour simplifier certaines tâches.
Quelques outils :
- k3sup permet de déployer un cluster complet de Kubernetes en quelques secondes en utilisant la distribution k3s.
Astuce : installation locale avec k3sup et un Dashboard
Grâce à k3sup, on peut déployer un cluster en quelques secondes.
Profitons-en pour dĂ©ployer en local un cluster unique composĂ© du master et d’un worker.
Installation de la commande k3sup
Sous ArchLinux (dépôt AUR) :
yay -S k3sup || paru -S k3sup
Sinon en ligne de commande (tel qu’expliquĂ© dans la documentation officielle) :
curl -sLS https://get.k3sup.dev | sh
sudo install k3sup /usr/local/bin/
Ça marche aussi sous Windows il paraît.
Installation du cluster local
Attention cette commande va crĂ©er un fichier kubeconfig Ă l’endroit oĂą vous vous situez !
Ce fichier sera utile pour la suite.
Une fois la commande k3sup installée, il suffit de faire :
k3sup install --local
Et voilĂ Â !
Configuration
La commande d’installation ayant crĂ©Ă© un fichier kubeconfig, on va utiliser ce fichier pour accĂ©der Ă notre cluster k8s local :
export KUBECONFIG=`pwd`/kubeconfig
Désormais vous avez accès à votre cluster via la commande kubectl (à installer sur votre machine).
Garder la configuration après chaque redémarrage
- copiez le fichier kubeconfig dans la racine de votre utilisateur, par exemple
cp $(pwd)/kubeconfig $HOME/
, - ajoutez la ligne suivante dans votre fichier .bashrc ou .zshrc :
export KUBECONFIG="$HOME/kubeconfig"
Dashboard
Le Dashboard Kubernetes est une interface Web permettant d’inspecter son cluster Kubernetes en quelques clics.
Installation
En quelques lignes :
helm repo add kubernetes-dashboard https://kubernetes.github.io/dashboard/
helm upgrade --install kubernetes-dashboard kubernetes-dashboard/kubernetes-dashboard --create-namespace --namespace kubernetes-dashboard
Configuration
Une fois installé, le Dashboard existe mais nous avons besoin de 2 choses :
- un utilisateur qui aura accès,
- mettre Ă disposition un port pour accĂ©der Ă l’interface web.
Nous allons ici nous concentrer sur l’utilisateur et son accès.
Crééz le fichier service-account.yaml avec le contenu suivant :
apiVersion: v1
kind: ServiceAccount
metadata:
name: admin-user
namespace: kubernetes-dashboard
Créez ensuite le fichier cluster-role.yaml avec le contenu suivant :
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
On applique les changements à notre cluster :
kubectl apply -f service-account.yaml
kubectl apply -f cluster-role.yaml
Nous avons donc désormais un utilisateur admin-user
.
Accès
Chaque fois que vous souhaitez accéder au Dashboard, vous allez devoir faire 2 choses :
- lancer dans une console la commande suivante pour créer un tunnel vers le Dashboard :
kubectl -n kubernetes-dashboard port-forward svc/kubernetes-dashboard-kong-proxy 8443:443
- crĂ©er un token d’accès pour le Dashboard avec la commande
kubectl -n kubernetes-dashboard create token admin-user
Ainsi le Dashboard est accessible Ă l’adresse suivante : https://localhost:8443/ .