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
147 lines
7.1 KiB
YAML
147 lines
7.1 KiB
YAML
---
|
||
# ─── 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"
|