{ "slug": "metallb", "kind": "kubernetes", "metadata": { "name": "MetalLB Layer2 Bootstrap", "description": "Practical MetalLB bootstrap manifests for the common homelab path: an IPAddressPool plus L2Advertisement for bare-metal LoadBalancer services.", "tags": [], "icon": { "provider": "simple-icons", "id": "kubernetes" }, "draft": true, "version": { "name": "0.15.2", "source_dep_name": "manual/metallb" } }, "variables": [ { "title": "General", "name": "general", "items": [ { "name": "namespace", "type": "str", "title": "MetalLB namespace", "required": false, "default": "metallb-system", "description": "Namespace where MetalLB custom resources live.", "config": { "placeholder": "metallb-system" } }, { "name": "create_namespace", "type": "bool", "title": "Create namespace", "required": false, "default": false, "description": "Render the MetalLB namespace manifest before the pool configuration." }, { "name": "pool_name", "type": "str", "title": "Pool name", "required": false, "default": "homelab-pool", "config": { "placeholder": "homelab-pool" } }, { "name": "advertisement_name", "type": "str", "title": "Advertisement name", "required": false, "default": "homelab-l2", "config": { "placeholder": "homelab-l2" } } ] }, { "title": "Address Pool", "name": "pool", "items": [ { "name": "address_range", "type": "str", "title": "Address range", "required": false, "default": "192.168.1.240-192.168.1.250", "description": "Single IP, CIDR, or start-end range reserved for LoadBalancer services.", "config": { "placeholder": "192.168.1.240-192.168.1.250" } }, { "name": "auto_assign", "type": "bool", "title": "Auto assign", "required": false, "default": true, "description": "Allow MetalLB to assign IPs automatically from this pool." }, { "name": "avoid_buggy_ips", "type": "bool", "title": "Avoid buggy IPs", "required": false, "default": false, "description": "Skip .0 and .255 style addresses for networks with broken consumer gear." } ] }, { "title": "Layer2 Advertisement", "name": "layer2", "items": [ { "name": "bind_interfaces_enabled", "type": "bool", "title": "Bind interfaces", "required": false, "default": false, "description": "Restrict ARP announcements to a specific host interface." }, { "name": "bind_interface", "type": "str", "title": "Interface name", "required": false, "default": "eth0", "description": "Interface used for Layer2 announcements when interface binding is enabled.", "config": { "placeholder": "eth0" } }, { "name": "node_selector_enabled", "type": "bool", "title": "Node selector", "required": false, "default": false, "description": "Limit announcements to nodes with a specific label." }, { "name": "node_selector_key", "type": "str", "title": "Node selector key", "required": false, "default": "kubernetes.io/hostname", "description": "Node label key used when node selection is enabled.", "config": { "placeholder": "kubernetes.io/hostname" } }, { "name": "node_selector_value", "type": "str", "title": "Node selector value", "required": false, "default": "k3s-server-1", "description": "Node label value used when node selection is enabled.", "config": { "placeholder": "k3s-server-1" } } ] } ] }