Zum Inhalt

Polycrate CLI 0.30.9

Release-Datum: 11. März 2026
Typ: Bugfix-Release (Patch)

Highlights

Polycrate CLI 0.30.9 behebt zwei Bugs im Polycrate Operator: Ghost-Metriken durch Agent-ID-Wechsel beim Start sowie falsche Endpoint-Spec-Defaults, die dazu führten, dass operator-entdeckte Endpoints fälschlicherweise als DOWN gewertet wurden.

Artefakte

Docker Images

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

CLI Downloads

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

Installation & Update

polycrate update 0.30.9

Installationsanleitung


Bugfixes

Operator: Ghost-Agent-Serien in Prometheus-Registry

Der Endpoint-Monitoring-Controller im Operator schrieb Prometheus-Metriken mit einem polycrate_io_agent_id-Label. Beim Start des Operators war die kanonische API-UUID noch nicht bekannt — der Controller verwendete zunächst eine lokale Hex-ID.

Sobald der erste Health Report an die API gesendet wurde, wechselte das Label auf die API-UUID. Die alte Gauge-Serie mit der Hex-ID blieb jedoch aktiv in der Prometheus-In-Process-Registry bestehen, da GaugeVec.With(labels).Set(value) veraltete Label-Kombinationen nie automatisch löscht.

Folge: VictoriaMetrics scraped zwei Serien pro Endpoint:

  • {agent_id="343d561c..."} = 0 (Hex-ID, nicht mehr gültig)
  • {agent_id="5d33342d-..."} = 1 (API-UUID, korrekt)

avg() lieferte 0.5 → Endpoint-Status-UI zeigte orange/rot, obwohl der Endpoint UP war.

Behoben: Der Controller trackt jetzt die zuletzt verwendeten Labels pro Endpoint in einer In-Memory-Map (lastProbeLabels). Wenn sich polycrate_io_agent_id ändert, werden die alten Gauge-Einträge via GaugeVec.Delete(oldLabels) explizit gelöscht, bevor neue Metriken geschrieben werden.

Betroffen: Alle Installationen mit Polycrate Operator, bei denen der Operator-Pod neu gestartet wurde.


Operator: Endpoint Spec Defaults nicht konform mit API

Der EndpointReconciler baute beim Anlegen und Aktualisieren von Endpoints in der API ein spec-Objekt mit Defaults, die von der API-Funktion get_endpoint_spec() abwichen.

Bug 1: http.timeout — 10s statt 5s

Der Operator verwendete timeout: 10 als Default (aus dem Discovery Controller). Die API-Default ist timeout: 5. Die API normalisierte den Wert zwar bei jedem Reconcile-Zyklus zurück auf 5s, erzeugte dabei aber unnötige Schreiboperationen.

Bug 2: http.accepted_status_codes[200] statt [200, 201, 301, 302, 401, 403]

Der Operator setzte accepted_status_codes auf den Wert des expected-status-Annotations-Defaults [200]. Die API-Default enthält [200, 201, 301, 302, 401, 403], wodurch 401/403-Antworten (Auth-geschützte Endpoints) und 301/302-Redirects als UP gelten.

Folge: Alle Ingress-entdeckten Endpoints ohne explizite endpoints.polycrate.io/expected-status-Annotation betrachteten 201, 301, 302, 401 und 403 als DOWN — im Widerspruch zum Verhalten manuell angelegter Endpoints.

Behoben: Der EndpointReconciler setzt timeout: 5 und accepted_status_codes: [200, 201, 301, 302, 401, 403] wenn kein Annotation-Override vorhanden ist. Bei gesetzter endpoints.polycrate.io/expected-status-Annotation wird der Annotation-Wert unverändert übernommen.

Betroffen: Alle Installationen mit aktivem Endpoint Discovery, bei denen Ingress-Objekte ohne explizite expected-status-Annotation überwacht werden.


polycrate-operator Block

Der polycrate-operator Block wurde auf Version 0.3.44 aktualisiert:

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