Veröffentlichung von Cozystack 0.22, einer offenen PaaS-Plattform auf Basis von Kubernetes

Die Veröffentlichung der freien PaaS-Plattform Cozystack 0.22.0, die auf Kubernetes basiert, ist verfügbar. Das Projekt zielt darauf ab, Hosting-Anbietern eine vollständig einsatzbereite Plattform sowie ein Framework für den Aufbau von privaten und öffentlichen Cloud-Umgebungen zu bieten. 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 Quellcode der Plattform ist auf GitHub verfügbar und wird unter der Lizenz Apache-2.0 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 wurden der cozystack-controller und neue Entitäten hinzugefügt: Workload und WorkloadMonitor — die es ermöglichen, den Zustand der von Operatoren verwalteten Pods zu überwachen und das Serviceniveau anhand vordefinierter Regeln zu bewerten. Anwendungen in Cozystack werden von verschiedenen Operatoren verwaltet, weshalb entschieden wurde, ein einheitliches Format zur Anzeige des Status jedes Dienstes zu schaffen.

So funktioniert es: Bei der Bereitstellung einer Anwendung wird auch der WorkloadMonitor installiert, der den Zustand der Pods nach einem Selektor überwacht. Sobald ein Pod in den Selektor fällt, wird eine neue Entität Workload erstellt, die die Rolle jedes Pods und dessen Zustand anzeigt. Im Status des WorkloadMonitors kann die Anzahl der vorhandenen Replikate und die minimale Anzahl der Replikate, die zur Bedienung des Dienstes erforderlich sind, gesehen werden. Sobald die Last (workload) kleiner ist als der Wert minReplicas für den WorkloadMonitor, wird der Dienst als nicht betriebsbereit (non-operational) markiert.

Für Anwendungen, bei denen kein exakter Wert für minReplicas festgelegt werden kann (z. B. können Kubernetes-Worker automatisch skaliert werden), wurde die Möglichkeit implementiert, diesen Wert im WorkloadMonitor vollständig wegzulassen. In diesem Fall zählt der WorkloadMonitor einfach die Gesamtanzahl der gestarteten Instanzen.

Mechanismen wie dieser ermöglichen die Verwendung beliebiger Operatoren und Verwaltungsmethoden für Pods in Kubernetes und erleichtern die Erweiterung der Plattform, indem sie eine einheitliche Schnittstelle zur Anzeige des aktuellen Status des Dienstes bereitstellen.

Der WorkloadMonitor zur Erfassung von Informationen über Replikate und deren Betriebsbereitschaft wurde in Anwendungen wie Kubernetes, Postgres, Monitoring, VirtualMachine, VMInstance, Redis, etcd und SeaweedFS hinzugefügt. Das Cozystack-Dashboard zeigt nun die Anzahl der Anwendungsreplikate und das Serviceniveau für jede Workload-Gruppe an.

Weitere Änderungen:

  • Der Client und Server für die Telemetrie wurde unter der Lizenz Apache 2.0 umgesetzt und veröffentlicht. Die Sammlung von Metriken für die Telemetrie erfolgt gemäß den Richtlinien "LF Telemetry Data Collection and Usage Policy" und kann mit der Option "telemetry-enabled: false" in der Cozystack-Konfiguration deaktiviert werden. Die Daten selbst sind anonymisiert und vollständig entpersonalisiert. Für die kommenden Plattformversionen ist geplant, ein öffentliches Dashboard auf Basis der Telemetriedaten zu erstellen.
  • Die Komponente cluster-autoscaller für Kubernetes sowie ihre Einstellungen wurden aktualisiert, die eine effizientere Skalierung der Cluster sowohl nach oben als auch nach unten ermöglichen.
  • Die MAINTAINERS-Datei wurde aktualisiert, in der die Teilnehmer aufgeführt sind, die das Projekt betreuen, sowie deren Verantwortungsbereiche.
  • In Cozystack wurde die Serviceanwendung builder hinzugefügt, die das Erstellen der Plattform direkt in Kubernetes ermöglicht.
  • Für die Datenbank VictoriaMetrics wurde die Möglichkeit hinzugefügt, eigene Parameter anzugeben, und die standardmäßig festgelegten Einschränkungen wurden erhöht.
  • Für Grafana und Alerta wurde die Sammlung von Metriken aus Datenbanken implementiert.
  • Benachrichtigungen über den Zustand virtueller Maschinen und Postgres-Cluster wurden hinzugefügt.
  • Für KubeVirt wurde die Metriksammlung konfiguriert und ein Grafana-Dashboard hinzugefügt.
  • In die Cozystack-Konfiguration wurde die Option extra-keycloak-redirect-uri-for-dashboard hinzugefügt, die zusätzliche Weiterleitungen für Keycloak ermöglicht.
  • In VMInstance wurde ein Fehler behoben, der die Verbindung von VMdisks mit virtuellen Maschinen blockierte.
  • Die Versionen Flux Operator 0.12.0, Flux Instance Chart 0.12.0, Cilium 1.16.5, Kube-OVN 1.13.2, CNPG PostgreSQL Operator 1.25.0 und Talos Linux 1.9.1 wurden aktualisiert.

Quelle: opennet.ru

60GB SSD 8Gb DDR4