rancher-logging-exit — Rancher-bundled → upstream logging-operator
Migration reference, verified 2026-07-22. Target: upstream ≥6.7.0 (6.6.0 fixes
the CVE but breaks newline-containing passwords, #2254 — 6.7.0 has the corrected
fix). Version matrix authority: k8s-components-checker
references/compat/rancher-logging.md. Day-2 configuration of the migrated
pipeline: the logging-operator skill.
Why migrate (the honest urgency statement)
- Frozen: every Rancher minor 2.11 → 2.14 (and 2.15-dev) ships the same
upstream base operator 4.10.0 (Oct 2024) — only
-rancher.N chart respins.
The -rancher.N fork is chart-level only (rancher/ob-team-charts); the
operator image is a stock upstream mirror. "Wait for Rancher" has been dead for
20+ months of releases.
- CVE-2026-54680 (GHSA-mjqf-28ph-426h, CVSS 9.9): operator ≤6.5.2 renders
CRD/secret values into fluent.conf unescaped — a newline in a Flow/Output field
or referenced Secret injects arbitrary fluentd directives (
<match **> @type exec ⇒ RCE in the aggregator). 4.10.0 is affected; the fix exists only on
the 6.x line; no SUSE fix exists as of 2026-07-22 (verified: SUSE CVE page
404, NVD reserved, Rancher advisories silent, no ob-team-charts logging commits
post-CVE) and none CAN ship as a chart respin.
- Who can trigger it: the chart aggregates a
logging-admin ClusterRole
(verbs * on flows/outputs) into the k8s admin role ⇒ any Rancher
project-owner. Blast radius: the aggregator holds every output credential and
any IRSA/Workload-Identity role annotated onto its SA. Same vuln class as
Rancher's 2019 CVE-2019-12303.
- Also stale: fluent-bit 3.1.8 (in-range for the Nov-2025 five-CVE set — though
NOT exploitable in the default tail→k8s-filter→forward pipeline; frame as
"outdated", not "default RCE"), fluentd v1.16 (upstream at 1.19).
- Not formally deprecated — Rancher docs still describe it. The story is
"abandonware with an open critical", not EOL notice.
Strategy selection
| Situation |
Strategy |
Reference |
| Healthy bundled install, minimal gap wanted (default) |
A: release-secret surgery (maintainer-endorsed) |
references/runbook.md |
| Want a clean slate / config redesign anyway |
B: backup → uninstall → reinstall (corrected) |
references/runbook.md §B |
| Stale debris: old CRDs + orphaned CRs, no operator running |
Debris cleanup then fresh install |
references/entry-states.md |
| Windows nodes using nodeAgents |
STOP — no 6.x path; plan separately |
references/cr-compat.md §nodeAgents |
Strategy A in one breath: mirror images/chart (air-gap step zero) → back up all
CRs + rendered config → scale down the rancher operator → back up then delete the
sh.helm.release.v1.rancher-logging.* and ...rancher-logging-crd.* Secrets
(releases vanish from Helm/Rancher UI; CRDs, CRs, and the running fluentd/fluent-bit
keep working) → server-side-apply 6.7.0 CRDs → helm-install upstream operator
reusing the Logging name rancher-logging-root + controlNamespace
cattle-logging-system (preserves buffer PVCs) → validate → clean up Rancher
extras. Near-zero collection gap.
Never run helm uninstall rancher-logging-crd on a live install: the CRD chart
has no helm.sh/resource-policy: keep — uninstall deletes the CRDs, the API
server cascade-deletes every CR, and the operator-owned fluentd/fluent-bit go with
them. Full collection outage, possible config loss.
The five technical facts the whole migration hinges on
- API group/version identical both sides (
logging.banzaicloud.io/v1beta1
storage) — backed-up CRs re-apply cleanly, no conversion.
- Failure mode is silent pruning, not errors: fields removed 4.10→6.7
(sumologic, enhanceK8s, ClusterOutput
enabledNamespaces, nodeAgents) are
silently dropped on re-apply. Pre-flight: server-side dry-run diff
(references/cr-compat.md).
- CRD applies must be
kubectl apply --server-side --force-conflicts —
828KB/557KB CRDs exceed the client-side annotation limit. Also: the upstream
chart's crds/ dir is silently skipped when any CRD already exists — a
naive install runs 6.7 against stale 4.10 schemas with no error.
- Buffer PVCs survive iff Logging name + controlNamespace are preserved
(StatefulSet
<logging>-fluentd, volume fluentd-buffer — stable across
4.10→6.7). Deleting cattle-logging-system destroys them.
- Escaping cutover check: 4.10 renders values unescaped, 6.7 escapes —
capture the rendered
*-fluentd-app secret before, diff after, for any value
containing quotes/backslashes/newlines.
Where to go next
| Task |
Read |
| Full step-by-step runbooks (A: release-secret; B: clean reinstall) + validation |
references/runbook.md |
| Air-gap prep: image list, OCI chart mirroring, values overrides (no systemDefaultRegistry upstream) |
references/airgap-prep.md |
| CR field diffs, pruning pre-flight, escaping diff, Rancher-chart deltas (journald DaemonSets, Windows), rollback |
references/cr-compat.md |
| Entry states incl. stale-debris cleanup and legacy v1 logging CRDs |
references/entry-states.md |
| CVE detail, RBAC exploitability, fluent-bit CVE precision |
references/security-urgency.md |
| Per-Rancher-minor chart/image matrix |
k8s-components-checker references/compat/rancher-logging.md |
1---2name: rancher-logging-exit3description: Migrate off the Rancher-bundled `rancher-logging` chart (cattle-logging-system, rancher/mirrored-kube-logging-* images) to the upstream kube-logging logging-operator ≥6.7.0 — air-gap-first. Rancher 2.11 through 2.15-dev all bundle a frozen operator 4.10.0 that is inside the affected range of CVE-2026-54680 (CVSS 9.9 config-injection RCE, no SUSE fix) — so the exit is security-urgent. Covers the maintainer-endorsed helm-release-secret strategy (near-zero gap; NOT `helm uninstall rancher-logging-crd`, which cascade-deletes every CR and the data plane), CR compatibility 4.10→6.7 (silent field pruning), server-side CRD apply (828KB CRDs), buffer-PVC preservation, air-gap image/chart mirroring, rollback, and stale-CRD debris cleanup.4---56# rancher-logging-exit — Rancher-bundled → upstream logging-operator78Migration reference, verified 2026-07-22. Target: **upstream ≥6.7.0** (6.6.0 fixes9the CVE but breaks newline-containing passwords, #2254 — 6.7.0 has the corrected10fix). Version matrix authority: `k8s-components-checker`11`references/compat/rancher-logging.md`. Day-2 configuration of the migrated12pipeline: the **logging-operator** skill.1314## Why migrate (the honest urgency statement)1516- **Frozen**: every Rancher minor 2.11 → 2.14 (and 2.15-dev) ships the same17 upstream base **operator 4.10.0** (Oct 2024) — only `-rancher.N` chart respins.18 The `-rancher.N` fork is **chart-level only** (rancher/ob-team-charts); the19 operator image is a stock upstream mirror. "Wait for Rancher" has been dead for20 20+ months of releases.21- **CVE-2026-54680** (GHSA-mjqf-28ph-426h, CVSS 9.9): operator ≤6.5.2 renders22 CRD/secret values into fluent.conf unescaped — a newline in a Flow/Output field23 or referenced Secret injects arbitrary fluentd directives (`<match **>24 @type exec` ⇒ RCE in the aggregator). 4.10.0 is affected; the fix exists only on25 the 6.x line; **no SUSE fix exists as of 2026-07-22** (verified: SUSE CVE page26 404, NVD reserved, Rancher advisories silent, no ob-team-charts logging commits27 post-CVE) and none CAN ship as a chart respin.28- **Who can trigger it**: the chart aggregates a `logging-admin` ClusterRole29 (verbs `*` on flows/outputs) into the k8s `admin` role ⇒ **any Rancher30 project-owner**. Blast radius: the aggregator holds every output credential and31 any IRSA/Workload-Identity role annotated onto its SA. Same vuln class as32 Rancher's 2019 CVE-2019-12303.33- Also stale: fluent-bit 3.1.8 (in-range for the Nov-2025 five-CVE set — though34 NOT exploitable in the default tail→k8s-filter→forward pipeline; frame as35 "outdated", not "default RCE"), fluentd v1.16 (upstream at 1.19).36- Not formally deprecated — Rancher docs still describe it. The story is37 "abandonware with an open critical", not EOL notice.3839## Strategy selection4041| Situation | Strategy | Reference |42|---|---|---|43| Healthy bundled install, minimal gap wanted (default) | **A: release-secret surgery** (maintainer-endorsed) | `references/runbook.md` |44| Want a clean slate / config redesign anyway | B: backup → uninstall → reinstall (corrected) | `references/runbook.md` §B |45| Stale debris: old CRDs + orphaned CRs, no operator running | Debris cleanup then fresh install | `references/entry-states.md` |46| Windows nodes using nodeAgents | STOP — no 6.x path; plan separately | `references/cr-compat.md` §nodeAgents |4748**Strategy A in one breath**: mirror images/chart (air-gap step zero) → back up all49CRs + rendered config → scale down the rancher operator → back up then **delete the50`sh.helm.release.v1.rancher-logging.*` and `...rancher-logging-crd.*` Secrets**51(releases vanish from Helm/Rancher UI; CRDs, CRs, and the running fluentd/fluent-bit52keep working) → server-side-apply 6.7.0 CRDs → helm-install upstream operator53reusing the Logging name `rancher-logging-root` + controlNamespace54`cattle-logging-system` (preserves buffer PVCs) → validate → clean up Rancher55extras. Near-zero collection gap.5657**Never run `helm uninstall rancher-logging-crd` on a live install**: the CRD chart58has **no `helm.sh/resource-policy: keep`** — uninstall deletes the CRDs, the API59server cascade-deletes every CR, and the operator-owned fluentd/fluent-bit go with60them. Full collection outage, possible config loss.6162## The five technical facts the whole migration hinges on63641. **API group/version identical** both sides (`logging.banzaicloud.io/v1beta1`65 storage) — backed-up CRs re-apply cleanly, no conversion.662. **Failure mode is silent pruning, not errors**: fields removed 4.10→6.767 (sumologic, enhanceK8s, ClusterOutput `enabledNamespaces`, nodeAgents) are68 silently dropped on re-apply. Pre-flight: server-side dry-run diff69 (`references/cr-compat.md`).703. **CRD applies must be `kubectl apply --server-side --force-conflicts`** —71 828KB/557KB CRDs exceed the client-side annotation limit. Also: the upstream72 chart's `crds/` dir is **silently skipped** when any CRD already exists — a73 naive install runs 6.7 against stale 4.10 schemas with no error.744. **Buffer PVCs survive** iff Logging name + controlNamespace are preserved75 (StatefulSet `<logging>-fluentd`, volume `fluentd-buffer` — stable across76 4.10→6.7). Deleting cattle-logging-system destroys them.775. **Escaping cutover check**: 4.10 renders values unescaped, 6.7 escapes —78 capture the rendered `*-fluentd-app` secret before, diff after, for any value79 containing quotes/backslashes/newlines.8081## Where to go next8283| Task | Read |84|---|---|85| Full step-by-step runbooks (A: release-secret; B: clean reinstall) + validation | `references/runbook.md` |86| Air-gap prep: image list, OCI chart mirroring, values overrides (no systemDefaultRegistry upstream) | `references/airgap-prep.md` |87| CR field diffs, pruning pre-flight, escaping diff, Rancher-chart deltas (journald DaemonSets, Windows), rollback | `references/cr-compat.md` |88| Entry states incl. stale-debris cleanup and legacy v1 logging CRDs | `references/entry-states.md` |89| CVE detail, RBAC exploitability, fluent-bit CVE precision | `references/security-urgency.md` |90| Per-Rancher-minor chart/image matrix | k8s-components-checker `references/compat/rancher-logging.md` |