Observability

  • Added

    • Add loki.write.requestMirror, an optional RequestMirror filter on the Loki write route. Disabled by default.
    • Add opt-in Basic Auth read routes for Mimir and Loki on a dedicated hostname (basicAuth.*, disabled by default).
  • Added

    • Brand Grafana with the Giant Swarm logo mark and favicon, by mounting the assets in helm/grafana/branding over the ones the Grafana image ships. Set grafana.extraConfigmapMounts to [] to get Grafana’s own branding back.
    • Add make branding-verify (run by the verify-branding CI job) and make branding-update, which keep the hashed logo path in sync with the Grafana image and generate the pod annotation that rolls the deployment when a branding asset changes.

    Changed

    • Upgrade grafana chart: 12.10.3 => 12.11.2
    • Upgrade grafana (appVersion): 13.1.2 => 13.2.0
  • Changed

    • Upgrade upstream loki helm chart from v13 (13.7.2) to v18 (18.10.1). Loki app version goes from 3.7.2 to 3.7.6.
    • Breaking: loki.networkPolicy.flavor is gone. Upstream dropped Cilium network policy support, so this chart renders the CiliumNetworkPolicy resources itself, switched by the new top-level ciliumNetworkPolicy.enabled (default true). Set it to false where you used flavor: kubernetes. The standard NetworkPolicy resources now render alongside them.
    • The ServiceMonitor is no longer gated on the prometheus-operator CRD being present: set loki.monitoring.serviceMonitor.enabled: false on clusters without it.
    • The built-in MinIO subchart is deprecated upstream: loki.minio.enabled now also needs loki.ignoreMinioDeprecation: true, and goes away on 2026-10-31.
  • Added

    • Add startsAt, endsAt, and duration fields to the v1alpha2 Silence CRD for explicit silence scheduling. duration accepts weeks (w), days (d), hours (h), minutes (m), and seconds (s), each at most once and ordered largest to smallest: "7d", "2w", "1d12h". endsAt and duration are mutually exclusive. When neither is set, the valid-until annotation is used as a fallback.

    Changed

    • Regenerate .github/workflows/zz_generated.*.yaml via devctl to use the centralized reusable workflow, removing the Node-20 mindsers/changelog-reader-action dependency.
    • Update Go dependencies, which resolves CVE-2026-63209 (github.com/klauspost/compress) and CVE-2026-56852 (golang.org/x/text) and removes their .nancy-ignore entries.

    Fixed

    • Quote the = scalars in the generated matchType CRD schema so the rendered chart parses under PyYAML (unblocks the HelmTemplateValidator step added in app-build-suite 2.2.0).
    • Fix various CVEs by updating dependencies:
    • Skip failing CI jobs using private secrets for external contributions from fork
    • Replace deprecated controller-runtime scheme.Builder with apimachinery runtime.NewSchemeBuilder
    • Fix gosec, goconst and errcheck linter errors in tests
  • Changed

    • Upgrade upstream loki helm chart from v13.5.0 to v13.7.2. Loki app version goes from 3.7.1 to 3.7.2 (CVE fixes, ruler panic fix, S3 SDK bump).
    • k8s-sidecar bumped 2.7.1 → 2.7.3.
  • Added

    • Support for Azure Workload Identity

    Changed

    • Move the AWS and Azure deployment instructions out of the README into docs/deploying-on-aws.md and docs/deploying-on-azure.md.

    Fixed

    • Add a kubernetes-flavor NetworkPolicy granting the backend pods egress to the kube-apiserver (TCP 443/6443) to fix standalone platforms and CI tests.
    • Fix ABS config to not override AppVersion in Chart.yaml
  • Changed

    • Fix ABS config to not override AppVersion in Chart.yaml
    • Upgrade grafana chart: 12.3.0 => 12.10.3
    • Upgrade grafana (appVersion): 13.0.1 => 13.1.2
    • Upgrade postgresql-cnpg: 18.3 => 18.4 — the rolling DB upgrade can cause ~5min of Grafana downtime.

    Removed

    • The upstream chart no longer creates a Role/RoleBinding when grafana.rbac.namespaced is false (our default). Those objects were empty, sidecar permissions come from the ClusterRole.
  • Changed

    • Values: Generate schema for Alloy PodLogs CRDs.
    • Values: Add Cilium as dependency for Alloy apps & Kube Prometheus Stack.
    • Values: Update Alloy apps to v0.21.2.

    Removed

    • Values: Remove unused catalog.
  • Added

    • Add a nav bar between the four Envoy Gateway dashboards, like the Cilium ones have.

    Changed

    • Give Envoy Gateway | Clusters a readable uid. Links to its old random uid stop resolving.
    • Rename the cluster variable on Cilium Agent logs to cluster_id, matching the other Cilium dashboards so the selection carries across links.
    • Rename workload_cluster to cluster_id on the Envoy Gateway dashboards, so the selection carries when moving between them. On Clusters its label is K8s Cluster, to tell it apart from the Envoy cluster selector.
    • Hide the datasource selector on the Cilium and Envoy Gateway dashboards and point it at the default datasource, instead of the exported uids that only resolved in the Grafana a board came from.

    Removed

    • Drop the Cluster selector from Envoy Gateway | Clusters. Every panel also matched on the namespace, resource and rule selectors, which compose the same Envoy cluster name.

    Fixed

    • Give Cilium | Agent its own uid instead of reusing the retired Cilium metrics dashboard’s, which kept it from being created.
    • Give Envoy Gateway | Control Plane its own uid instead of reusing the retired Global dashboard’s, which kept it from being created.
  • Changed

    • Chart: Install Vertical Pod Autoscaler independent of API availability.