Documentation
¶
Overview ¶
Package config handles loading, parsing, and validating the multi-node cluster configuration from YAML files.
Index ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type ClusterConfig ¶
type ClusterConfig struct {
Name string `yaml:"name"`
K3sVersion string `yaml:"k3sVersion"`
Kubeconfig string `yaml:"kubeconfig"`
MetalLB MetalLBConfig `yaml:"metallb"`
Tailscale TailscaleConfig `yaml:"tailscale"`
Docker DockerConfig `yaml:"docker"`
Mounts []MountConfig `yaml:"mounts"`
USB USBConfig `yaml:"usb"`
}
ClusterConfig holds cluster-wide settings.
type Config ¶
type Config struct {
Cluster ClusterConfig `yaml:"cluster"`
Nodes []NodeConfig `yaml:"nodes"`
}
Config is the top-level configuration for a multi-node cluster.
func Load ¶
Load reads and parses a config file from the given path. It will search parent directories for the file if only a filename is provided.
func (*Config) AgentNodes ¶
func (c *Config) AgentNodes() []NodeConfig
AgentNodes returns only the nodes with role "agent".
func (*Config) InitNode ¶
func (c *Config) InitNode() NodeConfig
InitNode returns the first server node, which is used to bootstrap the cluster.
func (*Config) ServerNodes ¶
func (c *Config) ServerNodes() []NodeConfig
ServerNodes returns only the nodes with role "server".
type DockerConfig ¶ added in v0.47.0
type DockerConfig struct {
Enabled bool `yaml:"enabled"`
}
DockerConfig holds configuration for Docker runtime integration.
type MetalLBConfig ¶ added in v0.43.1
MetalLBConfig holds configuration for the MetalLB load balancer.
type MountConfig ¶ added in v0.57.0
type MountConfig struct {
Location string `yaml:"location"` // host path; "~" is allowed and expanded on the target host
MountPoint string `yaml:"mountPoint,omitempty"` // guest path; defaults to the same path as Location
Writable bool `yaml:"writable,omitempty"` // default false; the injected home-default sets this true
}
MountConfig describes a host directory shared into the cluster VMs so that containers launched by the in-VM Docker daemon (e.g. devcontainers) can see host source files at the same path.
Default-vs-opt-out is decided by presence: an omitted `mounts:` key (nil slice) defaults to the host home dir; an explicit `mounts: []` opts out. See lima.ResolveMounts.
type NodeConfig ¶
type NodeConfig struct {
Host string `yaml:"host"`
Role string `yaml:"role"` // "server" or "agent"
Pool string `yaml:"pool"` //
Kind string `yaml:"kind,omitempty"` // "lima" (default, macOS+VM) | "native" (Linux host, no VM)
NodeIP string `yaml:"nodeIP,omitempty"` // native: override the auto-detected tailscale IP
VM VMConfig `yaml:"vm"` // required for kind=lima; ignored for kind=native
VMName string `yaml:"vmName,omitempty"`
SSHUser string `yaml:"sshUser,omitempty"`
SSHPort string `yaml:"sshPort,omitempty"`
SSHKeyPath string `yaml:"sshKeyPath,omitempty"`
}
NodeConfig describes a single node in the cluster.
func (*NodeConfig) GetKind ¶ added in v0.62.0
func (n *NodeConfig) GetKind() string
GetKind returns the node kind, defaulting to "lima".
func (*NodeConfig) GetVMName ¶
func (n *NodeConfig) GetVMName() string
GetVMName returns the VM name for this node, defaulting to "k8s-node".
type TailscaleConfig ¶ added in v0.43.1
TailscaleConfig holds configuration for Tailscale networking.
type USBConfig ¶ added in v0.60.0
type USBConfig struct {
Renderers []string `yaml:"renderers,omitempty"` // subset of fcos|baked; empty = all
NodeNamePrefix string `yaml:"nodeNamePrefix,omitempty"` // default "usb"
Pool string `yaml:"pool,omitempty"` // node pool label; default "usb"
AgentToken string `yaml:"agentToken,omitempty"` // dedicated least-privilege k3s agent token
TailnetServerURL string `yaml:"tailnetServerURL,omitempty"` // explicit tailnet API URL override
Scratch string `yaml:"scratch,omitempty"` // none|existing:<src>|free-space
NodeTTL string `yaml:"nodeTTL,omitempty"` // e.g. "30m"; prune NotReady ephemeral nodes older than this
WiFi WiFiConfig `yaml:"wifi,omitempty"` // optional Wi-Fi creds baked into the boot config
}
USBConfig holds defaults for `devx cluster usb`, which builds a GPT Fedora CoreOS image (via coreos-installer) that boots a bare-metal laptop into a self-joining node. All fields are optional; command-line flags override them.
type VMConfig ¶
type VMConfig struct {
CPUs int `yaml:"cpus"`
Memory string `yaml:"memory"`
Disk string `yaml:"disk"`
}
VMConfig describes the resource allocation for a Lima VM.
type WiFiConfig ¶ added in v0.60.0
WiFiConfig carries optional Wi-Fi credentials baked into the join script, so a laptop with no Ethernet can still reach the cluster.