holzcloud
Menü
holzkube-manager: ein Würfel mit Jahrringen auf einem Holzbrett, daneben der Name, „Self-hosted management for Talos Linux and Kubernetes. One binary, running beside your cluster.“ und die Stichworte Alpha, Talos Linux, Kubernetes, Single binary, arm64

Alpha

linux arm64

AGPL-3.0

Talos-Cluster verwalten, von der leeren Maschine bis zum Upgrade. Läuft neben dem Cluster, nicht darin.

Dashboard von holzkube-manager: links die beschriftete Navigationsliste, oben drei Karten mit je einer grossen Zahl — 2 Cluster, 7 Maschinen, Instanz bereit —, darunter die Maschinen mit Zustand, Rolle, Adresse und Talos-Version, daneben die Cluster produktion und staging mit je einem Hinweis «Talos v1.14.2 available» und die letzten Audit-Einträge
holzkube-manager auf dem Handy: das Dashboard mit den drei Karten Clusters, Machines und Instance in einer Reihe, darunter die Maschinenliste, und unten die Tab-Leiste mit Dashboard, Clusters, Host, Jobs und Settings

Neben dem Cluster

Bleibt erreichbar, auch wenn der Cluster down ist.

Direkt über Talos

Spricht die Maschinen-API an. Kein Agent, kein talosctl.

Blech bis Node

Maschinen finden, prüfen, konfigurieren, aufnehmen.

Sichere Upgrades

Node für Node, mit Plan, frischem etcd-Snapshot und Health-Gate.

Alpha 0.8.0: holzkube-manager ist am Anfang und ändert sich stark. Funktionen, Einstellungen und Datenformate können sich mit jedem Release ändern. Vor einem Update sichern und die Release-Notes lesen.

holzkube-manager verwaltet Kubernetes-Cluster auf Talos Linux. Ein Go-Binary läuft ausserhalb des Clusters und redet direkt mit der Talos-Maschinen-API. Es braucht keinen Agent im Cluster und keinen Cloud-Dienst. Gedacht als selbst gehostete Alternative zu Sidero Omni, unter AGPL-3.0 statt BUSL-1.1.

Wer einen Cluster wieder hochbringen muss, kann kein Werkzeug brauchen, das selbst im Cluster läuft. Darum ein Binary, ein Datenverzeichnis, HTTPS ab dem ersten Start, zum Beispiel auf einem Raspberry Pi 5 neben dem Cluster. Die Oberfläche funktioniert vom Grossbildschirm bis zum Handy.

Version 0.8.0 — Release auf GitHub. Läuft gegen einen echten Talos-Cluster, gebaut wird nur für linux/arm64 (Raspberry Pi 5). Die Zertifikatsüberwachung im Cluster ist bisher nur am Simulator getestet; Live-Sensoren, Wake-on-LAN und erzwungene Talos-Aktionen auf echter Hardware noch nicht. Die Konfigurationsabweichung ist noch nie gegen einen echten Talos-Cluster gelaufen: dass Talos die Konfiguration nie selbst umschreibt, dass ein Node nach einem Apply zurückgibt, was gesendet wurde, die Zeit nach einem Neustart und das Banner nach echten Stunden sind ungeprüft. Ein geänderter Secret-Wert allein bleibt unsichtbar.

Funktionen

Provisionierungs-Assistent mit Auswahl von Cluster, Rolle, Talos-Version, Installationsdisk und Festplattenverschlüsselung

Von der leeren Maschine zum Node

Ein Assistent findet Maschinen, die vom Talos-ISO gebootet haben, prüft den Zertifikats-Fingerabdruck und schreibt die Konfiguration. Installationsdisk, Hostname und TPM-Verschlüsselung wählt man vorher.

Karte mit sieben gesunden Talos-Nodes der Cluster produktion und staging und darunter zwei Maschinenklassen, die über Labels definiert sind

Inventar und Nodes

Jede Maschine mit Zustand, Rolle, Adresse und Versionen, auch wenn sie gerade nicht antwortet. Neustart, Reset oder Entfernen verlangen eine erneute Bestätigung. Ein Node wird als Job entfernt: raus aus etcd, Systemdisk wischen, vergessen. Der Job läuft nach einem Neustart weiter.

Kubernetes-Übersicht mit vier Nodes, Schaltflächen für Cordon und Drain sowie Balken zur Auslastung

Kubernetes im Blick

Zehn Ansichten von Workloads bis Events. Nodes lassen sich cordonen und drainen, Deployments skalieren oder neu ausrollen, und bei einem kaputten Pod steht das Log des abgestürzten Laufs gleich dabei.

