Skip to content

chore(deps): update kro to v0.9.4 - #180

Open
renovate[bot] wants to merge 11 commits into
mainfrom
renovate/kro
Open

renovate[bot] wants to merge 11 commits into
mainfrom
renovate/kro

Conversation

@renovate

@renovate renovate Bot commented Sep 10, 2026 •

Copy link
Copy Markdown
Contributor

This PR contains the following updates:

Package Type Update Change OpenSSF
github.com/kubernetes-sigs/kro require patch v0.9.3 → v0.9.4 OpenSSF Scorecard
kubernetes-sigs/kro patch 0.9.3 → 0.9.4 OpenSSF Scorecard

Release Notes

kubernetes-sigs/kro (github.com/kubernetes-sigs/kro)

v0.9.4

Compare Source

What's Changed
New Contributors

Full Changelog: kubernetes-sigs/kro@v0.9.3...v0.9.4


Configuration

📅 Schedule: (UTC)

  • Branch creation
    • At any time (no schedule defined)
  • Automerge
    • At any time (no schedule defined)

🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.

♻ Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

🔕 Ignore: Close this PR and you won't be reminded about these updates again.


  • If you want to rebase/retry this PR, check this box

This PR was generated by Mend Renovate. View the repository job log.

@renovate

renovate Bot commented Sep 10, 2026 •

Copy link
Copy Markdown
Contributor Author

ℹ️ Artifact update notice

File name: test/e2e/go.mod

In order to perform the update(s) described in the table above, Renovate ran the go get command, which resulted in the following additional change(s):

  • 22 additional dependencies were updated

Due to Go's usage of Minimal Version Selection (MVS), these packages have been updated to the minimum version available, so will still abide by minimumReleaseAge=5 days

Details:

Package Change
github.com/fxamacker/cbor/v2 v2.9.2 -> v2.9.3
github.com/go-openapi/jsonreference v1.0.0 -> v1.0.1
github.com/go-openapi/swag v0.27.3 -> v0.29.1
github.com/go-openapi/swag/cmdutils v0.27.3 -> v0.29.1
github.com/go-openapi/swag/conv v0.27.3 -> v0.29.1
github.com/go-openapi/swag/fileutils v0.27.3 -> v0.29.1
github.com/go-openapi/swag/jsonutils v0.27.3 -> v0.29.1
github.com/go-openapi/swag/loading v0.27.3 -> v0.29.1
github.com/go-openapi/swag/mangling v0.27.3 -> v0.29.1
github.com/go-openapi/swag/netutils v0.27.3 -> v0.29.1
github.com/go-openapi/swag/pools v0.27.3 -> v0.29.1
github.com/go-openapi/swag/stringutils v0.27.3 -> v0.29.1
github.com/go-openapi/swag/typeutils v0.27.3 -> v0.29.1
github.com/go-openapi/swag/yamlutils v0.27.3 -> v0.29.1
github.com/mattn/go-colorable v0.1.14 -> v0.1.15
github.com/mattn/go-isatty v0.0.20 -> v0.0.24
github.com/prometheus/client_model v0.6.2 -> v0.6.3
github.com/prometheus/procfs v0.21.1 -> v0.22.0
github.com/spf13/cast v1.7.0 -> v1.10.0
go.opentelemetry.io/otel v1.44.0 -> v1.46.0
go.opentelemetry.io/otel/trace v1.44.0 -> v1.46.0
k8s.io/kube-openapi v0.0.0-20260721132016-d427ff9ee9ad -> v0.0.0-20260821135717-be32def86098

@renovate
renovate Bot force-pushed the renovate/kro branch 5 times, most recently from 2cfa0a2 to 9c9a64a Compare September 22, 2026 19:27
@guewa
guewa enabled auto-merge (squash) September 22, 2026 19:40
guewa
guewa previously approved these changes Sep 22, 2026
- Taskfile: add --copy-resources flag to push-component.py invocations
  (script now requires explicit mode: --copy-resources or --copy-local-resources)
- build-component.py: clarify comment to reference open-component-model/ocm v0.48+ CLI

Signed-off-by: Michael Sprauer <Michael.Sprauer@sap.com>
@renovate

renovate Bot commented Sep 29, 2026

Copy link
Copy Markdown
Contributor Author

Edited/Blocked Notification

Renovate will not automatically rebase this PR, because it does not recognize the last commit author and assumes somebody else may have edited the PR.

You can manually request rebase by checking the rebase/retry box above.

⚠️ Warning: custom changes will be lost.

