Le but de cet atelier était de prendre en main Kubernetes (K8s) et de découvrir les différentes possibilités offertes par le produit.
https://fr.wikipedia.org/wiki/Kubernetes
Pour tester Kubernetes, il est possible de l’installer sur un seul nœud à l’aide d’un paquet snap.
Installation de snap
Installation de snap sur Eolebase 2.7.1 :
# Query-Auto
# apt-eole install snapd
Il faut se déconnecter et se reconnecter pour que le PATH soit mis à jour.
Pour tester snap il est possible d’installer le paquet Hello World :
# snap install hello-world
hello-world 6.4 from Canonical✓ installed
Tester le binaire hello-world :
# hello-world
Hello World!
snap list : lister les paquets snap installés
snap refresh : rafraîchir la liste des paquets snap
snap remove <nom_du_paquet> : désinstaller le paquet
snap help : permet d’obtenir de l’aide
Documentation snap : https://doc.ubuntu-fr.org/snap
Tutoriel d’installation de snap : https://docs.snapcraft.io/installing-snap-on-ubuntu/6740
Désactivation du pare-feu pour les tests
# CreoleSet activer_firewall non
# reconfigure
Installation de MicroK8s
MicroK8s, qui est une version microscopique de k8s, nécessite ufw et iptables.
# apt-eole install ufw iptables
ATTENTION : La commande reconfigure désinstalle le paquet ufw !
Guides d’installation : https://microk8s.io/ et https://microk8s.io/docs/
# snap install microk8s --classic
Quelques exemples de commandes possibles :
- microk8s.status : permet de savoir si le service fonctionne correctement
- microk8s.inspect : permet de savoir si il manque quelque chose
- snap info microk8s : liste les versions existantes du paquet
- snap install microk8s –classic –channel=1.13/stable : permet de forcer l’installation du paquet dans une version donnée
- microk8s.kubectl get nodes : renvoi la liste des nœuds
- microk8s.enable dns dashboard : active les service additionnels dns et dashboard
- microk8s.disable dashboard dns : désactive les services additionnels dns et dashboard
Consulter le dashboard
Activation du service dashboard :
# microk8s.enable dashboard
Rendre accessible le service depuis l’extérieur en éditant sa configuration :
# microk8s.kubectl edit services kubernetes-dashboard -n kube-system
Remplacer la ligne type: clusterIP par type: NodePort et enregistrer la modification.
Prendre connaissance du port exposé :
# microk8s.kubectl -n kube-system get service kubernetes-dashboard
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
kubernetes-dashboard NodePort 10.152.183.168 <none> 443:31545/TCP 2d
Ouvrir un navigateur à l’adresse https://eolebase.ac-test.fr:31545
Récupérer le nom du service précis qui gère les tokens du dashboard :
# microk8s.kubectl -n kube-system get secret
NAME TYPE DATA AGE
default-token-58wvn kubernetes.io/service-account-token 3 2d
heapster-token-bstl4 kubernetes.io/service-account-token 3 2d
kube-dns-token-tm8xw kubernetes.io/service-account-token 3 2d
kubernetes-dashboard-certs Opaque 0 2d
kubernetes-dashboard-key-holder Opaque 2 2d
kubernetes-dashboard-token-sp698 kubernetes.io/service-account-token 3 2d
S’authentifer par Token :
# microk8s.kubectl -n kube-system describe secret kubernetes-dashboard-token-sp698
Copier le token.
Coller le token dans l’interface d’authentification.
Le dashboard s’affiche.
Installations et tests d’application Kubernetes
Installation de Git et des sources
# apt-eole install git
Clone du dépôt
# git clone https://gitlab.mim-libre.fr/EOLE/hackathon-kubernetes.git && cd hackathon-kubernetes
Déploiement d’applications
L’instanciation d’une Apps Kubernetes se fait via un fichier YAML définissant les différents besoins (Deployements, Services, Volumes, VolumeClaims, etc).
Déploiement d’Ethercalc
Ethercalc s’appuie sur le service redis :
# microk8s.kubectl apply -f kubernetes/redis/redis-deployment.yml
deployment.extensions/redis created
service/redis created
Déploiement du service Ethercalc :
# microk8s.kubectl apply -f kubernetes/ethercalc/ethercalc-deployment.yml
deployment.extensions/ethercalc created
service/ethercalc created
Lister les services :
# microk8s.kubectl get service
NAMESPACE NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
default ethercalc LoadBalancer 10.152.183.42 <pending> 80:31528/TCP 3m35s
Ethercalc répond sur le port 31528 : http://eolebase.ac-test.fr:31528/
Déploiement de FilePizza
# microk8s.kubectl apply -f kubernetes/filepizza/filepizza-deployment.yml
deployment.extensions/filepizza created
service/filepizza created
Lister les services :
# microk8s.kubectl get service
NAMESPACE NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
default ethercalc LoadBalancer 10.152.183.42 <pending> 80:31528/TCP 19m
default filepizza NodePort 10.152.183.183 <none> 80:30151/TCP 10m
FilePizza répond sur le port 30151 : http://eolebase.ac-test.fr:30151
Conclusion
Les travaux et le compte rendu de cet atelier ont été déposés sur la forge de la Mutualisation Inter-Ministérielle (MIM) à l’adresse : https://gitlab.mim-libre.fr/EOLE/hackathon-kubernetes