La version libre de la plateforme PaaS Cozystack 0.37, construite sur Kubernetes, est désormais disponible. Le projet vise à fournir une plateforme prête à l'emploi pour les fournisseurs d'hébergement et un cadre pour construire des clouds publics et privés. La plateforme est installée directement sur les serveurs et couvre tous les aspects de la préparation de l'infrastructure pour offrir des 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ée sur Kube-OVN, et utilise Cilium pour organiser le réseau de services, MetalLB pour l'annonce des services à l'extérieur. Le stockage est implémenté sur LINSTOR, où l'utilisation de ZFS est proposée comme couche de base pour le stockage et DRBD pour la réplication. Un stack de surveillance pré-configuré basé sur VictoriaMetrics et Grafana est disponible. Pour le lancement machines virtuelles la technologie KubeVirt est utilisée, ce qui permet de lancer des machines virtuelles classiques directement dans des conteneurs Kubernetes et possède déjà toutes les intégrations nécessaires avec l'API Cluster pour exécuter des clusters Kubernetes gérés à l'intérieur d'un cluster Kubernetes 'matériel'.
Au cours des derniers mois et demi, l'équipe du projet a publié les nouvelles versions 0.36 et 0.37. Parmi les changements apportés dans ces versions :
- L'interface utilisateur a été complètement réécrite. Le projet openapi-ui a été utilisé comme base.

- Un sélecteur de cluster a été ajouté à l'interface. Actuellement, le tableau de bord fonctionne en mode mono-cluster (un tableau de bord par cluster). À l'avenir, cette même interface sera utilisée pour le mode multi-cluster.
- L'écran du cluster affiche désormais tous les espaces disponibles en un instant. La liste est formée à travers la couche d'agrégation Kubernetes (tenant namespace), donc seuls les espaces auxquels l'accès est accordé sont affichés.
- La création de ressources se fait désormais via des formulaires générés automatiquement à partir de Kubernetes OpenAPI. Les commentaires en YAML ne sont pas nécessaires : les champs et la validation sont directement tirés des spécifications.
- La spécification des nouvelles applications est formée à partir des Helm charts avec l'aide du générateur cozy-values, et les champs saisis dans le formulaire sont reflétés de manière synchrone dans le YAML final.
- Les modules de gestion des tenants ont été déplacés dans la section d'administration : ici, il est possible de créer des sous-tenants et d'installer pour eux des modules/applications spécifiques (l'accès dépend du rôle et des droits de l'utilisateur).
- L'ajout d'un onglet avec une console VNC pour les machines virtuelles est prévu. Des onglets/champs spéciaux seront ajoutés pour certains types de ressources (par exemple, pour les VM KubeVirt).
- Le mécanisme de gestion des ressources pour les tenants Cozystack a été stabilisé. Les administrateurs de la plateforme peuvent désormais définir des limites explicites de CPU, de mémoire et de stockage pour chaque tenant-namespace dans la spécification du tenant. Ainsi, aucun des tenants ne peut "manger" toutes les ressources, laissant d'autres tenants sans ressources.
- Le composant Kube-OVN Plunger a été ajouté pour le suivi continu de l'état du cluster central de gestion du réseau Kube-OVN. Un agent externe collecte l'état du cluster OVN et les informations de consensus, affiche les métriques Prometheus et le flux d'événements via SSE (Server-Sent Events).
- L'extension CoreDNS est désormais déployée via un chart Helm et configurée dans la spécification du cluster (mise à l'échelle automatique, nombre de répliques, IP de service, etc.). CoreDNS peut être configuré à la fois dans le tableau de bord et via l'API Cozystack.
- Le stockage S3 basé sur SeaweedFS est devenu plus flexible au niveau des composants. Le chart Helm permet de configurer indépendamment chaque composant et ses ressources : nœuds master, serveurs de volume (avec prise en charge de plusieurs zones), base de données et passerelle S3. Les administrateurs peuvent définir pour chaque composant le nombre de répliques, les limites CPU/mémoire et la capacité de stockage.
- L'intégration de la FS SeaweedFS 3.97 prend en charge le chiffrement côté serveur des buckets S3 (SSE-C, SSE-KMS, SSE-S3). Lors de la mise à jour de Cozystack, la version de SeaweedFS sera mise à jour, et la spécification des services sera automatiquement convertie au nouveau format.
- Le contrôleur NGINX est désormais configurable au niveau de chaque réplique : il est possible de définir directement les requêtes/liens CPU et mémoire ou de choisir l'un des préréglages disponibles.
- Si une adresse IP externe est attribuée à la machine virtuelle, elle est toujours utilisée pour le trafic sortant, quel que soit le mode d'attribution de cette adresse IP.
Source : opennet.ru

