let _concerns_lib = import "schemas/lib/concerns.ncl" in { K0s = { version | String | doc "k0s release version (github.com/k0sproject/k0s releases, format: X.Y.Z+k0s.N)" | default = "1.35.3+k0s.0", role | std.enum.TagOrString | doc "Node role: controller+worker runs both planes on the same node (single-node mode)" | default = 'controller_worker, data_dir | String | doc "k0s data directory — mount a block volume here for persistent state" | default = "/var/lib/k0s", disable_ipv6 | Bool | doc "Disable IPv6 via sysctl at install time" | default = true, cluster_name | String | doc "Cluster name embedded in k0s config and kubeconfig context" | default = "k0s", disable_kube_proxy | Bool | doc "Set spec.network.kubeProxy.disabled=true in k0s.yaml — required when Cilium replaces kube-proxy via eBPF" | default = true, storage_backend | std.enum.TagOrString | doc "Datastore backend: dqlite (kine+dqlite, recommended for single-node edge), sqlite (kine+SQLite), etcd (default k0s, for HA multi-node)" | default = 'dqlite, kine_dir | String | doc "Directory for kine datastore files (dqlite or sqlite). Must be on a persistent volume. Defaults to /kine" | default = "", # ServiceConcerns umbrella (ADR-008). k0s manages its own state in # data_dir + kine (when storage_backend = dqlite/sqlite). Backup of the # data dir is captured by SystemBackupDef.host_configs targeting . concerns | _concerns_lib.ServiceConcerns | optional, .. }, }