provisioning-catalog/components/k0s/nickel/contracts.ncl

52 lines
1.6 KiB
Text

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 <data_dir>/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 <data_dir>.
concerns | _concerns_lib.ServiceConcerns | optional,
..
},
}