kro v0.9.4 has a regression (kubernetes-sigs/kro#1448) where includeWhen
expressions referencing only static schema fields (schema.spec.*) are
classified as data-pending and never resolve when the instance does not
explicitly set those fields (even when a default is defined).

The remote-observability RGD uses includeWhen: [${schema.spec.certManager.enabled}]
on 8 resources. When the ObservabilityStack creates a RemoteObservability CR
without explicitly setting certManager.enabled, kro v0.9.4 fails to evaluate
these includeWhen conditions, leaving the instance stuck and never ready.

Fix: explicitly pass certManager.enabled: true in the RemoteObservability
template so the field is always present in the child CR spec.

Signed-off-by: Michael Sprauer <Michael.Sprauer@sap.com>
….9.4

kro v0.9.4 takes longer to reconcile the full ObservabilityStack (~25-30min)
compared to v0.9.3 (~14min). The additional time is due to more HelmDeployment
resources being reconciled on workload clusters (cert-manager, otel-operator,
otel-collector-resource) now that certManager.enabled is explicitly set.

The 20-minute timeout was sufficient for v0.9.3 but not for v0.9.4.

Signed-off-by: Michael Sprauer <Michael.Sprauer@sap.com>
…status

kro v0.9.4 adds an 'internal.kro.run/apply-order' annotation to all managed
resources via server-side apply on every reconcile. This bumps metadata.generation
on HelmDeployment resources, while status.observedGeneration (updated by the
HelmDeployment controller) lags behind. The result: the generation equality check
otelOperatorHelmDeployment.status.observedGeneration == otelOperatorHelmDeployment.metadata.generation
is permanently false in kro v0.9.4, preventing RemoteObservability.status.ready
from ever becoming true, which blocks ObservabilityStack.status.ready.

Fix: use only status.phase == 'Ready' as the readiness signal, which is stable
and not affected by kro's annotation management.

Also revert the 35m test timeout to 20m since the actual readiness delay was caused
by this generation drift, not by genuine extra work.

Signed-off-by: Michael Sprauer <Michael.Sprauer@sap.com>
Temporary diagnostic to understand why status.ready never becomes true in
kro v0.9.4. Will be removed after the root cause is identified.

Signed-off-by: Michael Sprauer <Michael.Sprauer@sap.com>
Signed-off-by: Michael Sprauer <Michael.Sprauer@sap.com>
kro v0.9.4 introduced stricter CEL value handling (PR #1346):
accessing individual bytes fields from Kubernetes Secret.data
(e.g. data["tls.crt"]) returns a CEL bytes type, which can no
longer be used directly in resource templates. The error is:
  unsupported type: bytes value cannot be used directly in a
  resource template; encode it explicitly, e.g. base64.encode(...)

kro v0.9.3 silently accepted bytes in templates (converting
[]byte directly); v0.9.4 rejects it, causing remoteClientCertSecret
creation to fail with an error, preventing RemoteObservability from
ever reaching status.ready=true.

Fix: wrap the three Secret.data field accesses with base64.encode()
to produce the base64 strings that Kubernetes Secret.data expects.

Also remove temporary diagnostic logging added during investigation.

Signed-off-by: Michael Sprauer <Michael.Sprauer@sap.com>
kro v0.9.4 rejects bytes values in resource templates (EnsureJSONSafe
check, PR #1346). The remoteClientCertSecret merged data from two secrets
using individual field access (Secret.data["tls.crt"]), which returns
CEL bytes type. Using base64.encode() to fix the runtime error causes
a type-check failure (expected bytes but got string).

Solution: eliminate the merged secret entirely. Instead, mount the two
source secrets directly as separate volumes in the OTel collector:
- observabilityClientCertSecret → /etc/otel/certs/client (tls.crt, tls.key)
- otlpLogsCertSecret → /etc/otel/certs/ca (tls.crt as CA cert)

This avoids any per-field bytes access while preserving the cert data
needed for mutual TLS. The secretsToCopy list is updated to copy both
source secrets to the workload cluster.

Signed-off-by: Michael Sprauer <Michael.Sprauer@sap.com>
kro v0.9.4 introduced two breaking changes affecting remote-observability:

1. metadata.generation drift: kro v0.9.4 adds an apply-order annotation to
   all managed resources on every reconcile, bumping metadata.generation.
   The status expressions compared observedGeneration == metadata.generation,
   which was never stable. Fixed by checking only status.phase == 'Ready'.

2. Bytes values in templates (kro v0.9.4 PR #1346): accessing individual
   fields from Secret.data (e.g. data["tls.crt"]) returns CEL bytes type
   which can no longer be used directly in resource templates (EnsureJSONSafe
   now rejects []byte). Using base64.encode() fails type-check (expected bytes
   but got string).

   Fixed by replacing the merged remoteClientCertSecret (which needed individual
   bytes field access) with two separate secrets using whole-map data copy:
   - clientCertSecretCopy: data: ${observabilityClientCertSecret.data}
   - caCertSecretCopy: data: ${otlpLogsCertSecret.data}
   Whole-map access uses convertMap's fast-path (raw Go map, no bytes decode).
   The OTel collector mounts both secrets at separate paths:
   - /etc/otel/certs/client/ (tls.crt, tls.key)
   - /etc/otel/certs/ca/ (tls.crt as CA cert)

Signed-off-by: Michael Sprauer <Michael.Sprauer@sap.com>
…template

Kubernetes applies the CRD default (enabled: true) when the CR is created,
so setting it explicitly is redundant. Additionally, having cert-manager
explicitly installed on workload clusters increased reconciliation load,
causing the opencontrolplane_controlplane Prometheus metric to take longer
to appear (beyond the 5-minute test timeout).

Signed-off-by: Michael Sprauer <Michael.Sprauer@sap.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants