Skip to content

Instantly share code, notes, and snippets.

@dmi3mis
Created January 6, 2026 02:19
Show Gist options
  • Select an option

  • Save dmi3mis/851315ecfceae761588e86b708d2ebcf to your computer and use it in GitHub Desktop.

Select an option

Save dmi3mis/851315ecfceae761588e86b708d2ebcf to your computer and use it in GitHub Desktop.
kubitect k8s-ha-cluster.yaml
hosts:
- name: host1
connection:
type: remote
user: sa
ip: 192.168.50.131
ssh:
keyfile: "~/.ssh/id_ecdsa"
dataResourcePools:
- name: pool
path: /var/lib/libvirt/images/pool/
- name: host2
connection:
type: remote
user: sa
ip: 192.168.50.227
ssh:
keyfile: "~/.ssh/id_ecdsa"
dataResourcePools:
- name: pool
path: /var/lib/libvirt/images/pool/
- name: host3
connection:
type: remote
user: sa
ip: 192.168.50.159
ssh:
keyfile: "~/.ssh/id_ecdsa"
dataResourcePools:
- name: pool
path: /var/lib/libvirt/images/pool/
- name: host4
connection:
type: remote
user: sa
ip: 192.168.50.160
ssh:
keyfile: "~/.ssh/id_ecdsa"
dataResourcePools:
- name: pool
path: /var/lib/libvirt/images/pool/
cluster:
name: k8s
network:
mode: bridge
cidr: 192.168.50.0/24
bridge: br0
nodeTemplate:
cpuMode: host-passthrough
user: sa
updateOnBoot: true
ssh:
addToKnownHosts: true
os:
distro: debian13
source: file:///var/lib/libvirt/images/debian-13-genericcloud-amd64.qcow2
nodes:
loadBalancer:
default:
cpu: 2
ram: 2
mainDiskSize: 10
vip: 192.168.50.20
forwardPorts:
- name: http
port: 80
targetPort: 50080
target: workers
- name: https
port: 443
targetPort: 50443
instances:
- id: 1
ip: 192.168.50.21
host: host1
- id: 2
ip: 192.168.50.22
host: host2
master:
default:
cpu: 4
ram: 4
mainDiskSize: 20
instances:
- id: 1
ip: 192.168.50.31
host: host1
- id: 2
ip: 192.168.50.32
host: host2
- id: 3
ip: 192.168.50.33
host: host3
worker:
default:
cpu: 8
ram: 8
mainDiskSize: 32
labels:
rook: false
instances:
- id: 1
labels:
rook: true
ip: 192.168.50.41
host: host1
dataDisks:
- name: rook
pool: pool
size: 100
- id: 2
labels:
rook: true
ip: 192.168.50.42
host: host2
dataDisks:
- name: rook
pool: pool
size: 100
- id: 3
labels:
rook: true
ip: 192.168.50.43
host: host3
dataDisks:
- name: rook
pool: pool
size: 100
- id: 4
labels:
rook: true
ip: 192.168.50.44
host: host4
dataDisks:
- name: rook
pool: pool
size: 100
- id: "5"
host: host1
ip: 192.168.50.45
cpu: 8
ram: 24
mainDiskSize: 32
dataDisks:
- name: rook
pool: pool
size: 100
labels:
rook: "true"
- id: "6"
host: host2
ip: 192.168.50.46
cpu: 8
ram: 24
mainDiskSize: 32
dataDisks:
- name: rook
pool: pool
size: 100
labels:
rook: "true"
- id: "7"
host: host3
ip: 192.168.50.47
cpu: 8
ram: 24
mainDiskSize: 32
dataDisks:
- name: rook
pool: pool
size: 100
labels:
rook: "true"
kubernetes:
version: v1.33.5
other:
autoRenewCertificates: true
mergeKubeconfig: true
addons:
rook:
enabled: true
nodeSelector:
rook: true
kubespray:
ingress_nginx_enabled: true
ingress_nginx_namespace: "ingress-nginx"
ingress_nginx_insecure_port: 50080
ingress_nginx_secure_port: 50443
ingress_nginx_default: true
ingress_nginx_without_class: true
ingress_nginx_class: nginx
metallb_enabled: true
metallb_namespace: "metallb-system"
metallb_speaker_enabled: true
metallb_ip_range:
- "192.168.50.10-192.168.50.20"
metallb_pool_name: "default"
metallb_auto_assign: true
metallb_protocol: "layer2"
auto_renew_certificates: true
auto_renew_certificates_systemd_calendar: "Mon *-*-1,2,3,4,5,6,7 03:00:00"
kubelet_secure_addresses: "192.168.50.0/24 localhost link-local 10.233.64.0/18"
upstream_dns_servers:
- 8.8.8.8
- 8.8.4.4
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment