With Polycrate CLI 0.29.15, we have resolved the root cause of a persistent bug where endpoints with tls: false were not correctly serialized into the Kubernetes CRD from the API.
Root Cause: omitempty + default=true
The issue was in the CRD definition of the endpoint type:
// Before (faulty)
// +kubebuilder:default=true
TLS bool `json:"tls,omitempty"`
With TLS=false (Go zero-value for bool), the field was not serialized into JSON due to omitempty. Kubernetes then applied the CRD default true—effectively ignoring the update.
The Solution
// After (correct)
// +kubebuilder:default=false
TLS bool `json:"tls"`
By removing omitempty, false is explicitly serialized as "tls": false. The new default false prevents "Required value" errors with old CRs.
Enhanced Endpoint-Check Logging
Additionally, debug logs for endpoint checks have been expanded. At loglevel: 2, full URLs and check results are now logged:
Performing endpoint check
url: http://example.com:80/
protocol: http
tls: false
Endpoint check failed
status_code: 404
error: Unexpected status code: 404
This significantly eases troubleshooting of endpoint monitoring issues.
Breaking Change: New Defaults
New endpoints now have the following defaults:
| Field | Before | After |
|---|---|---|
tls |
true |
false |
protocol |
https |
http |
For HTTPS endpoints, tls: true must be explicitly set.
polycrate-operator Block
The polycrate-operator block has been updated to version 0.3.30:
polycrate pull cargo.ayedo.cloud/ayedo/k8s/polycrate-operator
polycrate run polycrate-operator deploy
Important: The new CRDs are automatically installed. Existing endpoints with incorrect TLS values will be corrected at the next API sync.
Update Now
polycrate update 0.29.15
Or download the binaries directly from PolyHub.
Polycrate is ayedo's Infrastructure-as-Code tool for declarative multi-cluster management. Learn more →