Die Veröffentlichung der kostenlosen PaaS-Plattform Cozystack 0.33, die auf Kubernetes basiert, ist verfügbar. Das Projekt zielt darauf ab, eine einsatzbereite Plattform für Hosting-Anbieter und einen Rahmen zur Entwicklung privater und öffentlicher Clouds bereitzustellen. Die Plattform wird direkt auf Servern installiert und deckt alle Aspekte der Infrastrukturvorbereitung für die Bereitstellung verwalteter Dienste ab. Cozystack ermöglicht das Starten und Bereitstellen von Kubernetes-Clustern, Datenbanken und virtuellen Maschinen. Der Code der Plattform ist auf GitHub verfügbar und wird unter der Lizenz Apache-2.0 vertrieben.
Als Basistechnologiestack wird Talos Linux und Flux CD verwendet. Die Images mit dem System, dem Kernel und den erforderlichen Modulen werden im Voraus erstellt und werden atomar aktualisiert, was es ermöglicht, auf Komponenten wie dkms und Paketmanager zu verzichten und eine stabile Funktionalität zu gewährleisten. Es wird eine einfache Installationsmethode in einem leeren Rechenzentrum durch PXE und den debian-ähnlichen Installer talos-bootstrap bereitgestellt. Im Rahmen der Plattform können per Klick Kafka, FerretDB, PostgreSQL, Cilium, Grafana, Victoria Metrics und andere Dienste bereitgestellt werden.
Die Plattform umfasst eine freie Implementierung der Netzwerkinfrastruktur (fabric) basierend auf Kube-OVN und verwendet Cilium zur Organisation des Servicenetzwerks und MetalLB für die öffentliche Ankündigung von Diensten. Der Speicher wird auf LINSTOR realisiert, wobei die Verwendung von ZFS als Basisschicht für den Speicher und DRBD für die Replikation angeboten wird. Ein vordefinierter Monitoring-Stack auf Basis von VictoriaMetrics und Grafana ist vorhanden. Zur Ausführung virtueller Maschinen wird die Technologie KubeVirt verwendet, die es ermöglicht, klassische virtuelle Maschinen direkt in Kubernetes-Containern zu betreiben und bereits alle notwendigen Integrationen mit Cluster API für die Ausführung verwalteter Kubernetes-Cluster innerhalb eines „physischen“ Kubernetes-Clusters zu haben.
In den letzten anderthalb Monaten hat das Projektteam neue Versionen 0.31, 0.32 und 0.33 herausgebracht. Zu den Änderungen in diesen Veröffentlichungen gehören:
- Die Verwaltung der Zuweisung von CPU- und Speicherressourcen wurde vereinheitlicht. Es wurden einheitliche Konfigurationsvariablen cpu-allocation-ratio und memory-allocation-ratio hinzugefügt, um die CPU-Ressourcen und den Speicherverbrauch in virtuellen Maschinen, die von KubeVirt verwaltet werden, zu begrenzen. Diese Variablen gelten für alle verwalteten Anwendungen und die Ressourcenquoten der Mandanten. Die Voreinstellungen berücksichtigen ebenfalls die Ressourcenallokationsraten und verhalten sich wie explizite Ressourcendefinitionen. Bei einem Upgrade von früheren Cozystack-Versionen wird die Ressourcenanpassung in verwalteten Anwendungen automatisch in das neue Format konvertiert.
- Eine Funktion zur Sicherung von PVCs in mandantenbasierten Kubernetes-Cluster wurde hinzugefügt, die Administratoren der gesamten Plattform sowie einzelner Mandanten ermöglicht, Sicherungen zu erstellen und Daten von in den Clustern laufenden Diensten wiederherzustellen. Für die Sicherung wird das Velero-Projekt verwendet, und das System erfordert einen externen S3-kompatiblen Speicher.
- Die Unterstützung für die Nutzung gemeinsamer NFS-Speicher mit einem neuen optionalen Systemmodul wurde implementiert.
- Die Möglichkeit zur Konfiguration von verfügbaren CPU-Sockeln für virtuelle Maschinen über den Parameter resources.cpu.sockets wurde hinzugefügt, was es ermöglicht, bestimmten virtuellen Maschinen spezifische Sockel zuzuweisen.
- Die Unterstützung für vorab geladene Golden-Images für virtuelle Maschinen wurde hinzugefügt, was die Vorbereitung durch Verlinkungen zu bestehenden Images anstelle von HTTP-Downloads beschleunigt.
- Eine Option exposeMethod für Ingress-NGINX in mandantenbasierten Clustern wurde implementiert, die die Auswahl von Proxied und LoadBalancer ermöglicht.
- Verbesserte Unterstützung für Java-Anwendungen: Die Parameter 'Heap' werden jetzt basierend auf Anforderungen und Speicherlimits berechnet.
- Der Standard-Paketmanager wurde ersetzt – anstelle von Helm wird jetzt das neue Tool cozypkg (eine Wrapper-Lösung um Helm und Flux für die lokale Entwicklung) verwendet.
- Ein Synchronisierer HelmRelease für Systemkomponenten wurde hinzugefügt, der eine automatische Überwachung wesentlicher Konfigurationsänderungen für eine zeitgerechte Aktualisierung von Systemanwendungen gewährleistet.
- Die Unterstützung für ein Registry-Mirror in mandantenbasierten Kubernetes-Clustern wurde hinzugefügt, das containerd für mandantenbasierte Cluster konfiguriert.
- Eine einheitliche Markierung von Unterobjekten von Anwendungen zur Überwachung über WorkloadMonitors wurde implementiert.
- Die Option cluster-domain wurde hinzugefügt, um die Domain cozy.local zu überschreiben.
- RBAC-Regeln für Portweiterleitung in KubeVirt (SSH über virtctl) hinzugefügt.
- Ereignissammlung und Audit-Logs aktiviert.
- Backup/Wiederherstellung für PostgreSQL implementiert.
- Neues Tool cozyreport hinzugefügt und Berichterstattung in CI ermöglicht. Jetzt werden alle Diagnosedaten als Build-Artefakte gespeichert.
- Komponenten aktualisiert: cozykpg v1.1.0, flux-operator 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.
- Möglichkeit zur Installation von Talos in Air Gap-Umgebungen bereitgestellt.
- GPU-Unterstützung für tenant-basierte Kubernetes-Cluster hinzugefügt. Plattformbenutzer können GPU-Workloads sowohl in virtuellen Maschinen als auch in Kubernetes-Clustern ausführen.
- Beta-Unterstützung für ARM-Architektur bereitgestellt (cross-architekturaler Build). Das Build-System wurde überarbeitet, um Multi-Architektur-Binärdateien und Container-Images zu unterstützen.
- VerticalPodAutoscaler (VPA) erweitert, der für mehr Cozystack-Komponenten aktiviert ist und automatische Ressourcenskalierung ermöglicht. Insbesondere wurde VPA für Control Plane tenant-basierte Cluster hinzugefügt, dem Verwaltungs-Panel Cozystack und etcd-operator. Alle Cozystack-Komponenten mit aktiviertem VPA können ihre CPU- und Speicheranforderungen basierend auf ihrer Nutzung automatisch anpassen, was die Stabilität erhöht.
- Unterstützung für das Gateway API in Cilium hinzugefügt, das erweiterte L4/L7 Routing-Funktionen über das Kubernetes Gateway API ermöglicht.
- Möglichkeit zur Hinzufügung benutzerdefinierter Parameter in Cilium-Konfigurationen für tenant-basierte Cluster bereitgestellt.
- Im Controller Tenant HelmRelease Reconcile wird sichergestellt, dass Konfigurationsänderungen auf die Arbeitslasten der Tenants verbreitet werden (garantiert, dass jeder im Tenant definierte HelmRelease mit den Plattformupdates synchronisiert ist).
- Möglichkeit zur Konfiguration des CPU-Zuweisungsverhältnisses in KubeVirt hinzugefügt (wie virtuelle CPUs zu physischen CPUs in Beziehung stehen) über den Wert cpu-allocation-ratio in der configmap. Administratoren können CPU-Overcommit für virtuelle Maschinen anpassen, um das erforderliche Gleichgewicht zwischen Leistung und Dichte zu wahren.
- Export von KubeVirt-Virtualmaschinen implementiert. Die Funktion funktioniert über VirtualMachineExport in KubeVirt und ermöglicht es Benutzern, Snapshots oder Backups von virtuellen Maschinen-Images zu erstellen.
- Es wird Unterstützung für verschiedene Speicherkategorien (storage classes) für virtuelle Maschinen geboten. Die Anwendung virtual-machine ermöglicht die Auswahl jeder StorageClass für die Systemdisk der virtuellen Maschine anstelle der Verwendung eines festgelegten PVC (siehe Werte systemDisk.storage und systemDisk.storageClass in der Konfiguration der Anwendung).
Quelle: opennet.ru
