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¶
CLI Downloads¶
| Plattform | Architektur | Download |
|---|---|---|
| Linux | amd64 | Download |
| Linux | arm64 | Download |
| macOS | amd64 | Download |
| macOS | arm64 (Apple Silicon) | Download |
Installation & Update¶
Changes¶
Operator — Spec 153 (Post-0.15.0 Findings)¶
- F1 User-Agent: Alle Operator-HTTP-Requests senden jetzt
User-Agent: polycrate-operator/<version>stattpolycrate-go-client. Erleichtert API-seitiges Request-Tracing und Rate-Limit-Bucketing. - F2 K8sCluster-Lookup: Der Startup-Lookup im
OperatorConfig-Reconciler nutzt den neuen deterministischenGetClusterByNameAndWorkspace-Helper inpkg/api/client.gostatt 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 deploytepolycrate-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) inpkg/api/client.gogeben bei non-2xx-Antworten jetzt*api.HTTPErrorzurück statt einen generischenfmt.Errorf. Damit greifenapi.IsHTTPConflictundapi.IsHTTPNotFoundzuverlässig.CreateS3Buckethatte dieses Verhalten bereits. - Drei neue deterministische Lookup-Helfer:
FindBackupByNameAndCluster,FindBackupScheduleByNameAndCluster,FindCertificateByNameAndCluster. Alle drei liefern(nil, nil)wenn das Objekt nicht existiert und*HTTPErrorbei 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:
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ürkubectl rollout status, vorher hart 300sblock.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
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¶
Oder direkt vom PolyHub herunterladen.