Die Veröffentlichung der freien PaaS-Plattform Cozystack 0.17.0, die auf Kubernetes basiert, wurde veröffentlicht. Das Projekt zielt darauf ab, eine einsatzbereite Plattform für Hosting-Anbieter und ein Framework für die Erstellung privater und öffentlicher Clouds bereitzustellen. Die Plattform wird direkt auf Servern installiert und deckt alle Aspekte der Infrastrukturvorbereitung für die Bereitstellung von verwalteten Diensten 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 Apache-2.0-Lizenz veröffentlicht.
Der zugrunde liegende Technologie-Stack verwendet Talos Linux und Flux CD. Die Images mit dem System, dem Kernel und den erforderlichen Modulen werden im Voraus erstellt und atomar aktualisiert, was die Verwendung von Komponenten wie dkms und Paketmanagern überflüssig macht und eine stabile Funktionsweise gewährleistet. Eine einfache Installationsmethode in einem leeren Rechenzentrum wird mit PXE und dem debian-ähnlichen Installer talos-bootstrap bereitgestellt.
Die Plattform umfasst eine freie Implementierung der Netzwerkinfrastruktur (fabric) auf Kube-OVN-Basis und verwendet Cilium für die Organisation des Dienstnetzwerks sowie MetalLB für die Ankündigung von Diensten nach außen. Der Speicher ist auf LINSTOR implementiert, wobei ZFS als Basisschicht für den Speicher und DRBD für die Replikation verwendet wird. Es gibt einen vorkonfigurierten Überwachungsstack auf VictoriaMetrics- und Grafana-Basis. Zum Starten virtuelle Maschinen wird die Technologie KubeVirt verwendet, die es ermöglicht, klassische virtuelle Maschinen direkt in Kubernetes-Containern auszuführen und bereits alle erforderlichen Integrationen mit der Cluster-API für das Starten verwalteter Kubernetes-Cluster innerhalb eines "eisenernen" Kubernetes-Clusters hat.
In der neuen Version:
- Die Plattform bietet die Möglichkeit, virtuelle Maschinen mit mehreren Festplatten zu erstellen, von CD-ROM zu installieren und Festplatten zwischen verschiedenen virtuellen Maschinen zu wechseln. Die alte Anwendung „Virtual Machine“ wurde in zwei separate Anwendungen „vm-disk“ (Virtual Machine Disk) und „vm-instance“ (Virtual Machine Instance) unterteilt. Die vm-disk-Anwendung unterstützt das Laden von Images über HTTP oder lokale Speichergeräte, wobei beim Erstellen der Festplatte die Quelle und der Typ des Images – CD-ROM oder klassisch – angegeben werden können. Die vm-instance-Anwendung ermöglicht das Starten einer virtuellen Maschine aus den erstellten Festplatten. Die Möglichkeit, die alte Anwendung Virtual Machine zu verwenden, bleibt zur Kompatibilität erhalten.
- Die Optionen instanceType und instanceProfile wurden hinzugefügt, sowie ein Satz von Standardinstanzen und Profilen für Ubuntu, RHEL, Alpine und Windows. Es besteht die Möglichkeit, eine virtuelle Maschine mit optimalen Parametern je nach Betriebssystem einzurichten (z. B. TPM und virtio-Geräte zu aktivieren, Tablet-Pointer zu verwenden), und anstelle der Angabe von Ressourcen für die virtuelle Maschine können standardisierte Instanzen verwendet werden, die speziell für bestimmte Lasttypen vorgesehen sind. Die Instanztypen gelten auch für Kubernetes, was eine bessere Planung der Node-Gruppen ermöglicht.
- Im ingress wurde die Option zur Aktivierung der Proxy-Implementierung für den Download von Images von lokalen Maschinen hinzugefügt. Außerdem wurde CDI aktualisiert, um die Zusammenarbeit mit Blockgeräten zu verbessern. Die Möglichkeit, Images für LINSTOR über das Tool virtctl hochzuladen, wurde implementiert.
- Die Unterstützung für virtuelle Maschinen mit Windows wurde hinzugefügt. Mit den neuen vm-disk und vm-instance wurde die Installation von Windows 10 und Windows Server 2k15 aus ISO getestet, gefolgt von einem Wechsel zu den VirtIO-Treibern.
- Beim Bestellen von S3-Buckets wurde eine automatische Bereitstellung der Web-Oberfläche für den Zugriff auf diese implementiert. Über die Web-Oberfläche können Dateien hochgeladen und gelöscht sowie temporäre Links für den öffentlichen Zugriff generiert werden. Die Schnittstelle basiert auf s3manager, das unter der Apache 2.0-Lizenz vertrieben wird.

- Alerts für FluxCD wurden hinzugefügt, die den Status der Releases anzeigen. Die Alarme sind strukturiert und jetzt nach Kategorien unterteilt, zudem wird im Feld Resource nun die betroffene Ressource angezeigt.
- Es wurde die Möglichkeit geschaffen, Alarme über Telegram mit Deduplikation und Schaltflächen zur Steuerung des Lebenszyklus jedes Alarms zu senden.
- Im Cluster-API wurde der Controller MachineHealthChecks integriert, der den Status der Knoten im Kubernetes-Cluster überwacht. Bei Problemen werden die Knoten automatisch neu angefordert.
- Das externe DNS-Component wurde hinzugefügt, das die automatische Konfiguration von DNS-Einträgen in Cloudflare ermöglicht. Außerdem wurde die Möglichkeit zur Beantragung von Zertifikaten über die Cloudflare-API unter Verwendung der DNS-Methode implementiert.
- Der external-secrets-operator wurde hinzugefügt, der das Synchronisieren von Geheimnissen mit externen Systemen ermöglicht.
- Optionale Komponenten wurden eingeführt, die standardmäßig deaktiviert sind, aber über die Option bundle-enable in der Cozystack-Konfiguration aktiviert werden können.
- Die Jobs zur Initialisierung von PostgreSQL und FerretDB wurden verbessert, die nun warten, bis die Datenbank hochgefahren ist, bevor sie irgendwelche Konfigurationsänderungen vornehmen.
- Die Stabilität von Kube-OVN wurde erhöht. Die Kommunikation mit NetworkManager wurde deaktiviert. In einigen Systemen blockierte dieses Problem den Start der OVN-Controller.
- Das Logging für Clickhouse wurde hinzugefügt. Logs wurden in einen separaten Abschnitt verschoben und die Rotation wurde konfiguriert.
- Die Komponenten wurden aktualisiert: LINSTOR 1.29.1, Talos Linux 1.8.1 und Cilium 1.16.3.
Quelle: opennet.ru

