Zum Inhalt

Polycrate API 0.15.6

Release-Datum: 24. April 2026
Typ: Fix

Highlights

  • LoadbalancerInstance – Deterministischer Deployment-Checksum – Label-Änderungen und Package-Wechsel im Artifact triggern ab sofort ein Redeployment. Der deployment_checksum enthält jetzt die erwarteten Labels (expected_labels) und die vollständige Block-Referenz (from_block_ref = Package + Version). Bestehende Deployments mit alten Labels werden beim ersten Reconcile-Zyklus automatisch neu deployt und erhalten kanonische Labels auf Pods, Block und K8sApp (Spec 201).
  • Deployment-Checksum Label kanonisch – Der Checksum-Label auf Pods, Block und K8sApp heißt jetzt polycrate_loadbalancerinstance_deployment_checksum statt loadbalancerinstances.polycrate.io/deployment-checksum.

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.6

Block

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

Fixes

Deterministischer Deployment-Checksum (Spec 201)

Der deployment_checksum auf LoadbalancerInstanceDeployment berücksichtigte bisher weder die Kubernetes-Labels noch den vollständigen Artifact-Bezeichner (Package + Version). Dadurch lösten Label-Korrekturen im Code (z. B. Spec 199 in 0.15.5) kein Redeployment aus — bestehende Pods behielten Legacy-Labels.

Änderungen:

  • Neues Feld system_config_from_block_ref speichert package:version (z. B. cargo.ayedo.cloud/ayedo/k8s/haproxy:2.0.8) statt nur den Versions-String.
  • Neue Methode _expected_deployment_labels_for_checksum() berechnet die erwarteten Labels ohne den Checksum-Label selbst (zirkulationsfrei).
  • calculate_deployment_checksum() enthält jetzt from_block_ref und expected_labels als Hash-Input.
  • LoadbalancerRegion.create_instance() verwendet jetzt _build_deployment_labels() als Single Source of Truth (Parität mit dem Update-Pfad).
  • Der Checksum-Label heißt jetzt polycrate_loadbalancerinstance_deployment_checksum (kanonisch).

Effekt: Beim ersten Reconcile-Zyklus nach dem Update auf 0.15.6 ändert sich der Checksum für alle bestehenden Deployments (da system_config_from_block_ref vorher None war) → Redeployment → kanonische Labels auf Pods, Block und K8sApp.

Kompatibilität und Deployment

  • Eine Django-Migration für das neue Feld system_config_from_block_ref ist enthalten.
  • Kein Breaking Change — Bestandsdaten fallen bei fehlendem from_block_ref automatisch auf system_config_artifact_version zurück.
  • Bestehende HAProxy-Pods werden beim ersten Reconcile automatisch neu deployt und erhalten kanonische Labels.