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

Installation de 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