# ───────────────────────────────────────────────────────────────────────────── # K3S HA кластер — inventory # Мастера: k3s server с embedded etcd (участвуют в Raft-кворуме) # Воркеры: k3s agent — только рабочие ноды, без etcd # # ansible_user НЕ указывается здесь — он берётся из group_vars: # k3s_admin_user: devops → ansible_user: "{{ k3s_admin_user }}" # Bootstrap подключается с паролем из host_vars//vault.yml # ───────────────────────────────────────────────────────────────────────────── # # Секции ниже задают группы; у каждой ноды — inventory_hostname и IP для SSH. # Control-plane: все embedded-etcd + api-server; первый в списке = cluster-init при первом install [k3s_master] # primary master (cluster-init) — x86, NFS, основная нагрузка master01 ansible_host=192.168.1.10 # второй master (join по VIP) worker01 ansible_host=192.168.1.11 # третий master, ARM, с taint NoSchedule в host_vars rpi01 ansible_host=192.168.1.12 ansible_python_interpreter=/usr/bin/python3 # Дополнительные мастера — добавляй сюда: # master04 ansible_host=192.168.1.14 [k3s_workers] # Чистые воркеры (только k3s agent, без etcd) — добавляй сюда: # worker04 ansible_host=192.168.1.14 # worker05 ansible_host=192.168.1.15 [k3s_cluster:children] k3s_master k3s_workers # Нода(ы) с export NFS для CSI; rоль nfs-server плейбука исполняется на этой группе [nfs_server] # по умолчанию — тот же хост, что и master01; можно вынести на отдельный сервер master01 # Если NFS на отдельной машине — закомментируй строку выше и раскомментируй: # nfshost ansible_host=192.168.1.20 # ───────────────────────────────────────────────────────────────────────────── # Внешний etcd кластер (используется только когда k3s_etcd_type: external) # Может быть на любых серверах — не обязательно мастерах. # Рекомендуется нечётное кол-во нод для кворума: 1, 3, 5 # ───────────────────────────────────────────────────────────────────────────── [etcd_nodes] # etcd01 ansible_host=192.168.1.30 # etcd02 ansible_host=192.168.1.31 # etcd03 ansible_host=192.168.1.32 # ───────────────────────────────────────────────────────────────────────────── # Лабораторные серверы (не входят в k3s кластер) # Используются для: распределения SSH ключей k8s пользователя, /etc/hosts # Подключение: через bootstrap_user/bootstrap_password из host_vars//vault.yml # ───────────────────────────────────────────────────────────────────────────── [lab_hosts] # nas01 ansible_host=192.168.1.30 # devbox ansible_host=192.168.1.31 # proxy01 ansible_host=192.168.1.32 # ───────────────────────────────────────────────────────────────────────────── # Hysteria2 VPN сервер (удалённый VPS — НЕ часть k3s кластера) # Используется аддоном: make addon-hysteria2-server # Подключение: SSH ключ (рекомендуется) или make addon-hysteria2-server ARGS="-k" # ───────────────────────────────────────────────────────────────────────────── [hysteria2_server] # myvps ansible_host=1.2.3.4 ansible_user=root # ───────────────────────────────────────────────────────────────────────────── # Split Gateway — прозрачный прокси на основе sing-box + Hysteria2 (TPROXY) # YouTube → Hysteria2, RU-сервисы → прямой маршрут, всё остальное → прямой # Используется аддоном: make addon-splitgw # Пометить ноду для k8s-режима: kubectl label node splitgw=true # ───────────────────────────────────────────────────────────────────────────── [splitgw] # gateway01 ansible_host=192.168.1.50