migrate
This commit is contained in:
@@ -0,0 +1,36 @@
|
||||
<%- if create_namespace %>
|
||||
---
|
||||
apiVersion: v1
|
||||
kind: Namespace
|
||||
metadata:
|
||||
name: << namespace >>
|
||||
<%- endif %>
|
||||
---
|
||||
apiVersion: metallb.io/v1beta1
|
||||
kind: IPAddressPool
|
||||
metadata:
|
||||
name: << pool_name >>
|
||||
namespace: << namespace >>
|
||||
spec:
|
||||
addresses:
|
||||
- << address_range >>
|
||||
autoAssign: << auto_assign | lower >>
|
||||
avoidBuggyIPs: << avoid_buggy_ips | lower >>
|
||||
---
|
||||
apiVersion: metallb.io/v1beta1
|
||||
kind: L2Advertisement
|
||||
metadata:
|
||||
name: << advertisement_name >>
|
||||
namespace: << namespace >>
|
||||
spec:
|
||||
ipAddressPools:
|
||||
- << pool_name >>
|
||||
<%- if node_selector_enabled %>
|
||||
nodeSelectors:
|
||||
- matchLabels:
|
||||
<< node_selector_key >>: << node_selector_value >>
|
||||
<%- endif %>
|
||||
<%- if bind_interfaces_enabled %>
|
||||
interfaces:
|
||||
- << bind_interface >>
|
||||
<%- endif %>
|
||||
@@ -0,0 +1,153 @@
|
||||
{
|
||||
"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"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
Reference in New Issue
Block a user