Zum Inhalt

Polycrate API 0.15.7

Release-Datum: 24. April 2026
Typ: Fix

Highlights

  • LoadbalancerInstance Multi-Region-Fix – Ein zirkulärer Fehler in der Deployment-Checksum-Berechnung verursachte bei LoadbalancerInstances mit mehreren Regionen alle 5 Minuten ein neues Redeployment. Ursache war, dass der deployment-checksum Label selbst Bestandteil der Checksum-Berechnung war, was in Multi-Region-Setups zu einer Endlosschleife führte. Der Fix stellt sicher, dass der Checksum-Label bei der Berechnung immer explizit ausgeschlossen wird (Spec 202).

Details zu einzelnen Specs: polycrate spec inspect <id> im Workspace polycrate-api.

Artefakte

Docker Image

docker pull cargo.ayedo.cloud/polycrate/polycrate-api:0.15.7

Block

polycrate pull cargo.ayedo.cloud/ayedo/k8s/polycrate-api
polycrate run polycrate-api install

Fixes

LoadbalancerInstance: Endlosschleife bei Multi-Region-Deployment (Spec 202)

In Umgebungen mit mehreren Regionen pro LoadbalancerInstance triggerte der Reconciler alle 5 Minuten ein neues Deployment, obwohl keine Konfigurationsänderung vorlag. In Single-Region-Umgebungen stabilisierte sich das System nach einem initialen Deployment.

Ursache:

Der deployment_checksum wurde in 0.15.6 (Spec 201) um die expected_labels erweitert. Diese Labels werden über _expected_deployment_labels_for_checksum()_build_deployment_labels(deployment_checksum=None) berechnet. _build_deployment_labels() initialisiert die Labels aus self.merged_labels — einer Kopie der persistierten LBI-Labels, die den bereits gespeicherten LOADBALANCERINSTANCE_DEPLOYMENT_CHECKSUM-Label enthält. Wenn deployment_checksum=None übergeben wird, wurde dieser Key bisher nicht explizit entfernt. Dadurch floss der alte Checksum-Label in die Berechnung des neuen Checksums ein, wodurch der neue Checksum immer vom gespeicherten abwich — eine Endlosschleife.

In Multi-Region-Setups verstärkte sich der Effekt: Jede Region aktualisierte den LBI-Label mit ihrem eigenen Checksum, was die Berechnung der anderen Region sofort invalidierte.

Fix:

LoadbalancerInstance._build_deployment_labels() entfernt jetzt explizit den LOADBALANCERINSTANCE_DEPLOYMENT_CHECKSUM-Key aus dem Labels-Dictionary, wenn deployment_checksum=None übergeben wird. Damit ist die Checksum-Berechnung deterministisch und unabhängig vom aktuell gespeicherten Wert.

Kompatibilität und Deployment

  • Kein Breaking Change, keine Datenbankmigrationen.
  • Nach dem Update auf 0.15.7 stabilisiert sich die Reconciliation — laufende Redeployment-Loops werden beendet.