Kubernetes Operator
Cuby kann in einem Kubernetes-Cluster als Operator betrieben werden. In diesem Modus werden Produkte nicht als lokale Prozesse, sondern als Kubernetes- Deployments verwaltet.
Vergleich: Lokal vs. Kubernetes
| Aspekt | Lokaler Modus | Kubernetes Operator |
|---|---|---|
| Produkte | Child-Prozesse | Deployments/Services |
| Konfiguration | ~/.processcube/config.json | ConfigMaps + Secrets |
| API Key | Bun.secrets | K8s Secret processcube-api-key |
| Logs | Datei + In-Memory | Pod Logs |
| Health | HTTP-Endpunkte | Liveness/Readiness Probes |
| Skalierung | Einzelner Prozess | Replicas, Rolling Restart |
Aktivierung
Der Operator-Modus wird aktiviert durch:
- Umgebungsvariable:
CUBY_MODE=operator - Automatische Erkennung: Service Account Token im Cluster vorhanden
CUBY_MODE=operator cubyKubernetes-Ressourcen
Im Operator-Modus erstellt Cuby pro Produkt folgende Ressourcen:
| Ressource | Beschreibung |
|---|---|
| Deployment | Produkt-Container mit Resource-Limits und Health-Probes |
| Service | ClusterIP Service für internen Zugriff |
| ConfigMap | Umgebungsvariablen für das Produkt |
| Ingress | Externer Zugriff (wenn Domain konfiguriert) |
Ingress-Varianten
Cuby unterstützt verschiedene Ingress-Controller:
| Typ | Beschreibung |
|---|---|
| Traefik | Traefik IngressRoute mit Middleware |
| Nginx | Standard Kubernetes Ingress mit nginx-Annotationen |
Die Ingress-Variante wird beim Manifest-Generator ausgewählt.
API Key
Im Operator-Modus wird der API Key aus einem Kubernetes Secret gelesen:
apiVersion: v1
kind: Secret
metadata:
name: processcube-api-key
type: Opaque
data:
api-key: <base64-encoded-api-key>Skalierung und Updates
- Replicas: Produkte können auf mehrere Instanzen skaliert werden
- Rolling Restart: Updates werden ohne Downtime durchgeführt
- Pod Logs: Logs werden direkt aus den Pods gelesen
Manifest-Generator
Für die initiale Einrichtung im Cluster steht ein Web-basierter Manifest-Generator bereit:
marketplace.processcube.io/cuby/manifest
Konfigurationsfelder
| Feld | Beschreibung |
|---|---|
| Namespace | Kubernetes-Namespace für alle Cuby-Ressourcen |
| Hostname | Domain für den Ingress-Zugriff |
| Ingress Type | traefik oder nginx |
| Cert-Manager Cluster Issuer | Name des Cert-Manager ClusterIssuer für TLS |
| API Key | ProcessCube® API Key (wird nur für die Secret-Generierung verwendet, nicht gespeichert) |
Generierte Dateien
Der Generator erstellt eine YAML-Datei mit allen nötigen Kubernetes-Ressourcen:
- Namespace
- Deployment (Cuby Pod)
- Service
- Ingress (je nach gewähltem Typ)
- Secret (API Key)
- ServiceAccount
- PersistentVolumeClaim
Der Dateiname variiert je nach Ingress-Typ:
cuby-operator_nginx_ingress.yaml(Nginx)cuby-operator.yaml(Traefik)
Anwendung
# Manifest generieren (über Web-Oberfläche)
# → Download: cuby-operator.yaml
# Manifest anwenden
kubectl apply -f cuby-operator.yamlKubernetes-Verbindung
Im Cluster (In-Cluster)
Cuby verwendet automatisch den Service Account Token und das CA-Zertifikat:
/var/run/secrets/kubernetes.io/serviceaccount/token/var/run/secrets/kubernetes.io/serviceaccount/ca.crt
Außerhalb des Clusters (lokal)
Für lokale Entwicklung oder Tests können Kubernetes-Verbindungsdaten über Umgebungsvariablen konfiguriert werden:
KUBERNETES_SERVICE_HOST=kubernetes.local \
KUBERNETES_SERVICE_PORT=6443 \
CUBY_MODE=operator \
cubyWeiterführend
- Konfiguration — Konfiguration im lokalen Modus
- Umgebungsvariablen — Alle Operator-relevanten Variablen
- Plattform-Produkte — Welche Produkte im Cluster laufen können