K3S
K3s est une solution légère de Kubernetes, conçue pour être simple à installer et à utiliser. Il est particulièrement adapté pour les environnements à ressources limitées, comme les machines virtuelles ou les appareils IoT. K3s est une distribution de Kubernetes qui est optimisée pour être légère et rapide.
Architecture de K3s
Nous avons déployé un cluster K3S hautement disponible avec une base de données externe au cluster. L'architecture ce résume à faire tourner un nœud qui sera master et worker sur chacune des zones. Puis nous avons déployé une base de données externe au cluster pour stocker les données de l'application. Et enfin, nous avons déployé un load balancer pour répartir la charge entre les différents nœuds du cluster. Documentation de l'installation du loadblancer.
Installation de K3s
Pour installer K3S nous avons utilisé nixOS pour provsionner le cluster.
Voici l'organisation de partie kubernetes du repos nixos
Donc dans le fichier k3s commun à tous les noeuds kubernetes, nous avons mis les configurations transverse lié à K3S.
Vu que nous utilisons Longhorn pour le stockage de nos données, nous avons du activer le stockage dynamique de K3S. Nous avons besoins de configurer OpenIscsi et le nfs pour les backups puis le cifs
Pour la configuration du ISCSI, nous avons du configuré le service openiscsi pour qu'il soit activé au démarrage de la machine.
Et ensuite pour les autres services liés à longhorn et k3s il était simplement nécessaire d'installer les paquets
Puis il était nécessaire d'ajouter un troubleshoot pour longhorn pour qu'il puisse fonctionner correctement.
Ceci permet de créer un lien symbolique vers le binaire de longhorn pour qu'il puisse être utilisé par le service de K3S.
Et il était nécessaire d'ajouter des règles sysctl pour permettre le bon fonctionnement de k3s,longhorn, flannel, kube-proxy
Afin de facilité la communication intercluster
Et à la fin pour chaque noeud il était nécessaire de configurer le fichier k3s.nix pour chaque nœud kubernetes. Pour la jonction des noeuds entre eux.
Installation de Mariadb
Pour l'installation de Mariadb, nous avons utilisé le service myqsl de nixos avec le package Mariadb.
Voici la création du service Mariadb
Une fois cela fait nous devons créer la base de donnée. Ceci étant quelque chose de non reproductible nous avons décidé de le faire à la main.
Voici la commande de création de la base de donnée
Une fois tout configuré il suffit de tout appliquer avec colmena et de redémarrer les noeuds à la fin du build de la derivation pour appliquer les modifications kernel de boot.
Une fois les noeuds redémarrés, il suffit de faire un k get nodes pour vérifier que tout fonctionne correctement.
