From d54741660de9612a89950acafafe6eebb78a7321 Mon Sep 17 00:00:00 2001 From: Patrick Hermann Date: Tue, 11 Aug 2026 13:45:47 +0000 Subject: [PATCH] feat(openebs): make the Loki/MinIO/Alloy observability stack toggleable MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The openebs chart ships an observability stack enabled by default: a Loki StatefulSet, the MinIO StatefulSet backing it, an Alloy DaemonSet, and two extra StorageClasses (openebs-loki-localpv, openebs-minio-localpv). The localpv profile disabled the lvm/zfs/mayastor engines but left all of that on, so every consumer of this helmfile got seven pods of logging nobody asked for. On a small cluster it is worse than unnecessary. The Loki StatefulSet wants three replicas with pod anti-affinity, so on a 1+2 kind cluster the two workers take replicas 1 and 2, the control-plane node is tainted, and replica 0 sits Pending forever — a permanently non-Running pod that has to be explained to everyone who looks at the cluster. Seen on the u26-kind3 machinery cluster. Both toggles default to TRUE, so this changes nothing for anyone today. That is deliberate: this helmfile is consumed unpinned (`git::...helm.git`, no ref), so a default flip would reach every cluster on its next apply rather than when someone chose it. Turn off with: helmfile apply -f infra/openebs.yaml.gotmpl \ --state-values-set openebs_loki_enabled=false,openebs_alloy_enabled=false MinIO has no toggle of its own — it is Loki's object store and a sub-dependency, so loki.enabled=false is what removes it. openebs-hostpath, the StorageClass the fleet actually uses, is unaffected by either toggle; verified by rendering the helmfile both ways. --- infra/openebs.yaml.gotmpl | 15 +++++++++++++++ infra/values/openebs-localpv.values.yaml.gotmpl | 12 ++++++++++++ 2 files changed, 27 insertions(+) diff --git a/infra/openebs.yaml.gotmpl b/infra/openebs.yaml.gotmpl index e6ddd5e4c..c00942569 100644 --- a/infra/openebs.yaml.gotmpl +++ b/infra/openebs.yaml.gotmpl @@ -9,6 +9,21 @@ environments: - openebs_local_lvm_enabled: false - openebs_local_zfs_enabled: false - openebs_replicated_mayastor_enabled: false + # The chart ships an observability stack on by default: a Loki + # StatefulSet, the MinIO StatefulSet backing it, an Alloy DaemonSet, and + # two extra StorageClasses (openebs-loki-localpv, openebs-minio-localpv). + # Left ON here so this file changes nothing for existing consumers — it is + # unpinned (`git::...helm.git`, no ref), so a default flip would reach + # every cluster on its next apply. + # + # Turn both off on small clusters. On a 1+2 kind cluster the Loki + # StatefulSet cannot even schedule: it wants 3 replicas with pod + # anti-affinity, the two workers take replicas 1 and 2 and the + # control-plane node is tainted, so replica 0 sits Pending forever. + # openebs-hostpath — the StorageClass the fleet actually uses — is + # unaffected by either toggle. + - openebs_loki_enabled: true + - openebs_alloy_enabled: true - version: 4.5.1 --- releases: diff --git a/infra/values/openebs-localpv.values.yaml.gotmpl b/infra/values/openebs-localpv.values.yaml.gotmpl index 37557302d..1f4aedc28 100644 --- a/infra/values/openebs-localpv.values.yaml.gotmpl +++ b/infra/values/openebs-localpv.values.yaml.gotmpl @@ -19,3 +19,15 @@ engines: replicated: mayastor: enabled: {{ .Values.openebs_replicated_mayastor_enabled }} + +# Observability. `loki.enabled: false` drops BOTH the Loki and the MinIO +# StatefulSets — MinIO is Loki's object store, a sub-dependency with no toggle +# of its own — plus the openebs-loki-localpv / openebs-minio-localpv +# StorageClasses that loki.localpvScConfig emits. `alloy.enabled: false` drops +# the log-shipper DaemonSet that feeds it; leaving Alloy on with Loki off would +# ship logs at nothing. +loki: + enabled: {{ .Values.openebs_loki_enabled }} + +alloy: + enabled: {{ .Values.openebs_alloy_enabled }}