Fixed
- (deps) Update k8s modules to v0.36.4 in #609 by @renovate[bot]
Full Changelog: https://github.com/giantswarm/starboard-exporter/compare/v1.2.6...v1.2.7
Updates on Giant Swarm workload cluster releases, apps, UI improvements and documentation changes.
Full Changelog: https://github.com/giantswarm/starboard-exporter/compare/v1.2.6...v1.2.7
Full Changelog: https://github.com/giantswarm/starboard-exporter/compare/v1.2.5...v1.2.6
Full Changelog: https://github.com/giantswarm/backstage/compare/v0.191.4...v0.191.5
Full Changelog: https://github.com/giantswarm/backstage/compare/v0.191.3...v0.191.4
Full Changelog: https://github.com/giantswarm/starboard-exporter/compare/v1.2.4...v1.2.5
gitops: generated repositories now record which version of the repository structure they were built
with, in a .gitops-metadata.yaml file at the repository root. gitops init creates it and every
gitops add ... records the layer it generated.gitops check: new command reporting the parts of a GitOps repository that were generated with an older
repository structure than the current kubectl-gs produces. It exits non-zero when anything is behind, so
it can be used as a check in the repository’s own CI. Repositories created before this existed are
brought in with gitops check --adopt.
(#23540)template cluster: releases without a published release-<provider> chart, such as a hand-crafted
Release CR used for testing (e.g. 35.0.0-andreas), no longer produce an App CR pointing to a chart
which does not exist. The cluster-<provider> chart is used instead, which resolves the Release CR in
the management cluster.
(#4347)template cluster: --cluster-version is no longer ignored for CAPA, CAPZ and AKS. Setting it templates
the given cluster-<provider> app version instead of the release-<provider> chart, which allows testing
a provider chart build together with a release.kubectl gs login, instead of only a raw client error such as dial tcp 127.0.0.1:8080: connect: connection refused or no matches for kind "AppCatalogEntry". The hint is added for every command, not just template cluster.Full Changelog: https://github.com/giantswarm/starboard-exporter/compare/v1.2.3...v1.2.4
Full Changelog: https://github.com/giantswarm/backstage/compare/v0.191.2...v0.191.3
Full Changelog: https://github.com/giantswarm/backstage/compare/v0.191.1...v0.191.2
.github/release-pr-body.md. Towards https://github.com/giantswarm/roadmap/issues/4334global.connectivity.certManager.createIamRole toggle (default true) to let customers opt out of provisioning the cert-manager IAM role via crossplane and bring their own role.architecture field to node pools (enum x86_64 / arm64, default x86_64). When set to arm64, imageLookupFormat is rendered with an arm64- infix so the pool resolves the matching CAPI Flatcar arm64 AMI. Operators are responsible for adding the kubernetes.io/arch=arm64:NoSchedule taint via customNodeTaints on arm64 pools so amd64-only workloads don’t land there. Control plane and existing x86_64 pools are unaffected.external-dns-crossplane-resources HelmRelease to manage Route53 records via Crossplane, injecting clusterName, accountID, baseDomain, oidcDomain, and oidcDomains.arm64 support to Karpenter node pools.external-dns IAM role ARN annotation to use {name}-external-dns instead of {name}-Route53Manager-Role.aws-oidc-domain Helm helper (China-aware) and use it in cert-manager-crossplane-resources and external-dns-crossplane-resources templates.image.registry to the cilium app (roadmap#3264). cilium-app no longer has that value — the registry is part of each image’s repository there now. The line was already a no-op: awsContainerImageRegistry has returned a constant gsoci.azurecr.io since #1433 removed its cn- branch, which is exactly what the cilium chart already defaults to. Rendered manifests lose only those two lines. awsContainerImageRegistry itself stays — coredns, cloud-provider-aws, aws-ebs-csi-driver, karpenter and cilium-cleanup still use it.cluster-shared library chart dependency.-role suffix got removed when switching over from operator-created IAM objects to cluster-autoscaler-crossplane-resources.global.nodePools.*.limits.cpu).cert-manager-crossplane-resources HelmRelease.cluster-autoscaler inCluster in Azure.cluster-api-autoscaler-node-group-min-size/max-size) when minSize/maxSize are set on a node pool (only in Azure).KamajiControlPlane resource, Kamaji etcd HelmRelease, automation RBAC, and cleanup jobs. (#740)coredns HelmRelease values to the new coredns-app zone-aware interface.coredns control plane helper to align with the controlPlane values key.cert-manager to v4.0.0 and migrated the values to match the new chart’s schema.global.apps.<name>.extraConfigs.name field.cluster.x-k8s.io/replicas-managed-by: "external-autoscaler") on MachinePools.providerIntegration.resourcesApi.machinePoolResourcesEnabled into an object providerIntegration.resourcesApi.machinePoolResources and move externalAutoscaler under it (now providerIntegration.resourcesApi.machinePoolResources.externalAutoscaler).global.release.version if using Releases to give a better rendering error message.observability-bundle with the management cluster name.kyverno-crds dependency for cluster-autoscaler when deployed inCluster.global.apps.clusterProbes with default module http_2xx_insecure for self-signed certificates..Chart.AppVersion in app.kubernetes.io/version label.v1beta2.strategy.rollingUpdate.deletePolicy from node pools.aws-ebs-csi-driver-app to aws-ebs-csi-driver. The OCI catalog artifact name changes accordingly.upstream: key in the bundle values.yaml. The giantswarm.workloadValues helper handles the transformation automatically, so bundle users only need to place overrides under upstream: in their App CR ConfigMap.upstream: key, and extras (verticalPodAutoscaler, networkPolicy, global.podSecurityStandards) are at the top level.AWS_ROLE_ARN, AWS_WEB_IDENTITY_TOKEN_FILE), projected ServiceAccountToken volume, and AWS_REGION to the EBS CSI controller, enabling IRSA authentication in CAPA clusters.proxy.http, proxy.noProxy) to the upstream chart (proxy.http_proxy, proxy.no_proxy) when set..github/release-pr-body.md.io.giantswarm.application.audience: all annotation to publish the app to the customer Backstage catalog.io.giantswarm.application.* format for both the app and bundle charts.ServiceMonitor to avoid rendering without them if CRDs are not installed yetupdateMode for ebs-csi-node DaemonSet from Auto to Initial. VPA cannot evict DaemonSet pods, so Auto mode silently produces recommendations without ever applying them. Initial correctly sets resources at pod creation time.aws-node-termination-handler HelmRelease dependsOn list configurable via awsNodeTerminationHandler.dependsOn.cluster.x-k8s.io/cluster-name label to the HelmReleases.dependsOn from the aws-node-termination-handler HelmRelease to the prometheus-operator-crd HelmRelease.gsoci.azurecr.io/giantswarm/aws-node-termination-handler for the container image.cluster-values ConfigMap reference from aws-node-termination-handler HelmRelease. Pass clusterID explicitly via inline values instead.io.giantswarm.application.audience: all annotation to publish the app to the customer Backstage catalog.io.giantswarm.application.* format.appVersion as the default version for the restarter container image./metrics keeps returning 200 and serving the remaining metrics when a duplicate series is emitted.tls.crt holds a concatenated certificate chain.cert_gen now sets a certificate serial number, which defaulted to 0 for every generated certificate.kube-system namespace.exec format error.serialnumber label to the cert_exporter_not_after and cert_exporter_secret_not_after metrics so concatenated certificates no longer collide into identical series. The collision made the registry fail Gather(), which blanked out the entire /metrics endpoint (regression from v2.10.1)./metrics with ContinueOnError so a single problematic metric can no longer fail the whole scrape.docker-kubectl image to support arm64 architecturecert-manager to upstream version v1.20.3.cert-manager-edit ClusterRole no longer grants create on challenges.acme.cert-manager.io, nor create/patch/update on orders.acme.cert-manager.io.envFrom values for controller, webhook and cainjector.cert-manager chart will now need to use the cert-manager path instead of root. For example, the value crds.enabled: true must now be set with cert-manager.crds.enabled: true.helm/cert-manager/charts/ and adapted sync scripts to follow new structure.WorkloadIdentity resource for AKS provider.sync/verify-images.sh, run as the last step of sync/sync.sh and therefore in CI: renders the chart across four scenarios covering every image-bearing component and fails the sync unless each image is served from gsoci.azurecr.io/giantswarm/ or is explicitly listed in sync/unmirrored-images.txt. It also asserts that every configured image actually appears in a render, so a scenario that stops covering an image fails instead of silently narrowing the check. This replaces the removed patch’s fail guards, which were the only thing that made image drift visible on an upstream bump..github/release-pr-body.md.hubble.tls.auto.method: helm to cronJob (giantswarm#37201). The helm method minted certificates once and never renewed them, deterministically breaking hubble-relay when the leaf certs (1 year) or the CA (3 years) expired. With the cronJob method a hubble-generate-certs CronJob re-issues the leaf certificates every 4 months. On upgrade, the Helm-owned cilium-ca, hubble-server-certs and hubble-relay-client-certs secrets are deleted and re-created by a one-shot certgen job with a fresh 3-year CA; agents and hubble-relay hot-reload the new certificates without restarts.--ca-enforce-validity-throughout-leaves-duration flag (new value certgen.enforceCAValidityThroughoutLeavesDuration, default true): the certgen job now fails roughly one year before the CA would no longer cover new leaf certificates, instead of silently issuing leafs that outlive the CA. certgen never rotates an existing CA on its own (cilium/certgen#500).hubble-relay podAffinity to preferredDuringSchedulingIgnoredDuringExecution so Karpenter can drain the last cilium-agent-bearing node during upgrades/consolidation instead of getting stuck on a required co-location with cilium.image.registry value and the sync patch behind it (roadmap#3264). The registry is now part of each image’s repository value, exactly as upstream ships it, so the chart no longer patches upstream’s cilium.image/cilium.operator.image helpers into a (list $ <image>) signature and no longer rewrites all 35 call sites with sed. helm/cilium/templates/_helpers.tpl and helm/cilium/templates/cilium-operator/_helpers.tpl are now byte-identical to upstream, and 15 template patches disappear from diffs/.repository already carried a registry while the removed patch prefixed image.registry on top: gsoci.azurecr.io/ghcr.io/spiffe/spire-server, .../spire-agent, .../docker.io/library/busybox (SPIRE mutual authentication) and .../docker.io/istio/ztunnel (encryption.type=ztunnel). All four now resolve. Latent until now because both features are disabled by default.hubble/tls-cronjob and clustermesh-apiserver/tls-cronjob): the image reference was not converted to the Giant Swarm cilium.image helper signature because the image-registries sync patch only processed *.yaml templates, so enabling the cronJob method failed with required list, but got "map".hubble-generate-certs and clustermesh-apiserver-generate-certs certgen pods egress to the Kubernetes API.architect-orb so this chart also gets pushed to the OCI registry.enabled flag for the agent, hubble and operator.kube-system namespace.giantswarm namespace.resourceslices.resource.k8s.io.. suffix.cluster-catalog.forward, cache, and kubernetes block parameters in the structured zone config:forward: maxIdleConns, maxConnectAttempts, dohMethod, tls, tlsServername, next, nextOnNodata, failfastAllUnhealthyUpstreams, failover, resolver.cache: zones, serveStale.verifyTimeout, disable.successZones, disable.denialZones.kubernetes: endpoint, tls, kubeconfig, apiserverQPS, apiserverBurst, apiserverMaxInflight, namespaceLabels, fallthroughZones, multicluster, startupTimeout.app-build-suite 2.2.0 (via architect orb 9.6.0): the packaged chart now carries Artifact Hub metadata (artifacthub.io/license and a Support link). No functional chart changes.values.yaml comments to the # @schema / # -- (helm-docs) convention and remove section-header dividers, so values.schema.json and the chart README.md are generated from the values file. Rendered manifests are unchanged.coredns image to 1.14.4.coredns image to 1.14.3.health directive in only the . server block. The health plugin is process-wide and can be enabled in just one Server Block, so emitting it in every zone block was invalid. ready is kept in every block (its readiness is aggregated across blocks).coredns.*.cache.serveStale.refreshMode schema enum to immediate/verify (was immediate/background), matching the CoreDNS cache plugin.updatePolicy.updateMode from deprecated Auto to Recreate.namespaceOverride value to support deploying external-dns into a different namespace than the Helm release (useful for subchart usage).enableGatewayListenerSets value to opt into Gateway API ListenerSet resource support.sourceNamespace value (used with namespaced=true) to watch resources in a namespace different from the deployment namespace.gatewayNamespace is set, reducing required permissions.extraArgs map handling: boolean values now render as --flag / --no-flag and string values are properly quoted.serviceAccount.name/serviceAccount.namespace and azure.mountPath values.aws.*. Root-level values remain supported as a fallback for backward compatibility.serviceAccount subject instead of a wildcard match.azure provider in addition to aks.baseDomain value.probe_target label to ensure unique synthetic metricscluster.x-k8s.io/cluster-name label to the karpenter HelmRelease.iam:GetInstanceProfile permission to Karpenter IAM role.helm.sh/resource-policy: keep on the karpenter CRDs so they survive HelmRelease uninstall and prevent cascade-deleting NodePool/NodeClaim/EC2NodeClass resources..github/release-pr-body.md.kube-system to avoid depending on creation of the policy-exceptions namespace.values-schema-violation errors caused by app-platform injected properties.global.podSecurityStandards.enforced helm value. The Kyverno PolicyException in pss-exceptions.yaml is now rendered unconditionally.io.giantswarm.application.audience: all annotation to publish the app to the customer Backstage catalog.io.giantswarm.application.* format.exec format error.docker-kubectl init container from 1.25.4 to 1.36.0.konnectivity-agent.kube-system namespace.ListenerSet and ReferenceGrant resources.v1 for Gateway, GatewayClass, HTTPRoute, GRPCRoute, TLSRoute and BackendTLSPolicy.kube-prometheus-stack and prometheus-operator-crd to 22.0.0alloy-app to 0.21.0priority field (1-150, default 25) on extraConfigs entries. spec.valuesFrom now reproduces the App platform merge order — all configMaps before all secrets (a secret always overrides a configMap), each kind ordered by priority around the user-config layer — preserving the App CR merge semantics after the migration. (giantswarm#36096)alloy-podlogs-crds chart.blackbox-exporter. Uses updateMode: Initial for DaemonSet and updateMode: Auto for Deployment.kubernetes.io/arch=arm64:NoSchedule so the DaemonSet schedules on ARM worker nodes.probe_target label to ensure unique synthetic metricsio.giantswarm.application.managed chart annotation for Backstage visibility.cluster-reader ClusterRole (off by default, enabled via clusterReader.enabled: true) that aggregates into the built-in view ClusterRole and grants read access (get/list/watch) on cluster-scoped resources.kyverno-policy-operator (app) to v0.2.3.policy-api (app) to v0.0.9.starboard-exporter (app) to v1.2.3.trivy (app) to v0.17.0.trivy-operator (app) to v0.13.3..github/release-pr-body.md.kyverno-policies (app) to v0.26.1.starboard-exporter (app) to v1.1.4.trivy (app) to v0.16.0.trivy-operator (app) to v0.13.2.cloudnative-pg (app) to v0.1.0.trivy (app) to v0.15.0.falco (app) to v0.12.0.priority field (1-150, default 25) on extraConfigs entries. spec.valuesFrom now reproduces the App platform merge order — all configMaps before all secrets (a secret always overrides a configMap), each kind ordered by priority around the user-config layer — preserving the App CR merge semantics after the migration. (giantswarm#36096)kyverno (app) to v0.24.2.kyverno-crds (app) to v1.17.0.kyverno-policies (app) to v0.25.0.kyverno-policy-operator (app) to v0.2.2.kubescape (app) to v0.1.0.node.cloudprovider.kubernetes.io/uninitialized.teleport-kube-agent to upstream version v18.7.6.