Changed
- Align files according to platform standards in #83 by @giantswarm-align-files[bot]
Full Changelog: https://github.com/giantswarm/klaus-oci/compare/v0.0.69...v0.0.70
Full Changelog: https://github.com/giantswarm/klaus-oci/compare/v0.0.69...v0.0.70
Full Changelog: https://github.com/giantswarm/muster/compare/v5.7.1...v5.7.2
AgentgatewayParameters renders the Service-type overlay at spec.service.spec.type, the path the CRD declares (an embedded ServiceSpec under spec.service.spec), instead of spec.service.type, which is not in the schema. Until now the overlay never took effect: helm-controller’s client-side apply silently pruned the unknown field, so the agentgateway data-plane Service stayed at the controller-hardcoded LoadBalancer; under Helm 4’s default server-side apply the same field made the install hard-fail (.spec.service.type: field not declared in schema). Visible rollout effect: on installations running an agentgateway-* ingress mode without the chart-owned edge, the data-plane Service now actually becomes gateway.parameters.serviceType (default ClusterIP, the intended state — the front Gateway serves public traffic), which deletes the unintended cloud LoadBalancer that the pruned overlay left behind. Edge-mode installs (gatewayApi.gateway.create: true) keep LoadBalancer via gatewayApi.gateway.serviceType. Fixes #250.Full Changelog: https://github.com/giantswarm/muster/compare/v5.7.0...v5.7.1
validateLegacyToggles, both charts) is coalescing-safe. In a layout where a component block feeds a real Helm dependency (the standalone umbrella copies this helper), Helm coalesces that chart’s own top-level enabled: true default into the block once the dependency is on (klaus-gateway ships one), so the plain hasKey probe could not tell an operator-set value from the chart default and was skipped exactly where it mattered. The guard now reports a legacy key when it is provably the operator’s: always while the component is off, and while it is on when the value is an explicit false — the case where the operator believes the component is off while it runs anyway. A leftover enabled: true under a component that is on is indistinguishable from a coalesced chart default and passes.Full Changelog: https://github.com/giantswarm/agent-platform/compare/v3.1.0...v3.2.0
Full Changelog: https://github.com/giantswarm/muster/compare/v5.6.11...v5.7.0
Full Changelog: https://github.com/giantswarm/muster/compare/v5.6.10...v5.6.11
global.* input contract, in both charts, with backward-compatible fallbacks — an installation that sets none of the new keys renders byte-identically (the connectivity golden check pins this). Upstreamed from the standalone chart’s vanilla-defaults work so the generated standalone templates need no patches:global.domain: the one hostname input. Public hostnames derive from it by convention (muster., agentgateway., kagent.<domain>), each still overridable next to its route (ingress.hostnames, kagent.uiRoute.hostname, kagent.controllerRoute.hostname). The kagent route guards now accept a derived hostname: with global.domain set, kagent.uiRoute.hostname is optional.global.identity (issuerUrl, clientId, existingSecret): the platform’s one login provider. The kagent JWT policy defaults its issuer from global.identity.issuerUrl; the render fails when muster’s own muster.muster.oauth.server.* keys disagree with a set global.identity (both sides set and different — installs that ignore global.identity are untouched).global.gatewayApi.parentRefs: the public Gateway every umbrella-owned route attaches to when neither its own parentRefs/parentRef override nor the chart-owned edge names one. The all-modes ingress.parentRefs requirement is now satisfied by any of the three sources; the failure message names them all.global.observability.metrics.serviceMonitor (enabled default true, interval, labels): gates the monitor objects the connectivity chart renders — the kagent controller ServiceMonitor (+ its metrics Service) and the CNPG Cluster’s built-in PodMonitor — for clusters without the monitoring.coreos.com CRDs. The per-component kagent.serviceMonitor.* keys keep working underneath; interval/labels fall back to them.global.observability.traces.otlp (endpoint, protocol, headers): OTEL exporter env for the agentgateway data plane. An empty endpoint renders nothing and gateway.parameters.dataPlaneEnv applies unchanged; a set endpoint wins over same-named entries in that list, so no duplicate env names.ingress.httpRoute.timeouts (default {}): portable Gateway API rule timeouts on the umbrella-owned routes (muster /, agentgateway /mcp, kagent UI and public controller routes). request: "0s" asks the implementation to disable the request timeout so MCP/SSE streams stay open without the Envoy-specific ingress.backendTrafficPolicy.gatewayApi.gateway.create (default false, with tls.secretName and serviceType): edge mode — the chart-owned agentgateway data-plane Gateway is also the public edge. It grows an HTTPS :443 listener for *.<global.domain> (allowedRoutes from all namespaces), the umbrella-owned public routes pin themselves to that listener via sectionName (the plaintext :8080 listener never serves public hostnames through the edge’s LoadBalancer Service), the layer-1 routes that would forward a front Gateway to the agentgateway Service are suppressed (the data plane must not proxy to itself, and their BackendTrafficPolicy with them), the data-plane Service type switches to gatewayApi.gateway.serviceType, and the data-plane NetworkPolicy (both flavors) admits world traffic on 443 only. Guards require the agentgateway mode, the certificate Secret and global.domain. The fleet never sets this — it exists for standalone installs (kind, vanilla clusters) without a front Gateway. Known accepted quirk, documented in the muster route template: in edge mode the hostname-specific muster / route also serves muster.<domain>/mcp directly (hostname precedence), so the MCP path degrades to muster-direct semantics on that hostname; behavioral acceptance is owned by the standalone kind smoke.Cluster carries helm.sh/resource-policy: keep: the database outlives the release, so an uninstall or a postgres.enabled flip no longer drops the platform’s data. Removing the database now takes an explicit kubectl delete cluster after the release change.inheritedMetadata labels and monitoring block are gated on global.observability.metrics.serviceMonitor.enabled (default true — no installation needs to act), and the labels come from global.observability.metrics.serviceMonitor.labels, defaulting to the Giant Swarm tenant label as before.<clusterName>-cluster: replication egress, controller ingress) is gated on postgres.enabled. It used to render for every kagent install under the cilium flavor, naming a Postgres cluster that does not exist.uiRoute/controllerRoute parentRef overrides fail the render when .name is set without .namespace — the Gateway API CRD rejects an empty namespace, which used to break the route silently after install.Full Changelog: https://github.com/giantswarm/muster/compare/v5.6.9...v5.6.10