La version 0.40 de la plateforme PaaS libre Cozystack, construite sur Kubernetes, est maintenant disponible. Le projet vise à fournir une plateforme prête à l'emploi pour les fournisseurs de services d'hébergement et un cadre pour la construction de clouds privés et publics. La plateforme s'installe directement sur les serveurs et couvre tous les aspects de la préparation de l'infrastructure pour la fourniture de services gérés. Cozystack permet de lancer et de fournir des clusters Kubernetes, des bases de données et des machines virtuelles. Le code de la plateforme est disponible sur GitHub et est distribué sous la licence Apache-2.0.
Le stack technologique de base utilise Talos Linux et Flux CD. Les images du système, du noyau et des modules nécessaires sont préparées à l'avance et mises à jour de manière atomique, ce qui permet d'éviter des composants comme dkms et les gestionnaires de paquets, garantissant ainsi une stabilité de fonctionnement. Une méthode d'installation simple est fournie dans un data center vide grâce à PXE et à l'installateur debian-like talos-bootstrap. Dans le cadre de la plateforme, il est possible de déployer en un clic des services tels que Kafka, FerretDB, PostgreSQL, Cilium, Grafana, Victoria Metrics et d'autres.
La plateforme inclut une implémentation libre de l'infrastructure réseau (fabric) basé sur Kube-OVN et utilise Cilium pour organiser le réseau de services, MetalLB pour l'annonce des services externes. Le stockage est réalisé sur LINSTOR, avec l'utilisation de ZFS comme couche de stockage de base et DRBD pour la réplication. Une stack de surveillance préconfigurée basée sur VictoriaMetrics et Grafana est fournie. Pour le déploiement de machines virtuelles, la technologie KubeVirt est utilisée, permettant d'exécuter des machines virtuelles classiques directement dans des conteneurs Kubernetes et ayant déjà toutes les intégrations nécessaires avec Cluster API pour le lancement de clusters Kubernetes gérés à l'intérieur d'un cluster Kubernetes 'bare-metal'.
Dans cette nouvelle version :
- Un planificateur LINSTOR a été ajouté pour un placement optimal des pods. Le 'scheduler extender' propre à Kubernetes fonctionne en conjonction avec le planificateur standard de Kubernetes et aide à placer de manière optimale les pods sur les nœuds avec le stockage LINSTOR. Lorsqu'un pod demande un volume LINSTOR, le planificateur se renseigne auprès du contrôleur LINSTOR pour savoir sur quels nœuds se trouvent les répliques locales des volumes requis. La priorité est donnée aux nœuds où les données sont déjà présentes, ce qui minimise le trafic réseau et améliore la performance I/O. De plus, un webhook d'admission a été implémenté, qui dirige automatiquement les pods utilisant les volumes CSI de LINSTOR vers son propre planificateur, garantissant une intégration transparente sans configuration manuelle.
- Stockage SeaweedFS SeaweedFS a été mis à jour vers la version 4.05, dans laquelle l'optimisation du trafic S3 (localité du trafic) a été réalisée : les requêtes sont désormais dirigées vers les serveurs les plus proches, réduisant ainsi les latences et accélérant le fonctionnement du stockage. Un nouveau composant d'administration avec interface web et support de l'autorisation a également été ajouté, ainsi que des workers pour l'exécution de tâches distribuées. Des tableaux de bord avancés ont été ajoutés à Grafana, permettant de surveiller les buckets, les appels API et les performances. Support ajouté des certificats TLS pour les composants admin et worker.
- Le mécanisme valuesFrom de FluxCD a remplacé les fonctions de recherche dans les charts Helm. Cette amélioration architecturale assure une transmission des paramètres plus propre et élimine la nécessité de contrôleurs de synchronisation forcée (reconciliation). La configuration à partir des ConfigMaps et des références aux services est désormais gérée de manière centralisée via la clé cozystack-values dans chaque espace de noms.
- Dans les composants pour l'intégration avec LINSTOR, la prise en charge de la fonction auto-diskful a été implémentée, transformant les nœuds sans disque (diskless) en nœuds avec disque (diskful) s'ils conservent des ressources DRBD dans l'état primaire pendant plus de 30 minutes.
- Des systèmes de gestion automatique des versions ont été intégrés pour PostgreSQL, Kubernetes, MariaDB et Redis, qui suivent les mises à jour dans les dépôts upstream et fournissent des mécanismes de mise à jour automatique des versions.
Source : opennet.ru
