- 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).
187 lines
9.6 KiB
YAML
187 lines
9.6 KiB
YAML
---
|
||
# 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"
|