Polycrate API 0.15.4¶
Release-Datum: 24. April 2026
Typ: Feature
Highlights¶
- Loadbalancer – Metrics API –
metrics_data(Traffic-Volumen, Bandwidth) wird direkt über den Detail-Endpoint ausgeliefert; Dashboard-Tab zeigt Aggregated-Statistics nach der Reconciliation korrekt an (Spec 182). - Loadbalancer – Traffic-Graphtabs – Zwei neue Tabs im LoadbalancerInstance-Dashboard: Traffic-Volumen total und aufgeschlüsselt nach Region (Spec 183).
- Loadbalancer – Deployment Guards – Neue LoadbalancerInstances ohne Konfiguration oder Ports werden nicht mehr in Regionen ausgerollt; bestehende Deployments werden bei Entfernung der Config automatisch deinstalliert (Spec 188).
- Loadbalancer – Create-Wizard – Das Create-Formular bietet jetzt einen Mode-Selektor (DaemonSet vs. Deployment) mit geführtem Wizard und Ports-Eingabe (Spec 189).
- LoadbalancerRegion – Managed Object Dashboard – Region-Detail migriert: Tabs Instances, IP Prefixes, Configuration (Monaco YAML); K8sCluster-Link korrekt verknüpft (Spec 187).
- Verwaiste Cluster-Ressourcen – HAProxy-Deployments/DaemonSets und Services bleiben nach API-Löschung nicht mehr im Cluster stehen: DB-Löschung erfolgt jetzt erst nach verifiziertem Uninstall (Spec 180).
- IPPrefix Detail UI – Migration auf das Managed Object Dashboard (Spec 193).
- Diverse Fixes – Cloudflare PATCH-Payload, Workspace-Kubeconfig-Fallback, K8sCluster Endpoint unnötige Writes, Harbor Quota Logging, VictoriaMetrics Label-Selektoren, PromQL Vector-Mismatch, IPAM-Manifest-Labels, ManagedObject merged_labels, views.py logger.
Details zu einzelnen Specs: polycrate spec inspect <id> im Workspace polycrate-api.
Artefakte¶
Docker Image¶
Block¶
Loadbalancer¶
Metrics API (Spec 182)¶
GET /api/v1/loadbalancers/instances/<id>/ liefert nun metrics_data mit den Schlüsseln traffic (Bytes-Volumen via increase()), bandwidth (Rate in Bytes/s via rate()), connections und last_updated. Der Dashboard-Tab-Bug (fehlende Aggregated-Statistics) ist behoben — die Template-Bedingung prüft jetzt last_updated statt des nicht existierenden available-Keys.
Der List-Endpoint liefert zusätzlich die flachen Properties bandwidth_now_bytes_per_second, traffic_30d_bytes_in, traffic_30d_bytes_out pro Instanz.
Traffic-Graphtabs (Spec 183)¶
Im LoadbalancerInstance-Dashboard stehen zwei neue Tabs bereit:
- Traffic (Total) – Gesamtvolumen (Bytes) über alle Regionen
- Traffic by Region – Aufschlüsselung nach Region
Deployment Guards (Spec 188)¶
Eine neue LoadbalancerInstance ohne config oder ohne ports löst beim Reconcile kein Region-Deployment mehr aus; stattdessen wird LOADBALANCER_CONFIG_MISSING bzw. LOADBALANCER_PORTS_MISSING als Condition gesetzt. Werden Config oder Ports nachträglich entfernt, initiiert der nächste Reconcile-Zyklus die Deinstallation aller aktiven Region-Deployments (deployment_status = 'removing'). Das Create-Formular setzt keinen automatischen Port-Default mehr.
Create-Wizard (Spec 189)¶
Das Create-Formular zeigt jetzt einen zweistufigen Wizard: zuerst Mode-Auswahl (DaemonSet / Deployment), dann Konfigurationsfelder inkl. Ports-Eingabe via PortTagWidget.
Region Detail UI (Spec 187)¶
Die LoadbalancerRegion-Detailseite nutzt das standardisierte Managed Object Dashboard mit drei Tabs:
- Instances – gefilterte LoadbalancerInstances
- IP Prefixes – zugehörige IP-Prefixes
- Configuration –
region_configals Read-Only Monaco-YAML-Viewer
Der K8sCluster-Link zeigt auf k8s_cluster.get_absolute_url() (war zuvor #).
Verwaiste Cluster-Ressourcen (Spec 180)¶
In der Reconciliation-Schleife für obsolete Region-Deployments wurde K8sApp.uninstall() bisher nicht-blockierend aufgerufen und die DB-Zeile danach sofort gelöscht. Der Cluster-Cleanup wurde damit stillschweigend übersprungen. Jetzt: blockierendes Uninstall + ActionRun.status-Prüfung vor K8sApp.delete() — analog zu LoadbalancerRegion.remove_instance().
VictoriaMetrics Label-Selektoren (Spec 181)¶
Alle PromQL-Queries nutzen jetzt die kanonischen polycrate_-Keys statt der alten loadbalancerinstances_polycrate_io_*-Labels.
IPAM-Manifest kanonische Labels (Spec 191)¶
Das IPAM-Manifest der LoadbalancerRegion verwendet jetzt system_labels statt merged_labels, um kanonische und stabile Label-Werte sicherzustellen.
Traffic by Region – PromQL Fix (Spec 190)¶
Vector-Mismatch in der PromQL-Abfrage für die Region-Aufschlüsselung behoben; leere Charts werden nicht mehr angezeigt.
IPPrefix¶
Detail UI – Managed Object Dashboard (Spec 193)¶
Die IPPrefix-Detailseite wurde auf das Managed Object Dashboard migriert.
Fixes¶
- Spec 175 – Harbor Registry Quota: Verbesserte Payload-Normalisierung (
_normalize_quota_payload()), DEBUG-Logging der vollständigen Harbor-Antwort,0 Bstatt—wenn Quota 0 Byte. - Spec 184 – Cloudflare
update_record:typeundnamewerden jetzt immer im PATCH-Payload mitgesendet; kein 400-Fehler mehr. - Spec 185 – Workspace Reconciliation: Kubeconfig-Pfad-Fallback für alternative Cluster-Konfigurationen.
- Spec 186 – K8sCluster
_ensure_api_server_endpoint:update_or_create→get_or_create+ Conditional Update; kein unnötiger DB-Write mehr wenn Hostname/Port unverändert. - Spec 192 – LoadbalancerInstance Dashboard Tab: veraltete/doppelte UI-Elemente entfernt.
- Spec 194 –
views.py:loggerwar in_integrity_error_responsenicht definiert; Fehler behoben. - Spec 195 –
ManagedObject.merged_labels:TypeErrorwennlabelskein Dict ist behoben.
Kompatibilität und Deployment¶
- Kein Breaking Change. Django-Migrationen ausführen falls vorhanden (
polycrate run polycrate-api migrate). - OpenAPI-Schema und JS API Client wurden mit diesem Release neu generiert (
make api-client-js-rebuild).
Nach dem Deployment¶
- LoadbalancerInstances ohne Config: Dashboard zeigt
LOADBALANCER_CONFIG_MISSING-Condition; beim nächsten Reconcile werden bestehende Deployments initiiert zu deinstallieren. - Harbor Quota: nach Reconciliation
harbor_quota_updated_atin der DB prüfen; beiNoneVictoriaLogs aufget_project_quota failedprüfen. - K8sCluster Endpoints: Reconciliation-Logs sollten keinen DB-Write mehr für unveränderte kubeconfigs zeigen.