Zum Inhalt

Polycrate CLI 0.37.1

Release-Datum: 19. April 2026
Typ: Patch-Release

Highlights

Polycrate CLI 0.37.1 härtet das Operator-Reconcile-Verhalten ab und behebt drei Findings aus dem Post-0.15.0-Audit (Spec 153) sowie eine Harmonisierung der 409-Conflict-Behandlung in allen acht Operator-Reconcilern (Spec 154).

Nach Spec 153 F2 behandelt der OperatorConfig-Reconciler 409 Conflict auf CreateCluster bereits gracefully (Re-Lookup + Adopt). Dasselbe Muster zieht Spec 154 jetzt für S3Bucket, BackupSchedule, Endpoint, Certificate, Backup, Host, K8sVolume und K8sApp nach. Der Operator adoptiert bestehende API-Objekte bei Race-Conditions zwischen Replikas, nach CR-Restore ohne status.apiID oder nach Teilfehlern vorheriger Create-Aufrufe — statt mit irritierenden „Bucket creation failed: 409 Conflict“-Meldungen im CR-Status in Backoff zu gehen.

Zusätzlich sendet der Operator jetzt einen aussagekräftigen User-Agent (polycrate-operator/<version> statt polycrate-go-client), nutzt für den K8sCluster-Startup-Lookup einen deterministischen API-Call und hat ein höheres Rollout-Timeout von 5 Minuten (statt 60 Sekunden), um prämature Reconcile-Fehler bei langsamen Cluster-Registrierungen zu vermeiden.

Kein API-, CRD- oder Schema-Change. Der polycrate-operator-Block wurde auf 0.3.59 mitreleased und zieht das neue Binary automatisch.

Artefakte

Docker Images

docker pull cargo.ayedo.cloud/library/polycrate:0.37.1

CLI Downloads

Plattform Architektur Download
Linux amd64 Download
Linux arm64 Download
macOS amd64 Download
macOS arm64 (Apple Silicon) Download

Installation & Update

polycrate update 0.37.1

Installationsanleitung

Changes

Operator — Spec 153 (Post-0.15.0 Findings)

  • F1 User-Agent: Alle Operator-HTTP-Requests senden jetzt User-Agent: polycrate-operator/<version> statt polycrate-go-client. Erleichtert API-seitiges Request-Tracing und Rate-Limit-Bucketing.
  • F2 K8sCluster-Lookup: Der Startup-Lookup im OperatorConfig-Reconciler nutzt den neuen deterministischen GetClusterByNameAndWorkspace-Helper in pkg/api/client.go statt der vollen Cluster-Liste mit clientseitigem Filter. Spart Roundtrips und macht das Verhalten bei Paginations-Edges robuster.
  • F3 Rollout-Timeout: Das Timeout für Rollout-Completion im OperatorConfig-Reconciler wurde von 60 Sekunden auf 5 Minuten erhöht. Vermeidet false-positive Reconcile-Fehler bei langsamen Cluster-Registrierungen gegen eine frisch deployte polycrate-api.

Operator — Spec 154 (409 Conflict Adoption)

Das in Spec 153 F2 eingeführte Muster (Re-Lookup via api.IsHTTPConflict und Adopt der bestehenden Row) ist jetzt in allen acht Operator-Reconcilern implementiert:

Reconciler Adoption-Lookup
s3bucket_reconciler.go FindS3BucketByNameAndRegion
backupschedule_reconciler.go FindBackupScheduleByNameAndCluster (neu)
endpoint_reconciler.go GetEndpointByRemoteAddress
certificate_reconciler.go FindCertificateByNameAndCluster (neu)
backup_reconciler.go FindBackupByNameAndCluster (neu)
host_reconciler.go GetHostByName
k8svolume_reconciler.go FindK8sVolumeByProviderObjectID
k8sapp_reconciler.go GetK8sAppByName

API-Client

  • Sieben CreateX-Methoden (CreateEndpoint, CreateHost, CreateK8sApp, CreateK8sVolume, CreateBackup, CreateBackupSchedule, CreateCertificate) in pkg/api/client.go geben bei non-2xx-Antworten jetzt *api.HTTPError zurück statt einen generischen fmt.Errorf. Damit greifen api.IsHTTPConflict und api.IsHTTPNotFound zuverlässig. CreateS3Bucket hatte dieses Verhalten bereits.
  • Drei neue deterministische Lookup-Helfer: FindBackupByNameAndCluster, FindBackupScheduleByNameAndCluster, FindCertificateByNameAndCluster. Alle drei liefern (nil, nil) wenn das Objekt nicht existiert und *HTTPError bei non-2xx.

Migration

Kein manueller Upgrade-Schritt nötig. Der polycrate-operator-Block zieht die neue Image-Version beim nächsten Reconcile automatisch.

Wer den Rollout erzwingen will:

kubectl -n polycrate-system rollout restart deployment/polycrate-operator

Nach dem Rollout erscheinen bei Race-Conditions oder CR-Restores in den Operator-Logs statt creation failed: 409 Conflict jetzt Info-Level-Meldungen in der Form Adopted existing X after 409 Conflict.

polycrate-operator Block

Der polycrate-operator Block wurde auf Version 0.3.59 mitreleased (app_version: 0.37.1). Zusätzlich zu Spec 154 bringt 0.3.59 konfigurierbares Rollout-Wait-Verhalten aus Spec 153 F3:

  • block.config.rollout.wait_timeout_seconds (Default: 900) — Timeout für kubectl rollout status, vorher hart 300s
  • block.config.rollout.exists_timeout_seconds (Default: 60) — Wartet explizit auf Deployment-Objekt bevor der Rollout-Check startet
  • Diagnostics (Pods / Describe / Events) werden bei Rollout-Failure automatisch geloggt

Block-Release 0.3.59

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

Bekannte Limitation

Unit-Tests für die 201 Create / 409 Conflict / 500 Retry-Pfade der Reconciler sind in diesem Release nicht enthalten, weil das Repo aktuell keine Go-Test-Infrastruktur besitzt. Das Thema ist als Folge-Spec 157 „Reconciler 409-Tests nachziehen“ erfasst und wird in einem späteren Patch-Release adressiert.

Jetzt aktualisieren

polycrate update 0.37.1

Oder direkt vom PolyHub herunterladen.