\chapter{Les environnements de déploiement possible de Kubernetes}
Après s’être assez documenté sur ce qu’est Kubernetes, il est important de maintenant pouvoir le déployé. En fonction de nos besoin et de l’environnement de déploiement plusieurs solutions s’offrent à nous à savoir :
elle est la première technologie Kubernetes trouvée lorsqu’on essaie de déployer notre environnement Kubernetes. Elle est simple d’installation sur un quelconque ordinateur car Minikube est particulièrement conçu à des fins de tests ou pour l’apprentissage et donc le plus simple moyen pour se familiariser avec l’utilitaire kubectl. Il est installé avec un cluster à nœud unique, avec l’utilitaire de ce qui la plus petite taille possible, d’où sont aspect aussi pratique. En effet, il ne nécessite pas d’énorme ressources de la machine hôte, un minime d’une machine hôte avec deux processeurs, 2Go de mémoire vive et un espace de stockage de 20Go suffisent pour l’installer. Malgré qu’il soit léger et assez facile à déployer, son principale inconvénient est qu’il n’est pas possible d’avoir des nœuds supplémentaires pour pouvoir profiter pleinement de la puissance de Kubernetes.
communément appelé la voie difficile pour débuter avec Kubernetes. Kubeadm permet d’avoir un cluster minimum de travail avec au minimum un cluster composé de deux nœuds à savoir un nœud de maître (master) et un nœud de travail (worker). Il est également possible d’ajouter autant de nœuds de travail souhaiter. Il est important de savoir que c’est une solution assez gourmande en ressource et que chaque nœud doit être déployé sur une machine physique ou être virtualiser avec des ressources minimales de 2Go de mémoire vive pour chaque nœud et d’au moins 2 CPU pour le nœud maître(master). Avec Kubeadm on est sûr de pouvoir bénéficier de tout le potentiel qu’offre Kubernetes.
Il n’est possible que d’avoir un seul nœud maître(master).
c’est un outil permettant de déployer un cluster local à l’intérieur d’un conteneur docker. Sa particularité comparée autre solution est qu’il est possible d’avoir plusieurs nœuds maîtres (master) en plusieurs d’avoir plusieurs nœuds de travail comme Kubeadm. Avec cette solution, il est possible de déployer quasiment tout type de clusters.
L'application se divise en deux grandes parties. L'application \textbf{wordpress}, accessible depuis l'extérieur. Et la base de donnée \textbf{Mysql} sur laquel se repose wordpress.Ces deux service sont scalés en fonction des besoins.
En plus de ces deux parties, un \textbf{cronjob} permet de sauvegarder régulièrement la base de donnée.
La partie wordpress est celle qui est \textbf{accessible depuis l'extérieur} car elle héberge le serveur web.
Le conteneur utilisé a wordpress déja installé. Une variable d'environement permet de spécifier le host de la base de donnée.
Le service kubernetes wordpress permet d'\textbf{exposer} wordpress sur le port 80.
Un deployment wordpress est utilisé pour pouvoir rendre \textbf{élastique} le service.
Le deployment permet de créé des pods. Il modifis la variable d'environement du host de la base de donnée. Ce déployement va ensuite créé un certains nombre de pods avec les conteneurs wordpress.
Une architecture a du être mis en place pour rendre \textbf{élastique} mysql. Ainsi, plusieurs pods avec peut être mis en service. Mais \textbf{seul le premier pod} est accessible en \textbf{écriture}. Les pods ont un \textbf{nom unique} en fonction de l'ordre d'initialisation: mysql-\textbf{0}, mysql-\textbf{1}, mysql-\textbf{2}...
Un configmap est utilisé. Cet objet kubernetes permet de générer un petit stockage, généralement un fichier de configuration. Ce configMap donne une configuration mysqld pour le premier pod et une autre pour les réplicas.
Avant la création du conteneur mysql, le pod lance plusieurs conteneurs. Le premier est \textbf{init-mysql}. Il \textbf{va appliquer le configmap} approprié en fonction de si le pod est le primaire ou un réplica.
Un second conteneur appelé \textbf{mysql-clone} s'occupe de \textbf{cloner les données}. Chaque pod clone les données a partir du pod précédent. Par exemple, le pod mysql-3 clone les données du pod mysql-2. Pour créer un nouveau pods, le statefulset s'assure donc que le pod précédent a finit d'être créé. il n'est \textbf{pas possible de créé plusieurs poods en parralèle}.
L'outil open source \textbf{xtrabackup} est utilisé pour cloner les données.
\textbf{Le pod final a deux conteneurs}. Un conteneur mysql qui s'occupe de la base de donnée et un conteneur xtrabackup. Ce dernier permet au pod suivant de cloner les donnée.
\section{Sauvegardes}
Un conteneur est construit pour réaliser les sauvegardes. Ce conteneur a une base alpine linux sur laquel est installé mysql. Le conteneur lance un script au démarage qui permet de faire les sauvegardes.
Un cronjob est utilisé pour appelé le conteneur deux fois par jours.