247 lines
6.8 KiB
JSON
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."
|
|
}
|
|
]
|
|
}
|
|
]
|
|
}
|