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).
This commit is contained in:
Sergey Antropoff
2026-04-28 02:32:19 +03:00
parent 4eaf91e2d2
commit dde2fc8a8a
47 changed files with 1057 additions and 232 deletions

View File

@@ -1,117 +1,184 @@
---
# Аддоны кластера — выбери что устанавливать
# make install-full → core + все аддоны у которых true
# make addon-<name> → конкретный аддон напрямую (флаг игнорируется)
# make addon-<name> → конкретный аддон напрямую (флаг в addons.yml игнорируется)
addon_nfs_server: false # NFS сервер
addon_csi_nfs: false # CSI NFS Driver + StorageClass
addon_ingress_nginx: true # ingress-nginx (Ingress controller)
addon_cert_manager: false # cert-manager (TLS через Let's Encrypt)
addon_metrics_server: false # metrics-server (kubectl top nodes/pods)
addon_prometheus_stack: false # Prometheus + Grafana + Alertmanager
addon_istio: false # Istio service mesh + Kiali UI
addon_argocd: false # ArgoCD (GitOps)
addon_longhorn: false # Longhorn (distributed block storage)
addon_kubernetes_dashboard: false # Kubernetes Dashboard
addon_postgresql: false # PostgreSQL (Bitnami)
addon_mysql: false # MySQL (Bitnami)
addon_databasus: false # Databasus (резервное копирование БД)
addon_minio: false # MinIO (S3-совместимое объектное хранилище)
addon_velero: false # Velero (резервное копирование кластера и PVC)
addon_crowdsec: false # CrowdSec (обнаружение вторжений)
addon_harbor: false # Harbor (container registry)
addon_gitea: false # Gitea (Git hosting, авто-обновление до последней версии)
addon_owncloud: false # ownCloud OCIS (файловое хранилище, авто-обновление)
addon_nextcloud: false # Nextcloud (файловое хранилище, авто-обновление)
addon_loki: false # Loki (агрегация логов)
addon_promtail: false # Promtail (агент сбора логов → Loki)
addon_tempo: false # Tempo (distributed tracing)
addon_pushgateway: false # Prometheus Pushgateway (метрики batch-задач)
addon_csi_s3: false # CSI S3 Driver (объектное хранилище как PVC, авто-MinIO)
addon_csi_ceph: false # CSI Ceph / Rook-Ceph (distributed block + filesystem storage)
addon_csi_glusterfs: false # CSI GlusterFS Driver (требует внешний GlusterFS + Heketi)
addon_vaultwarden: false # Vaultwarden (self-hosted Bitwarden-совместимый менеджер паролей)
addon_smtp_relay: false # SMTP Relay (Postfix → Yandex/другой SMTP) — для уведомлений из подов
addon_vault: false # HashiCorp Vault (секреты, PKI, динамические credentials)
addon_external_secrets: false # External Secrets Operator → Vault/AWS/GCP (k8s Secret sync)
addon_jenkins: false # Jenkins CI/CD (Helm, dynamic k8s agents, JCasC)
addon_netbird: false # NetBird VPN (управляющий сервер + subnet router + exit node)
addon_mediaserver: false # MediaServer — Plex, *arr, Transmission, Prowlarr+Hysteria2, Samba
addon_hysteria2_server: false # Hysteria2 VPN сервер на удалённый VPS (группа [hysteria2_server] в inventory)
addon_splitgw: false # Split Gateway — прозрачный прокси sing-box+Hysteria2 (группа [splitgw] в inventory)
addon_ingress_proxypass: false # External Services Ingress Proxy — проксировать внешние сервисы через ingress-nginx
addon_ingress_add_domains: false # Ingress-only — добавить домены к существующим сервисам кластера
addon_yandex_dns_controller: false # Yandex 360 DNS controller — управление DNS через ConfigMap (safe mode)
addon_technitium_dns: false # Technitium DNS HA — Primary+Secondary с kube-vip LB, зональный sync
addon_authelia: false # Authelia SSO — Forward-auth + OIDC provider для всех сервисов
# Включить роль nfs-server: экспорт каталога по NFS с хоста [nfs_server]
addon_nfs_server: false
# Включить CSI драйвер NFS: StorageClass для RWX из NFS
addon_csi_nfs: false
# Ingress controller (HTTP/HTTPS) — почти для всех веб-аддонов
addon_ingress_nginx: true
# cert-manager: TLS, ClusterIssuer (Let's Encrypt и др.)
addon_cert_manager: false
# metrics-server: `kubectl top`, HPA на метриках CPU/памяти
addon_metrics_server: false
# kube-prometheus-stack: Prometheus, Grafana, Alertmanager
addon_prometheus_stack: false
# Istio mesh, опционально Kiali
addon_istio: false
# ArgoCD GitOps
addon_argocd: false
# Longhorn: реплицируемый блочный диск
addon_longhorn: false
# Web UI кластера (kubernetes-dashboard)
addon_kubernetes_dashboard: false
# Bitnami PostgreSQL, общий instance для аддонов
addon_postgresql: false
# Bitnami MySQL
addon_mysql: false
# Databasus: веб-управление бэкапами БД
addon_databasus: false
# MinIO S3
addon_minio: false
# Velero: бэкапы namespace/PVC в объектное хранилище
addon_velero: false
# CrowdSec IDS + опциональный nginx bouncer
addon_crowdsec: false
# Harbor registry
addon_harbor: false
# Gitea, авто-обновление чарта/образа при пустой версии
addon_gitea: false
# ownCloud Infinite Scale
addon_owncloud: false
# Nextcloud Helm
addon_nextcloud: false
# Loki: хранение логов
addon_loki: false
# Promtail: сбор логов в Loki
addon_promtail: false
# Grafana Tempo: трейсинг
addon_tempo: false
# Pushgateway: batch/cron пушат метрики
addon_pushgateway: false
# CSI: монтирование S3 как PVC; с MinIO — авто-настройка endpoint
addon_csi_s3: false
# Rook-Ceph: блочное RWO и CephFS RWX
addon_csi_ceph: false
# CSI GlusterFS: нужен Heketi/Gluster снаружи
addon_csi_glusterfs: false
# Vaultwarden: Bitwarden-совместимый сервер
addon_vaultwarden: false
# Postfix relay в наружный SMTP
addon_smtp_relay: false
# HashiCorp Vault
addon_vault: false
# External Secrets: синк секретов в Kubernetes
addon_external_secrets: false
# Jenkins в кластере
addon_jenkins: false
# NetBird control plane, subnet router, exit
addon_netbird: false
# Plex, *arr, Samba, Transmission, прокси Prowlarr
addon_mediaserver: false
# Hysteria2 server на [hysteria2_server]
addon_hysteria2_server: false
# splitgw: sing-box TPROXY на [splitgw]
addon_splitgw: false
# Service+Endpoints+Ingress к внешним IP:порт
addon_ingress_proxypass: false
# Только новые Ingress к существующим Service
addon_ingress_add_domains: false
# CronJob+ConfigMap: записи Yandex 360 DNS API
addon_yandex_dns_controller: false
# Technitium DNS: HA primary/secondary, sync зон
addon_technitium_dns: false
# Authelia: forward-auth, OIDC
addon_authelia: false
# ─── NFS Server ───────────────────────────────────────────────────────────────
# ─── NFS Server (роль на хосте [nfs_server]) ───────────────────────────────────
# Список export: path — каталог на диске; options — опции export для nfs-kernel-server
nfs_exports:
- path: /srv/nfs/k8s
# Права клиентов: rw, sync, без root_squash (осторожно в prod)
options: "*(rw,sync,no_subtree_check,no_root_squash)"
# Подсеть, с которой разрешён NFS (для ufw/iptables в роли)
nfs_allowed_network: "192.168.1.0/24"
# Создавать path из nfs_exports, если папок ещё нет
nfs_create_export_dirs: true
# Права на каталоги экспорта (octal)
nfs_export_dir_mode: "0777"
# Владелец каталога экспорта
nfs_export_dir_owner: "nobody"
# Группа владельца каталога экспорта
nfs_export_dir_group: "nogroup"
# ─── CSI NFS Driver ───────────────────────────────────────────────────────────
# ─── CSI NFS Driver (Helm, StorageClass) ────────────────────────────────────
# Версия чарта/образа CSI NFS
csi_nfs_version: "v4.8.0"
# Namespace, куда ставится Helm release драйвера
csi_nfs_namespace: "kube-system"
# IP NFS сервера — по умолчанию берётся первый мастер
# Если NFS на отдельном хосте: csi_nfs_server: "192.168.1.20"
# IP/hostname сервера NFS для StorageClass; по умолчанию IP первого k3s_master
# Для вынесенного NFS: csi_nfs_server: "192.168.1.20"
csi_nfs_server: "{{ hostvars[groups['k3s_master'][0]]['ansible_host'] }}"
# Путь на NFS-сервере, общий root для subdir-per-PVC
csi_nfs_share: "/srv/nfs/k8s"
# Помечать создаваемый StorageClass как default
csi_nfs_storageclass_default: true
csi_nfs_reclaim_policy: "Delete" # Delete | Retain
csi_nfs_on_delete: "delete" # delete | retain | archive
# Reclaim policy PV: Delete — удалить данные при удалении PVC; Retain — оставить
csi_nfs_reclaim_policy: "Delete"
# Поведение subdir provisioner при удалении PVC: delete|retain|archive
csi_nfs_on_delete: "delete"
# Устанавливать nfs-common на нодах (клиент NFS)
csi_nfs_install_client: true
# ─── ingress-nginx ────────────────────────────────────────────────────────────
# ─── ingress-nginx (Helm) ───────────────────────────────────────────────────
# Версия Helm-чарта ingress-nginx
ingress_nginx_version: "4.10.1"
# Namespace для controller и default backend
ingress_nginx_namespace: "ingress-nginx"
# LoadBalancer получит IP от kube-vip
# Тип Service: LoadBalancer — kube-vip выдаст внешний IP из LAN
ingress_nginx_service_type: "LoadBalancer"
# Конкретный IP из пула kube-vip (оставь "" для автоматического)
# Статический IP для Service (пусто — kube-vip выберет из пула/авто)
ingress_nginx_load_balancer_ip: ""
# Число реплик controller (для Deployment)
ingress_nginx_replica_count: 1
# true — DaemonSet вместо Deployment (по ноде)
ingress_nginx_use_daemonset: false
# Включить метрики для Prometheus
ingress_nginx_metrics_enabled: true
# Имя IngressClass (селектор в Ingress)
ingress_nginx_class_name: "nginx"
# Пометить этот class как default для Ingress без className
ingress_nginx_set_default_class: true
# Кастомная страница ошибок
# Показывать кастомные HTML при 4xx/5xx
ingress_nginx_custom_errors_enabled: true
# Текст/бренд на странице ошибок
ingress_nginx_error_cluster_name: "K3S Cluster"
ingress_nginx_error_cluster_domain: "" # например: cluster.example.com
# Домен в подсказке на error page (опционально)
ingress_nginx_error_cluster_domain: ""
# Ресурсы подов ingress controller
ingress_nginx_resources:
# Минимальные запросы CPU/памяти для планировщика
requests:
cpu: 100m
memory: 90Mi
# Верхняя граница cgroups
limits:
cpu: 500m
memory: 256Mi
# Доп. args controller (map) — тонкая настройка nginx
ingress_nginx_extra_args: {}
# ─── cert-manager ─────────────────────────────────────────────────────────────
# Версия cert-manager (образ/манифесты)
cert_manager_version: "v1.15.3"
# Namespace CRD, cert-manager, webhook
cert_manager_namespace: "cert-manager"
# Автоматически создать ClusterIssuer:
# none — не создавать
# selfsigned — самоподписанный CA
# letsencrypt — Let's Encrypt (требует публичный домен)
# Какой ClusterIssuer создать: none | selfsigned | letsencrypt
cert_manager_issuer: "letsencrypt"
# Email для Let's Encrypt (обязательно для letsencrypt)
# ACME account email (обязателен для letsencrypt, алерты от CA)
cert_manager_acme_email: "admin@example.com"
# ─── kube-prometheus-stack ────────────────────────────────────────────────────
@@ -145,8 +212,9 @@ cert_manager_acme_email: "admin@example.com"
# postgresql_storage_class: "" # "" = default StorageClass
# postgresql_replica_count: 0 # 0 = только primary
# Shared endpoint — используется другими аддонами когда addon_postgresql: true
# FQDN сервиса PostgreSQL в кластере (для URL в других чартах)
postgresql_external_host: "postgresql.postgresql.svc.cluster.local"
# Порт SQL
postgresql_external_port: 5432
# ─── MySQL ────────────────────────────────────────────────────────────────────
@@ -159,14 +227,17 @@ postgresql_external_port: 5432
# mysql_storage_class: "" # "" = default StorageClass
# mysql_secondary_replica_count: 0 # 0 = только primary
# Shared endpoint — используется другими аддонами когда addon_mysql: true
# FQDN MySQL service в кластере
mysql_external_host: "mysql.mysql.svc.cluster.local"
# Порт SQL
mysql_external_port: 3306
# ─── Databasus ────────────────────────────────────────────────────────────────
# Databasus автоматически получает подключение к PostgreSQL/MySQL
# если соответствующий аддон включён (addon_postgresql/addon_mysql: true).
# Создавать Ingress к веб-UI Databasus
databasus_ingress_enabled: true
# Hostname в Ingress
databasus_ingress_host: "backup.example.com"
# databasus_ingress_tls: false
# databasus_version: "" # "" = latest
@@ -178,8 +249,11 @@ databasus_ingress_host: "backup.example.com"
# minio_mode: "standalone" # standalone | distributed
# minio_storage_size: "10Gi"
# minio_storage_class: "" # "" = default StorageClass
# Публиковать MinIO Console через Ingress
minio_ingress_enabled: false
# Host для веб-консоли (порт 9001)
minio_console_ingress_host: "minio.example.com"
# Host для S3 API (порт 9000)
minio_api_ingress_host: "s3.example.com"
# minio_ingress_tls: false
@@ -337,7 +411,7 @@ minio_api_ingress_host: "s3.example.com"
# jenkins_plugins: [...] # переопределить список плагинов
# jenkins_agent_enabled: true
# ─── Gitea Actions ───────────────────────────────────────────────────────────<EFBFBD><EFBFBD><EFBFBD>
# ─── Gitea Actions ───────────────────────────────────────────────────────────
# GitHub Actions-совместимая CI/CD встроенная в Gitea.
# gitea_actions_enabled: false # включить Actions в Gitea (добавить в addon-gitea)
# gitea_actions_runner_enabled: false # установить act_runner Deployment (DinD)
@@ -407,7 +481,11 @@ minio_api_ingress_host: "s3.example.com"
# groups: [admins, users]
# ─── etcd backup ──────────────────────────────────────────────────────────────
# Каталог на control-plane, куда k3s пишет снапшоты etcd
etcd_backup_dir: "{{ k3s_data_dir }}/server/db/snapshots"
etcd_backup_retention: 5 # сколько снимков хранить
etcd_backup_copy_to_local: false # скопировать на Ansible-хост
# Сколько последних snapshot-файлов оставлять (ротация)
etcd_backup_retention: 5
# Копировать снапшот с ноды на машину, где запускается Ansible
etcd_backup_copy_to_local: false
# Локальный путь куда складывать копии (если copy_to_local: true)
etcd_backup_local_dir: "./etcd-backups"

