Repository navigation
opensearch: carry vm.max_map_count in the node contract so the operator DaemonSet can go #4144
Copy link
Copy link
Open
Labels
area/databaseIssues or PRs related to managed databases (postgres, mariadb, redis, etcd, kafka, clickhouse)Issues or PRs related to managed databases (postgres, mariadb, redis, etcd, kafka, clickhouse)area/platformIssues or PRs related to platform infrastructure (bundle, flux, talos, installer)Issues or PRs related to platform infrastructure (bundle, flux, talos, installer)kind/featureCategorizes issue or PR as related to a new featureCategorizes issue or PR as related to a new featurepriority/important-longtermImportant over the long term, but may not be staffed and/or may need multiple releases to completeImportant over the long term, but may not be staffed and/or may need multiple releases to completetriage/acceptedIndicates an issue is ready to be actively worked onIndicates an issue is ready to be actively worked on
Description
Activity
- addedkind/featureCategorizes issue or PR as related to a new featureCategorizes issue or PR as related to a new featurearea/platformIssues or PRs related to platform infrastructure (bundle, flux, talos, installer)Issues or PRs related to platform infrastructure (bundle, flux, talos, installer)
on Sep 7, 2026 - addedtriage/needs-triageIndicates an issue needs triage by a maintainerIndicates an issue needs triage by a maintainer
on Sep 7, 2026 - addedarea/databaseIssues or PRs related to managed databases (postgres, mariadb, redis, etcd, kafka, clickhouse)Issues or PRs related to managed databases (postgres, mariadb, redis, etcd, kafka, clickhouse)triage/acceptedIndicates an issue is ready to be actively worked onIndicates an issue is ready to be actively worked onpriority/important-longtermImportant over the long term, but may not be staffed and/or may need multiple releases to completeImportant over the long term, but may not be staffed and/or may need multiple releases to completeand removedtriage/needs-triageIndicates an issue needs triage by a maintainerIndicates an issue needs triage by a maintainer
on Sep 23, 2026
Metadata
Metadata
Assignees
Labels
area/databaseIssues or PRs related to managed databases (postgres, mariadb, redis, etcd, kafka, clickhouse)Issues or PRs related to managed databases (postgres, mariadb, redis, etcd, kafka, clickhouse)area/platformIssues or PRs related to platform infrastructure (bundle, flux, talos, installer)Issues or PRs related to platform infrastructure (bundle, flux, talos, installer)kind/featureCategorizes issue or PR as related to a new featureCategorizes issue or PR as related to a new featurepriority/important-longtermImportant over the long term, but may not be staffed and/or may need multiple releases to completeImportant over the long term, but may not be staffed and/or may need multiple releases to completetriage/acceptedIndicates an issue is ready to be actively worked onIndicates an issue is ready to be actively worked on
Problem / motivation
OpenSearch refuses to start unless
vm.max_map_countis at least 262144, and Kubernetes cannot set that sysctl from a Pod: it is not in kubelet's namespaced set, so the only paths are node configuration or a privileged container. Today nothing in the node contract carries it: the Talos profiles underpackages/core/talosset nosysctls, the talm charts (charts/cozystack/templates/controlplane.yaml,worker.yaml) carry nosysctlsblock, and ansible-cozystack does not set it either, so nodes sit at the kernel default of 65530. #4131 covers the immediate symptom (the operator's privileged init container is refused in tenant namespaces) and gets a DaemonSet in the operator's namespace as the runtime fix; this issue is the durable half.Proposed solution
Carry
vm.max_map_count: 262144in the node contract everywhere a Cozystack node is produced:machine.sysctlsin the talm chart templates, the equivalent in the ansible-cozystack prepare playbooks, the Talos profiles or e2e cluster preparation used by CI, and the documentation for hand-prepared nodes. Once every supported install path sets it, the DaemonSet from #4131 can be removed and the operator flag stays off.Scope check
Alternatives considered
Keeping the DaemonSet forever: it works, but it is a privileged Pod on every node for one optional application.
node.store.allow_mmap: falsein the chart: drops the requirement but moves every OpenSearch instance ontoniofs, which upstream treats as the fallback store, not the default.Additional context
Found while running the first e2e suite for opensearch (#2682, run 34071594228).