Upgrades-Ansicht: oben der Talos-Update-Check mit dem Hinweis «Talos v1.14.2 is available», darunter der Plan für Kubernetes v1.35.0 mit bestandenem Health-Gate

Upgrades mit Sicherheitsgurt

Talos und Kubernetes werden Node für Node aktualisiert. Zuerst zeigt ein Plan jeden Schritt. Ein Talos-Upgrade startet nur mit einem frischen etcd-Snapshot, und vor jedem Node prüft ein Health-Gate das etcd-Quorum. Bei mehreren Minor-Sprüngen nennt der Plan für jede Zwischenversion den neuesten Patch.

Das Panel «Backups» der Upgrades-Ansicht: Zeitplan täglich, Anzahl aufzubewahrender Snapshots, Schaltfläche «Run now» und eine Liste der Snapshots mit Zeitpunkt, Art, Grösse, SHA-256 und Download

etcd-Backups nach Zeitplan

Alle 6 Stunden, täglich oder wöchentlich, mit wählbarer Anzahl aufbewahrter Snapshots. Die Liste zeigt Grösse und SHA-256. Ist das letzte Backup älter als zwei Intervalle, gilt der Cluster als überfällig. Die Backups liegen auf dem Gerät selbst und überstehen den Verlust der SD-Karte nicht, die wichtigen also anderswohin kopieren.

Zwei Clusterkarten mit Node-Zustand, einer Zeile zu den etcd-Backups, Restlaufzeit des Client-Zertifikats, einer Zeile «Cluster certificates» mit Zertifikaten und dem nächsten Ablauf, einer Zeile «Configuration» mit dem Abgleich der Node-Konfiguration, Download-Links und Schaltflächen für Sperre und Zertifikatsrotation

Zertifikate

Die Clusterkarte zeigt die Restlaufzeit des Client-Zertifikats und, unter „Cluster certificates“, die der Zertifikate im Cluster (Talos-API, etcd, Kubernetes und ihre CAs), gelesen von jedem Control-Plane-Node und nach Ablauf sortiert. Wird eines knapp, erscheint ein Banner auf jeder Seite, eine Zeile auf der Wandanzeige und ein Wert in /metrics. Das Client-Zertifikat lässt sich erneuern, die Talos-CA als fortsetzbarer Job rotieren. talosconfig, kubeconfig und Support-Bundle sind herunterladbar, jeder Download kommt ins Audit-Log.

Konfigurationsabweichung

Die aktive Konfiguration jedes Nodes wird alle 3 Stunden gelesen und mit dem verglichen, was holzkube-manager zuletzt wusste oder selbst gesetzt hat. Als Baseline dient eine Kopie mit geschwärzten Secrets. Eine Änderung direkt am Node (talosctl, ein anderer Operator) erscheint mit ihrem Diff auf der Node-Seite, als Zeile «Configuration» auf der Clusterkarte und in /metrics, und als Banner, sobald sie 24 Stunden unbestätigt steht. «Confirm as intended» macht den neuen Stand zur Baseline, braucht die Admin-Rolle und die Passwortabfrage, kommt ins Audit-Log und ändert nichts am Node. Eigene Änderungen (Patch, Kubernetes-Upgrade, CA-Rotation) gelten nicht als Abweichung. Das Datenverzeichnis wechselt dafür auf Schema 7; eine zurückgerollte ältere Version lehnt es ab, der Guide nennt den Weg zurück.

Wandanzeige mit vier grünen Nodes, farbigen Namespace-Kacheln und einer grossen orangen Kachel für einen Workload, der Aufmerksamkeit braucht

Wandanzeige

Eine Vollbildansicht für den Bildschirm im Büro. Jeder Node und jeder Namespace ist eine Kachel, was nicht läuft, erscheint gross und farbig. Ein widerrufbarer Nur-Lese-Link hält sie offen.

Ausserdem: bestehende Cluster per talosconfig übernehmen (schreibgeschützt, bis man sie freigibt), MachineConfig patchen mit Diff, Diagnose für verwaiste Volumes und tote RBAC-Bindings, Host-Ansicht des Pi mit Temperaturen und Dateisystemen, Audit-Log als Hash-Kette, Rollen und OIDC-Anmeldung, die CLI holzkubectl und /metrics für Prometheus. Das Update-Skript prüft die Prüfsumme und rollt automatisch zurück, wenn der Health-Check scheitert.

Installation

Das Archiv linux_arm64 aus dem Release laden. Es gibt nur diese Architektur. Wo holzkube-manager schon läuft, genügt sudo holzkube-manager-update. Alles Weitere steht im Guide.

Weitere Projekte

holzcloud-CMS, das CMS ohne JavaScript, holzBar, der Menüleisten-Manager für macOS, und holzWave, das Terminal in Rust. Zur Startseite.