View File

@@ -1,5 +1,7 @@
---
# 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:
@@ -7,41 +9,68 @@ k3s_version: "v1.29.3+k3s1"
# external — внешний etcd кластер (ноды задаются группой [etcd_nodes] в inventory)
k3s_etcd_type: "embedded"
# Токен из vault (создай group_vars/all/vault.yml)
# Токен кластера из 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"
# traefik всегда отключён — используем ingress-nginx
# 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
@@ -56,8 +85,10 @@ k3s_common_packages:
# Пользователь создаётся bootstrap'ом через роль k8s-user.
k3s_admin_user: devops
# После bootstrap все playbook подключаются как k3s_admin_user
# Пользователь SSH по умолчанию для playbooks после развёртывания
ansible_user: "{{ k3s_admin_user }}"
# Приватный ключ с машины, откуда запускается Ansible (в Docker: смонтирован id_rsa)
ansible_ssh_private_key_file: "~/.ssh/id_rsa"
# SSH публичный ключ Ansible-машины (монтируется в контейнер из ~/.ssh)
@@ -75,16 +106,21 @@ k3s_admin_disable_password_auth: false
k3s_join_address: "{{ hostvars[groups['k3s_master'][0]]['ansible_host'] }}"
# ─── kube-vip ─────────────────────────────────────────────────────────────────
# ОБЯЗАТЕЛЬНО: задай свободный IP из твоей подсети, не занятый DHCP!
# ОБЯЗАТЕЛЬНО: задай свободный IP из твоей подсети, не занятый DHCP! VIP для API и/или LoadBalancer
kube_vip_address: "192.168.1.100"
# Сетевой интерфейс на master-ноде.
# Сетевой интерфейс на 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 ────────────────────────────────────────────────────────────────────
@@ -115,14 +151,17 @@ cluster_service_users:
key_type: rsa
key_bits: 4096
# Локальная директория для сохранения сгенерированных SSH ключей
# Локальная директория на машине, где крутится `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
@@ -133,14 +172,15 @@ chrony_ntp_servers:
# K3S выпускает сертификаты с фиксированным сроком жизни 1 год.
# Systemd таймер обеспечивает автоматическое обновление до истечения срока,
# гарантируя желаемый срок жизни кластера без ручного вмешательства.
# Включить роль ротации сертификатов (systemd unit + таймер)
k3s_cert_auto_rotate: true
# Желаемый срок жизни кластера без ручного вмешательства (в годах)
# Сколько лет планируется вести кластер с автоматическим обновлением (влияет на политику/ожидания)
k3s_cert_validity_years: 5
# Ротация запускается, когда до истечения сертификата остаётся меньше N дней
# За сколько дней до конца срока действия сертификата срабатывает ротация
k3s_cert_rotate_before_days: 90
# Расписание проверки (формат systemd OnCalendar): monthly, weekly, daily
# Как часто unit проверяет срок: monthly | weekly | daily | или конкретный systemd OnCalendar
# или конкретный формат: "*-*-1 03:00:00" (1-е число каждого месяца)
k3s_cert_check_schedule: "monthly"

