Files
K3S/group_vars/all/main.yml
Sergey Antropoff dde2fc8a8a docs(config): комментарии к group_vars, host_vars, inventory и defaults аддонов
- group_vars/all/main.yml: пояснения к глобальным настройкам K3S, сети, CNI,
  kube-vip, chrony, ротации сертификатов, сервисным пользователям и пакетам.
- group_vars/all/addons.yml: комментарии над флагами addon_* и активными
  блоками (NFS, CSI NFS, ingress-nginx, cert-manager, Databasus, MinIO,
  etcd backup и др.); исправлена битая строка-разделитель в секции Gitea Actions.
- group_vars/all/vault.yml.example: описание назначения каждого секрета.
- host_vars (master01, worker01, rpi01): пояснения к labels, taints и
  k3s_extra_server_args.
- inventory/hosts.ini: комментарии к группам и строкам нод, пояснение nfs_server;
  исправлена повреждённая линия-разделитель.
- addons/*/role/defaults/main.yml: русские комментарии над переменными
  (в т.ч. Harbor, Authelia, Istio, Prometheus, Vault, Jenkins, DNS-аддоны и др.).
- addons/csi-nfs/role/defaults/main.yml: исправлено имя csi_nfs_reclaim_policy
  (опечатка с кириллической «М» в имени ключа).
Рабочий vault.yml не менялся (секреты / ansible-vault).
2026-04-28 02:32:19 +03:00

187 lines
9.6 KiB
YAML
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

---
# K3S — глобальные переменные play (см. также group_vars/all/addons.yml, vault.yml)
# Версия K3S в формате vX.Y.Z+k3sN (релизы: https://github.com/k3s-io/k3s/releases)
k3s_version: "v1.29.3+k3s1"
# Тип хранилища etcd:
# embedded — встроенный etcd в k3s (HA через Raft, по умолчанию)
# external — внешний etcd кластер (ноды задаются группой [etcd_nodes] в inventory)
k3s_etcd_type: "embedded"
# Токен кластера из Ansible Vault: должен совпадать на всех нодах при join (см. vault_k3s_token)
k3s_token: "{{ vault_k3s_token }}"
# Каталог, куда скачивается бинарь k3s, kubectl, crictl, ctr
k3s_install_dir: /usr/local/bin
# Каталог конфигов Kubernetes / K3S (k3s.yaml, manifests)
k3s_config_dir: /etc/kubernetes/k3s
# Данные control-plane, etcd, containerd, хранилище образов
k3s_data_dir: /var/lib/kubernetes/k3s
# Путь к kubeconfig на ноде после join (копируется на control machine при необходимости)
k3s_kubeconfig_path: "{{ k3s_config_dir }}/k3s.yaml"
# Pod network CIDR: адреса подов (overlay сеть, не пересекать с LAN)
k3s_cluster_cidr: "10.42.0.0/16"
# Service CIDR: виртуальные ClusterIP (внутренняя маршрутизация kube-proxy)
k3s_service_cidr: "10.43.0.0/16"
# IP сервиса CoreDNS (обычно второй IP из service_cidr, …10)
k3s_cluster_dns: "10.43.0.10"
# Backends flannel: vxlan (по умолчанию), host-gw, wireguard и др.
k3s_flannel_backend: "vxlan"
# CNI плагин: flannel (встроен в k3s) | calico | cilium
# При calico/cilium — Flannel автоматически отключается в конфиге k3s
k3s_cni: "flannel"
# false = разрешить встроенный ServiceLB (Klipper) для LoadBalancer; true = отключить, если внешний LB
k3s_disable_servicelb: false
# false = разрешить local-path provisioner; true = отключить, если другой default StorageClass
k3s_disable_local_storage: false
# Список node labels по умолчанию для роли (переопределяется в host_vars)
k3s_node_labels: []
# Список taints по умолчанию (переопределяется в host_vars, например NoSchedule на RPi)
k3s_node_taints: []
# Дополнительные args для k3s server (YAML, см. k3s docs), строка
k3s_extra_server_args: ""
# Дополнительные args для k3s agent на worker-нодах
k3s_extra_agent_args: ""
# Использовать become (sudo) при задачах на нодах
k3s_become: true
# Дополнительные пакеты устанавливаемые на все ноды
k3s_common_packages:
# Клиент NFS для монтирования PVC/ручных шар
- nfs-common
# MinIO S3-совместимый CLI
- mc
- htop
- nano
- wget
# iSCSI для Longhorn/CSI
- open-iscsi
- bash-completion
- net-tools
- dnsutils
- lsof
- tcpdump
- traceroute
# ─── Bootstrap — первичная настройка нод ─────────────────────────────────────
# k3s_admin_user — ДОЛЖЕН быть одним из cluster_service_users.
# Используется для SSH-подключений Ansible после bootstrap.
# Пользователь создаётся bootstrap'ом через роль k8s-user.
k3s_admin_user: devops
# Пользователь SSH по умолчанию для playbooks после развёртывания
ansible_user: "{{ k3s_admin_user }}"
# Приватный ключ с машины, откуда запускается Ansible (в Docker: смонтирован id_rsa)
ansible_ssh_private_key_file: "~/.ssh/id_rsa"
# SSH публичный ключ Ansible-машины (монтируется в контейнер из ~/.ssh)
k3s_admin_ssh_public_key_files:
- /root/.ssh/id_ed25519.pub
# Дополнительные публичные ключи строками (для нескольких инженеров, из vault)
k3s_admin_ssh_additional_keys: []
# Отключить SSH вход по паролю после деплоя ключа (рекомендуется в prod)
k3s_admin_disable_password_auth: false
# Адрес для подключения новых нод — по умолчанию первый мастер (для initial install).
# При add-node.yml автоматически используется kube_vip_address.
k3s_join_address: "{{ hostvars[groups['k3s_master'][0]]['ansible_host'] }}"
# ─── kube-vip ─────────────────────────────────────────────────────────────────
# ОБЯЗАТЕЛЬНО: задай свободный IP из твоей подсети, не занятый DHCP! VIP для API и/или LoadBalancer
kube_vip_address: "192.168.1.100"
# Сетевой интерфейс на master-ноде, на который вешается VIP.
# Оставь пустым — Ansible автоопределит через ansible_default_ipv4.interface.
# Переопредели если нужно принудительно: kube_vip_interface: "eth0"
kube_vip_interface: ""
# Версия kube-vip (static pod manifest)
kube_vip_version: "v0.8.3"
# arp = L2/VIP в LAN; bgp = анонс через маршрутизатор
kube_vip_mode: "arp" # arp (L2) | bgp (L3)
# kube-vip обрабатывает Service type LoadBalancer (кроме пула MetalLB, если тот настроен отдельно)
kube_vip_services_enable: true # также обрабатывает LoadBalancer Services
# ─── mdadm ────────────────────────────────────────────────────────────────────
# Поиск RAID массива и монтирование в /storage
# Отключить на конкретной ноде: задай mdadm_enabled: false в host_vars/<node>/main.yml
mdadm_enabled: false
# ─── Сервисные пользователи ───────────────────────────────────────────────────
# Список пользователей, создаваемых на ВСЕХ серверах (кластер + lab_hosts).
# Для каждого: RSA 4096 ключевая пара, authorized_keys, sudo NOPASSWD.
# Добавь любое количество пользователей — всё остальное Ansible сделает сам.
#
# Обязательные поля: name
# Опциональные: comment, shell, sudo, key_type, key_bits, key_comment, ssh_dir
cluster_service_users:
- name: inecs
comment: "Personal account"
key_comment: "inecs@cluster"
sudo: true
shell: /bin/bash
key_type: rsa
key_bits: 4096
- name: devops
comment: "DevOps Engineer"
key_comment: "devops@cluster"
sudo: true
shell: /bin/bash
key_type: rsa
key_bits: 4096
# Локальная директория на машине, где крутится `make` — сохраняются сгенерированные ключи
# Файлы: keys/<user>_id_rsa, keys/<user>_id_rsa.pub
k8s_local_keys_dir: "./keys"
# ─── Chrony — синхронизация времени ───────────────────────────────────────────
# Устанавливается на все ноды кластера и lab_hosts как обязательный компонент.
# Критично для корректной работы etcd, TLS и Kubernetes API.
# Часовой пояс (systemd/timedatectl)
chrony_timezone: "Europe/Moscow"
# NTP pool — сервера, с кого забирать время
chrony_ntp_servers:
- 0.pool.ntp.org
- 1.pool.ntp.org
- 2.pool.ntp.org
- 3.pool.ntp.org
# ─── k3s-certs — автоматическая ротация сертификатов K3S ─────────────────────
# K3S выпускает сертификаты с фиксированным сроком жизни 1 год.
# Systemd таймер обеспечивает автоматическое обновление до истечения срока,
# гарантируя желаемый срок жизни кластера без ручного вмешательства.
# Включить роль ротации сертификатов (systemd unit + таймер)
k3s_cert_auto_rotate: true
# Сколько лет планируется вести кластер с автоматическим обновлением (влияет на политику/ожидания)
k3s_cert_validity_years: 5
# За сколько дней до конца срока действия сертификата срабатывает ротация
k3s_cert_rotate_before_days: 90
# Как часто unit проверяет срок: monthly | weekly | daily | или конкретный systemd OnCalendar
# или конкретный формат: "*-*-1 03:00:00" (1-е число каждого месяца)
k3s_cert_check_schedule: "monthly"