Files
Compose-Files/kubernetes/kube-vip/template.json
T
2026-07-20 09:23:17 -04:00

247 lines
6.8 KiB
JSON

{
"slug": "kube-vip",
"kind": "kubernetes",
"metadata": {
"name": "kube-vip DaemonSet",
"description": "Practical kube-vip DaemonSet bootstrap with RBAC for control-plane virtual IPs and optional Service LoadBalancer handling in bare-metal clusters.",
"tags": [],
"icon": {
"provider": "simple-icons",
"id": "kubernetes"
},
"draft": true,
"version": {
"name": "1.0.1",
"source_dep_name": "manual/kube-vip"
}
},
"variables": [
{
"title": "General",
"name": "general",
"items": [
{
"name": "namespace",
"type": "str",
"title": "Namespace",
"required": false,
"default": "kube-system",
"description": "Namespace where kube-vip should run.",
"config": {
"placeholder": "kube-system"
}
},
{
"name": "service_account_name",
"type": "str",
"title": "Service account",
"required": false,
"default": "kube-vip",
"description": "Service account name used by the kube-vip DaemonSet.",
"config": {
"placeholder": "kube-vip"
}
},
{
"name": "daemonset_name",
"type": "str",
"title": "DaemonSet name",
"required": false,
"default": "kube-vip-ds",
"config": {
"placeholder": "kube-vip-ds"
}
},
{
"name": "image",
"type": "str",
"title": "Image",
"required": false,
"default": "ghcr.io/kube-vip/kube-vip:v1.0.1",
"description": "Container image for kube-vip.",
"config": {
"placeholder": "ghcr.io/kube-vip/kube-vip:v1.0.1"
}
}
]
},
{
"title": "Networking",
"name": "networking",
"items": [
{
"name": "interface",
"type": "str",
"title": "Primary interface",
"required": false,
"default": "eth0",
"description": "Host interface used by kube-vip for ARP announcements and VIP binding.",
"config": {
"placeholder": "eth0"
}
},
{
"name": "services_interface_enabled",
"type": "bool",
"title": "Services interface",
"required": false,
"default": false
},
{
"name": "services_interface",
"type": "str",
"title": "Services interface name",
"required": false,
"default": "eth1",
"description": "Interface used for service advertisements when a dedicated interface is required.",
"config": {
"placeholder": "eth1"
}
},
{
"name": "vip_address",
"type": "str",
"title": "Control-plane VIP",
"required": false,
"default": "192.168.1.30",
"description": "Virtual IP for the Kubernetes API when control-plane mode is enabled.",
"config": {
"placeholder": "192.168.1.30"
}
},
{
"name": "vip_subnet",
"type": "str",
"title": "VIP subnet mask",
"required": false,
"default": "32",
"description": "Subnet mask used for the advertised VIP.",
"config": {
"placeholder": "32"
}
},
{
"name": "control_plane_port",
"type": "int",
"title": "API port",
"required": false,
"default": 6443,
"description": "Kubernetes API port exposed by the control-plane VIP.",
"config": {
"placeholder": "6443"
}
}
]
},
{
"title": "Features",
"name": "features",
"items": [
{
"name": "control_plane_enabled",
"type": "bool",
"title": "Control-plane VIP",
"required": false,
"default": true,
"description": "Advertise a floating VIP for the Kubernetes API."
},
{
"name": "services_enabled",
"type": "bool",
"title": "Service LoadBalancer",
"required": false,
"default": false,
"description": "Watch and advertise Kubernetes Services of type LoadBalancer."
},
{
"name": "service_election_enabled",
"type": "bool",
"title": "Per-service election",
"required": false,
"default": false,
"description": "Use a separate leader election for each service when service mode is enabled."
},
{
"name": "leader_election_enabled",
"type": "bool",
"title": "Leader election",
"required": false,
"default": true
},
{
"name": "watch_services_namespace_enabled",
"type": "bool",
"title": "Watch one namespace",
"required": false,
"default": false,
"description": "Restrict service mode to a specific namespace instead of the whole cluster."
},
{
"name": "watch_services_namespace",
"type": "str",
"title": "Watched namespace",
"required": false,
"default": "apps",
"description": "Namespace watched by kube-vip when scoped service mode is enabled.",
"config": {
"placeholder": "apps"
}
}
]
},
{
"title": "Leader Election Timing",
"name": "timing",
"items": [
{
"name": "lease_duration",
"type": "int",
"title": "Lease duration",
"required": false,
"default": 5,
"description": "Lease duration in seconds for leader election.",
"config": {
"placeholder": "5"
}
},
{
"name": "renew_deadline",
"type": "int",
"title": "Renew deadline",
"required": false,
"default": 3,
"description": "Renew deadline in seconds for leader election.",
"config": {
"placeholder": "3"
}
},
{
"name": "retry_period",
"type": "int",
"title": "Retry period",
"required": false,
"default": 1,
"description": "Retry period in seconds for leader election.",
"config": {
"placeholder": "1"
}
}
]
},
{
"title": "Scheduling",
"name": "scheduling",
"items": [
{
"name": "control_plane_only",
"type": "bool",
"title": "Control-plane nodes only",
"required": false,
"default": true,
"description": "Schedule kube-vip only on nodes labeled as control-plane or master."
}
]
}
]
}