La version libre de la plateforme PaaS Cozystack 0.33, construite sur Kubernetes, est désormais disponible. Le projet vise à fournir une plateforme prête à l'emploi pour les hébergeurs et un cadre pour la création de clouds privés et publics. La plateforme s'installe directement sur des 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é 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'.
Au cours des six dernières semaines, l'équipe du projet a publié les nouvelles versions 0.31, 0.32 et 0.33. Parmi les changements dans ces versions :
- La gestion de l'allocation des ressources CPU et mémoire a été unifiée. Des variables de configuration communes cpu-allocation-ratio et memory-allocation-ratio ont été ajoutées pour limiter les ressources CPU et la consommation de mémoire dans les machines virtuelles gérées par KubeVirt. Ces variables s'appliquent à toutes les applications gérées et aux quotas de ressources des tenants. Les préconfigurations prennent également en compte les coefficients d'allocation des ressources et se comportent de la même manière que les définitions explicites des ressources. Lors de la mise à jour depuis des versions antérieures de Cozystack, la configuration des ressources dans les applications gérées est automatiquement convertie au nouveau format.
- Une fonction de sauvegarde PVC a été ajoutée dans les clusters Kubernetes des tenants, permettant aux administrateurs, tant pour l'ensemble de la plateforme que pour des tenants spécifiques, de créer des sauvegardes et de restaurer les données des services en cours d'exécution dans les clusters. Pour la sauvegarde, le projet Velero est utilisé, et le système nécessite un stockage externe compatible S3.
- La prise en charge de l'utilisation de stockages NFS partagés a été mise en œuvre avec un nouveau module système optionnel.
- Une option permettant de configurer les sockets CPU disponibles pour les machines virtuelles a été ajoutée via le paramètre resources.cpu.sockets, ce qui permet d'assigner des sockets spécifiques aux machines virtuelles.
- La prise en charge de l'utilisation d'images golden préchargées pour les machines virtuelles a été ajoutée, accélérant la préparation grâce à des références vers des images existantes au lieu de les télécharger via HTTP.
- L'option exposeMethod pour Ingress-NGINX a été mise en œuvre dans les clusters des tenants, ce qui permet de choisir entre Proxied et LoadBalancer.
- Amélioration de la prise en charge des applications Java : les paramètres « heap » sont désormais calculés sur la base des demandes et des limites de mémoire.
- Le gestionnaire de paquets standard a été remplacé : au lieu de Helm, une nouvelle utilité cozypkg est maintenant utilisée (une couche autour de Helm et Flux pour le développement local).
- Un synchroniseur HelmRelease a été ajouté pour les composants système, garantissant un contrôle automatique des modifications clés de la configuration pour une mise à jour opportunes des applications système.
- Ajout de la prise en charge des registres miroirs dans les clusters Kubernetes pour les tenants, configurant containerd pour les clusters des tenants.
- Mise en œuvre d'une étiquetage unifiée pour les objets enfants des applications pour le suivi via WorkloadMonitors.
- Ajout d'une option cluster-domain pour redéfinir le domaine cozy.local.
- Ajout de règles RBAC pour le passage de ports dans KubeVirt (SSH via virtctl).
- Collecte des événements et des journaux d'audit activée.
- Sauvegarde/récupération de PostgreSQL mise en œuvre.
- Un nouvel outil cozyreport a été ajouté et la collecte de rapports dans CI a été assurée. Maintenant, toutes les informations de diagnostic sont conservées sous forme d'artefacts de construction.
- Mise à jour des composants : cozykpg v1.1.0, flux-opérateur 0.23.0, Flux 2.6.x, Talos Linux v1.10.3, Cilium 1.17.4, MetalLB 0.15.2, Kube-OVN 1.13.13, cozy-proxy 0.2.0, Kafka Operator 0.45.1-rc1.
- Possibilité d'installer Talos dans des environnements Air Gap.
- Prise en charge des GPU pour les clusters Kubernetes des tenants. Les utilisateurs de la plateforme peuvent exécuter des charges de travail GPU à la fois sur des machines virtuelles et dans des clusters Kubernetes.
- Prise en charge bêta de l'architecture ARM (construction multi-architecture). Le système de construction a été révisé pour soutenir les fichiers binaires et les images de conteneurs multi-architectures.
- VerticalPodAutoscaler (VPA) élargi, qui est inclus pour un plus grand nombre de composants Cozystack et permet l'ajustement automatique des ressources. En particulier, le VPA a été ajouté pour les clusters tenant du control plane. le panneau de contrôle Cozystack et etcd-operator. Tous les composants Cozystack avec VPA activé peuvent ajuster automatiquement leurs demandes de CPU et de mémoire en fonction de leur utilisation, améliorant ainsi la stabilité.
- Prise en charge de l'API Gateway dans Cilium, permettant d'utiliser des fonctions avancées de routage L4/L7 via l'API Gateway de Kubernetes.
- Possibilité d'ajouter des paramètres personnalisés dans les configurations Cilium pour les clusters des tenants.
- Le contrôleur Tenant HelmRelease Reconcile garantit que les modifications de configuration sont propagées aux charges de travail des tenants (assurant que tout HelmRelease défini dans un tenant est synchronisé avec les mises à jour de la plateforme).
- Ajout de la possibilité de configurer le coefficient d'allocation CPU dans KubeVirt (comment les CPU virtuels se rapportent aux CPU physiques) via la valeur cpu-allocation-ratio dans le configmap. Les administrateurs peuvent configurer l'overcommit CPU pour les machines virtuelles, en respectant l'équilibre nécessaire entre performance et densité.
- Exportation des machines virtuelles KubeVirt réalisée. La fonctionnalité fonctionne via VirtualMachineExport dans KubeVirt et permet aux utilisateurs de créer des snapshots ou des sauvegardes des images des machines virtuelles.
- Prise en charge de différentes classes de stockage pour les machines virtuelles. L'application virtual-machine permet de choisir n'importe quel StorageClass pour le disque système de la machine virtuelle au lieu d'utiliser un PVC prédéfini (voir les valeurs systemDisk.storage et systemDisk.storageClass dans la configuration de l'application).
Source : opennet.ru
