Files
K3S/group_vars/all/main.yml
Sergey Antropoff 71a5e14ebb refactor: убрать Traefik, добавить метрики и ingress аддонам, provisioning DB/MinIO
Traefik:
- k3s-server-config.yaml.j2: traefik всегда в disable list (убрана переменная)
- group_vars/all/main.yml: убрана k3s_disable_traefik
- ingress-nginx/tasks: убраны задачи отключения Traefik (дублирование)

Prometheus метрики (по умолчанию включены):
- postgresql, mysql: metrics.enabled + serviceMonitor (при addon_prometheus_stack)
- minio: metrics.serviceMonitor (при addon_prometheus_stack)
- velero: metrics.enabled + serviceMonitor (при addon_prometheus_stack)
- crowdsec: ServiceMonitor для /metrics:6060 (при addon_prometheus_stack)
- ingress-nginx: ingress_nginx_metrics_enabled: true (было false)

Ingress:
- velero: velero_ingress_enabled (API port 8085)
- crowdsec: crowdsec_ingress_enabled (LAPI port 8080)

Databasus — provisioning shared ресурсов вместо деплоя своих:
- addon_postgresql: Job создаёт user 'databasus' + database 'databasus' в shared PG
- addon_minio: Job создаёт bucket 'databasus-backups' в shared MinIO
- vault_databasus_db_password добавлен в vault.yml.example
2026-04-25 11:19:42 +03:00

147 lines
7.1 KiB
YAML
Raw 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 ──────────────────────────────────────────────────────────────────────
k3s_version: "v1.29.3+k3s1"
# Тип хранилища etcd:
# embedded — встроенный etcd в k3s (HA через Raft, по умолчанию)
# external — внешний etcd кластер (ноды задаются группой [etcd_nodes] в inventory)
k3s_etcd_type: "embedded"
# Токен из vault (создай group_vars/all/vault.yml)
k3s_token: "{{ vault_k3s_token }}"
k3s_install_dir: /usr/local/bin
k3s_config_dir: /etc/kubernetes/k3s
k3s_data_dir: /var/lib/kubernetes/k3s
k3s_kubeconfig_path: "{{ k3s_config_dir }}/k3s.yaml"
k3s_cluster_cidr: "10.42.0.0/16"
k3s_service_cidr: "10.43.0.0/16"
k3s_cluster_dns: "10.43.0.10"
k3s_flannel_backend: "vxlan"
# CNI плагин: flannel (встроен в k3s) | calico | cilium
# При calico/cilium — Flannel автоматически отключается в конфиге k3s
k3s_cni: "flannel"
# traefik всегда отключён — используем ingress-nginx
k3s_disable_servicelb: false
k3s_disable_local_storage: false
k3s_node_labels: []
k3s_node_taints: []
k3s_extra_server_args: ""
k3s_extra_agent_args: ""
k3s_become: true
# Дополнительные пакеты устанавливаемые на все ноды
k3s_common_packages:
- nfs-common
- mc
- htop
- nano
- wget
- 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
# После bootstrap все playbook подключаются как k3s_admin_user
ansible_user: "{{ k3s_admin_user }}"
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!
kube_vip_address: "192.168.1.100"
# Сетевой интерфейс на master-ноде.
# Оставь пустым — Ansible автоопределит через ansible_default_ipv4.interface.
# Переопредели если нужно принудительно: kube_vip_interface: "eth0"
kube_vip_interface: ""
kube_vip_version: "v0.8.3"
kube_vip_mode: "arp" # arp (L2) | bgp (L3)
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
# Локальная директория для сохранения сгенерированных SSH ключей
# Файлы: keys/<user>_id_rsa, keys/<user>_id_rsa.pub
k8s_local_keys_dir: "./keys"
# ─── Chrony — синхронизация времени ───────────────────────────────────────────
# Устанавливается на все ноды кластера и lab_hosts как обязательный компонент.
# Критично для корректной работы etcd, TLS и Kubernetes API.
chrony_timezone: "Europe/Moscow"
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 таймер обеспечивает автоматическое обновление до истечения срока,
# гарантируя желаемый срок жизни кластера без ручного вмешательства.
k3s_cert_auto_rotate: true
# Желаемый срок жизни кластера без ручного вмешательства (в годах)
k3s_cert_validity_years: 5
# Ротация запускается, когда до истечения сертификата остаётся меньше N дней
k3s_cert_rotate_before_days: 90
# Расписание проверки (формат systemd OnCalendar): monthly, weekly, daily
# или конкретный формат: "*-*-1 03:00:00" (1-е число каждого месяца)
k3s_cert_check_schedule: "monthly"