View File

@@ -1,5 +1,5 @@
---
# Секретные переменные — шифруй через ansible-vault!
# Секретные переменные — копируй в vault.yml и шифруй через ansible-vault!
#
# Создание зашифрованного файла:
# ansible-vault create group_vars/all/vault.yml
@@ -12,149 +12,169 @@
# ansible-playbook site.yml --vault-password-file ~/.vault_pass
# ─── K3S ──────────────────────────────────────────────────────────────────────
# Общий токен присоединения нод (server/agent); минимум 32 случайных символа
vault_k3s_token: "ЗАМЕНИ_НА_НАДЁЖНЫЙ_СЕКРЕТНЫЙ_ТОКЕН_МИН_32_СИМВОЛА"
# ─── PostgreSQL ────────────────────────────────────────────────────────────────
vault_postgresql_postgres_password: "changeme-postgres" # пароль суперпользователя postgres
vault_postgresql_password: "changeme-app" # пароль пользователя postgresql_auth_username
# Пароль суперпользователя СУБД postgres (роль/чарт Bitnami)
vault_postgresql_postgres_password: "changeme-postgres"
# Пароль прикладного пользователя (postgresql_auth_username) и его БД
vault_postgresql_password: "changeme-app"
# ─── MySQL ─────────────────────────────────────────────────────────────────────
vault_mysql_root_password: "changeme-root" # пароль root
vault_mysql_password: "changeme-app" # пароль пользователя mysql_auth_username
# Пароль root в MySQL/MariaDB
vault_mysql_root_password: "changeme-root"
# Пароль прикладного пользователя (mysql_auth_username)
vault_mysql_password: "changeme-app"
# ─── Prometheus / Grafana ──────────────────────────────────────────────────────
# Логин веб-интерфейса Grafana
vault_grafana_user: "admin"
# Пароль администратора Grafana
vault_grafana_password: "changeme-grafana"
# ─── Istio / Kiali ─────────────────────────────────────────────────────────────
# Заполняется после первой установки Istio:
# kubectl -n istio-system create token kiali --duration=8760h
# Token для входа Kiali (после установки: kubectl -n istio-system create token kiali --duration=8760h)
vault_kiali_token: ""
# ─── MinIO ─────────────────────────────────────────────────────────────────────
# Access key (логин) root MinIO
vault_minio_root_user: "admin"
# Secret key (пароль) root MinIO
vault_minio_root_password: "changeme-minio"
# ─── Velero (использует addon_minio как S3 backend) ───────────────────────────
# Обычно те же значения что vault_minio_root_user / vault_minio_root_password
vault_velero_s3_access_key: "admin" # = vault_minio_root_user
vault_velero_s3_secret_key: "changeme-minio" # = vault_minio_root_password
# ─── Velero (S3-совместимый backend, часто тот же MinIO) ───────────────────────
# S3 key id (обычно = vault_minio_root_user)
vault_velero_s3_access_key: "admin"
# S3 secret (обычно = vault_minio_root_password)
vault_velero_s3_secret_key: "changeme-minio"
# ─── Databasus ─────────────────────────────────────────────────────────────────
vault_databasus_db_password: "changeme-databasus" # пароль для user/db databasus в PostgreSQL
# Пароль пользователя/БД Databasus в PostgreSQL
vault_databasus_db_password: "changeme-databasus"
# ─── CrowdSec ──────────────────────────────────────────────────────────────────
# Ключ энролмента — получить на https://app.crowdsec.net → My Instances → +
# Оставь пустым для оффлайн-режима (без Central API)
# Ключ энролмента Central API (app.crowdsec.net); пусто = без облачной консоли
vault_crowdsec_enroll_key: ""
# ─── Harbor ────────────────────────────────────────────────────────────────────
vault_harbor_admin_password: "Harbor12345" # мин. 8 символов, латиница+цифры
vault_harbor_db_password: "changeme-harbor" # пароль user 'harbor' в PostgreSQL
# Пароль веб-админа Harbor (требования чарта: сложность)
vault_harbor_admin_password: "Harbor12345"
# Пароль пользователя БД Harbor во внешней PostgreSQL
vault_harbor_db_password: "changeme-harbor"
# ─── Gitea ─────────────────────────────────────────────────────────────────────
# Пароль первого администратора Gitea
vault_gitea_admin_password: "changeme-gitea"
vault_gitea_db_password: "changeme-gitea-db" # пароль user 'gitea' в PostgreSQL
# Пароль пользователя БД gitea при внешнем PostgreSQL
vault_gitea_db_password: "changeme-gitea-db"
# ─── ownCloud OCIS ─────────────────────────────────────────────────────────────
# Пароль первого администратора ownCloud
vault_owncloud_admin_password: "changeme-owncloud"
# ─── Nextcloud ─────────────────────────────────────────────────────────────────
# Пароль админа Nextcloud
vault_nextcloud_admin_password: "changeme-nextcloud"
vault_nextcloud_db_password: "changeme-nextcloud-db" # пароль user 'nextcloud' в PostgreSQL
# Пароль пользователя БД nextcloud при внешнем PostgreSQL
vault_nextcloud_db_password: "changeme-nextcloud-db"
# ─── Vaultwarden ───────────────────────────────────────────────────────────────
vault_vaultwarden_admin_token: "9R*eQ;G1M#)+Uw(afhoJ" # токен для /admin панели
vault_vaultwarden_smtp_password: "fntwztnkacanpbwa" # пароль SMTP (Yandex App Password)
# Секретный токен доступа к /admin
vault_vaultwarden_admin_token: "9R*eQ;G1M#)+Uw(afhoJ"
# Пароль SMTP для исходящей почты
vault_vaultwarden_smtp_password: "fntwztnkacanpbwa"
# ─── CSI GlusterFS / Heketi ────────────────────────────────────────────────────
vault_glusterfs_heketi_secret: "changeme-heketi" # пароль Heketi admin
# Пароль/secret для Heketi REST admin
vault_glusterfs_heketi_secret: "changeme-heketi"
# ─── SMTP Relay ────────────────────────────────────────────────────────────────
vault_smtp_relay_password: "fntwztnkacanpbwa" # Yandex App Password для sergey@antropoff.ru
# Пароль внешнего SMTP (например Yandex App Password)
vault_smtp_relay_password: "fntwztnkacanpbwa"
# ─── HashiCorp Vault (auto-unseal: aws) ────────────────────────────────────────
# Используется только при vault_auto_unseal_type: aws
vault_aws_kms_access_key: "" # AWS IAM Access Key ID
vault_aws_kms_secret_key: "" # AWS IAM Secret Access Key
# ─── HashiCorp Vault (auto-unseal: AWS KMS) ───────────────────────────────────
# Access Key ID IAM с правами на KMS
vault_aws_kms_access_key: ""
# Secret Access Key
vault_aws_kms_secret_key: ""
# Vault Transit Seal (vault_auto_unseal_type: transit)
vault_transit_seal_token: "" # token для доступа к transit engine другого Vault
# ─── Vault Transit Seal (другой Vault как KMS) ────────────────────────────────
# Токен с политикой на transit engine
vault_transit_seal_token: ""
# Azure Key Vault unseal (vault_auto_unseal_type: azure)
# ─── Azure Key Vault unseal ───────────────────────────────────────────────────
# Client secret приложения Azure AD
vault_azure_kv_client_secret: ""
# ─── External Secrets Operator → HashiCorp Vault ───────────────────────────────
# Получить после шага 6 в addons/external-secrets/README.md:
# vault write -f -field=secret_id auth/approle/role/eso-role/secret-id
vault_eso_approle_secret_id: "" # AppRole Secret ID для ESO → Vault
# ─── External Secrets Operator → HashiCorp Vault (AppRole) ───────────────────
# Secret ID роли eso-role (см. addons/external-secrets/README.md)
vault_eso_approle_secret_id: ""
# ─── Jenkins ───────────────────────────────────────────────────────────────────
# Пароль админа Jenkins (JCasC)
vault_jenkins_admin_password: "changeme-jenkins"
# ─── NetBird VPN ───────────────────────────────────────────────────────────────
vault_netbird_coturn_password: "changeme-coturn" # пароль TURN credentials
vault_netbird_router_setup_key: "" # Setup Key из NetBird Management UI → Setup Keys
vault_netbird_exit_node_setup_key: "" # Setup Key для exit node (можно тот же что router)
# Пароль coturn (TURN) для NetBird
vault_netbird_coturn_password: "changeme-coturn"
# Setup key для peer subnet router
vault_netbird_router_setup_key: ""
# Setup key для exit node
vault_netbird_exit_node_setup_key: ""
# ─── MediaServer ───────────────────────────────────────────────────────────────
# Plex claim token — получить на https://plex.tv/claim (действует 4 минуты)
# После первого деплоя оставить пустым (сервер уже привязан к аккаунту)
# Claim-токен Plex (plex.tv/claim, ~4 минуты)
vault_plex_claim_token: ""
# Hysteria2 SOCKS5 прокси (sidecar в Prowlarr)
#
# Способ 1 — вставить URL целиком из Shadowrocket / NekoBox / Hiddify:
# URL генерируется аддоном hysteria2-server автоматически (make addon-hysteria2-server)
# Полный URI hysteria2://... для Prowlarr sidecar
vault_hysteria2_url: ""
# Пример: vault_hysteria2_url: "hysteria2://mypassword@vps.example.com:443?insecure=1&obfs=salamander&obfs-password=secret"
#
# Способ 2 — указать параметры по отдельности (если vault_hysteria2_url пустой):
vault_hysteria2_server: "your-hysteria2-server.example.com:443" # host:port
vault_hysteria2_auth: "your-hysteria2-password" # пароль аутентификации
# ─── Hysteria2 VPN сервер (аддон hysteria2-server) ────────────────────────────
# Пароль для клиентов, подключающихся к VPS
# host:port Hysteria2, если не задан vault_hysteria2_url
vault_hysteria2_server: "your-hysteria2-server.example.com:443"
# Пароль клиента Hysteria2
vault_hysteria2_auth: "your-hysteria2-password"
# ─── Hysteria2 VPN сервер (VPS) ───────────────────────────────────────────────
# Пароль для подключения клиентов к серверу
vault_hysteria2_server_password: "changeme-hysteria2-server"
# Пароль obfuscation salamander (если hysteria2_server_obfs_enabled: true)
# Пароль obfs salamander на сервере
vault_hysteria2_obfs_password: ""
# Samba LAN-шара
# Пароль пользователя Samba (медиашара)
vault_samba_password: "changeme-samba"
# Transmission пароль веб-интерфейса
# Пароль веб-UI Transmission
vault_transmission_password: "changeme-transmission"
# ─── Yandex 360 DNS Controller ────────────────────────────────────────────────
# org_id: https://admin.yandex.ru/company-profile
# token: создай приложение на https://oauth.yandex.ru/ (scope: Управление записями DNS)
# затем: https://oauth.yandex.ru/authorize?response_type=token&client_id={CLIENT_ID}
# org_id в Yandex 360 и OAuth-токен приложения
yandex_dns:
# ID организации (admin.yandex.ru)
org_id: "3312086"
# OAuth access token
token: "y0_ЗАМЕНИ_НА_OAUTH_ТОКЕН"
# ── Technitium DNS HA ─────────────────────────────────────────────────────────
technitium_dns_admin_password: "ЗАМЕНИ_НААРОЛЬ" # минимум 8 символов
# Пароль веб-админа Technitium (min 8 символов)
technitium_dns_admin_password: "ЗАМЕНИ_НААРОЛЬ"
# ── Authelia SSO ──────────────────────────────────────────────────────────────
# Generate secrets:
# openssl rand -base64 64 → jwt_secret, session_secret
# openssl rand -base64 32 → storage_encryption_key
# openssl rand -base64 48 → oidc_hmac_secret
# openssl rand -hex 32 → each OIDC client secret
# Generate password hash:
# docker run authelia/authelia:latest authelia hash-password 'yourpassword'
# Секрет подписи JWT
authelia_jwt_secret: "ЗАМЕНИ_openssl_rand_-base64_64"
# Секрет сессий
authelia_session_secret: "ЗАМЕНИ_openssl_rand_-base64_64"
# Ключ шифрования storage (БД/файл)
authelia_storage_encryption_key: "ЗАМЕНИ_openssl_rand_-base64_32"
# HMAC для OIDC
authelia_oidc_hmac_secret: "ЗАМЕНИ_openssl_rand_-base64_48"
authelia_oidc_private_key: "" # оставь пустым — будет сгенерирован автоматически
# OIDC client secrets (генерируй для каждого включённого клиента):
# PEM private key для OIDC (пусто = сгенерировать)
authelia_oidc_private_key: ""
# Секреты зарегистрированных OIDC clients
authelia_oidc_secret_gitea: "ЗАМЕНИ_openssl_rand_-hex_32"
authelia_oidc_secret_grafana: "ЗАМЕНИ_openssl_rand_-hex_32"
authelia_oidc_secret_argocd: ""
authelia_oidc_secret_minio: ""
authelia_oidc_secret_vault: ""
authelia_oidc_secret_nextcloud: ""
# User password hashes (argon2id):
# Argon2id хэш пароля пользователя admin
authelia_user_admin_password_hash: "ЗАМЕНИ_НА_ARGON2ID_ХЭШ"