Warum isolierte Cluster für Agenten
PaaSbox ist auf einer Idee über Agenten und DevOps gebaut: Eine Änderung wird in einem Cluster getestet, den es nur für den Test gibt, und jede Stage jeder App läuft auf einem eigenen kleinen Cluster. Diese Seite erklärt, warum, was das kostet und wogegen es nicht schützt.
| Ein großer, geteilter Cluster | Kleine Cluster, einer pro Stage, App und Test | |
|---|---|---|
| Ein Upgrade, das fehlschlägt | trifft jede Stage und App darauf | trifft eine Stage einer App |
| Ein Test, der entgleist | konkurriert mit der Produktion um dieselben Nodes | hat einen Server für sich und wird gelöscht |
| Eine clusterweite Änderung (eine CRD, ein Operator, ein Standardwert) | gilt sofort für alle | gilt für einen Cluster |
| Kubeconfigs und API-Bereiche | die eines Clusters, aufgeteilt über Namespaces und RBAC | die eigenen jedes Clusters |
| Zeitpunkt der Upgrades | ein Fenster für alle | ein Kanal und ein Fenster pro Cluster |
| Ein Server, der ausfällt | die anderen Server machen weiter | dieser Cluster ist weg, bis er wiederhergestellt oder neu aufgebaut ist |
| Upgrades, die einzuplanen sind | ein Cluster | einer pro Cluster |
Testen in einem Cluster, der für den Test gebaut ist
Abschnitt betitelt „Testen in einem Cluster, der für den Test gebaut ist“Die Änderung eines Agenten kann auf eine Weise falsch sein, die ein Test in einem geteilten Cluster nicht einfangen kann: eine CRD, die durch eine ältere Version ersetzt wird, ein Webhook, der jeden Pod ablehnt, ein Job, der die Platte füllt. In einem Cluster, der für den Test gebaut ist, macht ein solcher Fehler nur diesen Cluster kaputt, und der Cluster wird danach gelöscht.
Ein neuer Cluster beginnt außerdem mit nichts als deinen Dateien. Kommt die App dort hoch, sind die Dateien vollständig; braucht sie etwas, das anderswo von Hand eingerichtet wurde, zeigt es der Test.
Das funktioniert nur, wenn ein Cluster wenig Zeit kostet. Im Labor vom 2026-10-10 war ein Cluster 2 Minuten 46 Sekunden nach der Anfrage bereit, 69 Sekunden davon für das Kopieren des Node-Images in ein Projekt, das noch keines hatte, und ein Löschen dauerte 14 Sekunden, seine Volumes eingeschlossen, ohne dass eine Ressource mit seinem Label im Projekt blieb. In Arbeit Die REST-API und die MCP-Tools, mit denen ein Agent diese Schleife selbst fährt, sind gegen einen echten Cluster noch nicht gelaufen. Lernschritt 3 geht sie durch.
Ein kleiner Cluster pro Stage und pro App
Abschnitt betitelt „Ein kleiner Cluster pro Stage und pro App“Eine Stage einer App bekommt einen Cluster mit einem Node für sich: eigenen Server, eigenes privates Netz, eigene Firewall, eigenen Namen der Kubernetes-API, eigene Kubeconfigs und Snapshots. Daraus folgen drei Dinge.
- Ein Fehler bleibt klein. Ein Upgrade, eine Wiederherstellung oder ein entgleister Test trifft eine Stage einer App. Eine Wiederherstellung an Ort und Stelle setzt einen Cluster auf seinen Snapshot zurück, im Labor in 160 Sekunden, und kein anderer Cluster ist Teil der Operation.
- Staging geht voran. Jeder Cluster hat seinen eigenen Kanal und sein eigenes Wartungsfenster. Staging kann jedes Release auf early bekommen und geprüft werden, während die Produktion auf stable auf ihr eigenes Fenster wartet.
- Der Zugriff folgt der Stage. Eine Kubeconfig für Staging öffnet Staging. Die API der Produktion kann für weniger Adressen offen sein als die eines Testclusters.
Kubernetes macht diese Umgebungen wiederholbar: eine App mit ihrer Datenbank, ihren Zertifikaten und ihrer Konfiguration, jedes Mal aus denselben Dateien angelegt. Geplant ownpaas soll dieselben Umgebungen in ein lokales Labor auf deinem eigenen Rechner bringen, bevor ein Hetzner-Server beteiligt ist.
Was es kostet
Abschnitt betitelt „Was es kostet“- Geld. Jeder Cluster kostet 29 € inkl. MwSt. im Monat, dazu seinen Server bei Hetzner. Ein Cluster zählt ab dem Moment, in dem er zum ersten Mal bereit ist, bis du ihn löschst. In Arbeit Die Abrechnung über Paddle wird gerade gebaut; so wie sie geschrieben ist, wird ein Cluster, der zu anderen dazukommt, sofort anteilig berechnet, und einer, der wegfällt, für den Rest des Zeitraums gutgeschrieben: Ein Wegwerf-Cluster neben einem Cluster, den du behältst, kostet seinen Anteil am Monat. Der letzte Cluster eines Teams wird nicht gutgeschrieben: Das Abonnement läuft bis zum Ende des schon bezahlten Zeitraums, und ein Cluster, den du vorher anlegst, nutzt es ohne neue Berechnung. Nach diesem Ende startet der nächste Cluster des Teams ein neues Abonnement im Checkout des Portals, und das kann ein Agent über die API nicht. Den Server rechnet Hetzner stundenweise ab, zu seinem eigenen Preis. Kosten und Abrechnung hat die Einzelheiten.
- Eine Grenze. Ein Team kann 10 Cluster gleichzeitig haben, und Staging, Produktion und jeder laufende Test zählen dazu: Zwei Apps mit Staging und Produktion lassen sechs für Tests. Frag nach einer höheren Grenze, wenn deine Tests sie brauchen.
- Upgrades, auf die du achten musst. Jeder Cluster bekommt jedes Release, und jedes Upgrade startet seinen Node neu: Im Labor war die Kubernetes-API 34 Sekunden lang nicht erreichbar. Mit einem Cluster pro Stage und App gibt es mehr Upgrades einzuplanen und zu prüfen. Das Rezept Ein Agent upgradet zuerst Staging gibt das an einen Agenten ab.
Wogegen es nicht schützt
Abschnitt betitelt „Wogegen es nicht schützt“- Einen ausfallenden Server. Ein Cluster ist ein Server. Fällt er aus, ist die Stage darauf weg, bis der Server zurück ist, ein Snapshot wiederhergestellt oder ein neuer Cluster aufgebaut ist. Es gibt kein SLA, und Cluster mit drei Servern sind Geplant.
- Einen Schlüssel, der zu weit reicht. Die Scopes eines API-Schlüssels gelten für jeden Cluster des Teams: Ein Schlüssel, der einen Testcluster löschen darf, darf auch die Produktion löschen. Der eingetippte Clustername verhindert eine Verwechslung, keine Entscheidung. Halte die Produktion in einem Team, zu dem der Schlüssel nicht gehört. Leitplanken für Agenten listet, was jede Grenze aufhält.
- Ein geteiltes Hetzner-Projekt. Der Cloud Controller in einem Cluster hält ein Hetzner-Token, und ein Hetzner-Token öffnet sein ganzes Projekt. Cluster in einem Projekt sind in Kubernetes getrennt, nicht bei Hetzner: Gib der Produktion ein eigenes Projekt und den Testclustern ein weiteres.
- Fehlende Daten. Ein Wegwerf-Cluster hat die Daten, die dein Test hineinlegt, nicht die der Produktion. Ein Snapshot hält den Zustand des Clusters, nicht den Inhalt deiner Volumes; eine Datenbank braucht eigene Backups.