--- # Аддоны кластера — выбери что устанавливать # make install-full → core + все аддоны у которых true # make addon- → конкретный аддон напрямую (флаг в addons.yml игнорируется) # Включить роль 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 # Настройки Redis для ArgoCD: # argocd_redis_mode: "auto" # auto | internal | external_redis # argocd_redis_host: "redis-master.redis.svc.cluster.local" # argocd_redis_port: 6379 # argocd_redis_password: "{{ vault_redis_password }}" # Longhorn: реплицируемый блочный диск addon_longhorn: false # Web UI кластера (kubernetes-dashboard) addon_kubernetes_dashboard: false # Bitnami PostgreSQL, общий instance для аддонов addon_postgresql: false # Bitnami MySQL addon_mysql: false # GitLab + GitLab Runner в Kubernetes addon_gitlab: false # Redis (standalone/replication) addon_redis: false # MongoDB (standalone/replicaset) addon_mongodb: false # Kafka (standalone/cluster, KRaft) addon_kafka: false # Kafka UI (web-интерфейс Kafka) addon_kafka_ui: false # RabbitMQ (standalone/cluster) addon_rabbitmq: 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 # CSI Ceph: ceph-csi драйверы RBD/CephFS для PVC addon_ceph_rock: false # Старый флаг csi-ceph (основной для ceph-csi драйвера) 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]) ─────────────────────────────────── # Список 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 (Helm, StorageClass) ──────────────────────────────────── # Версия чарта/образа CSI NFS csi_nfs_version: "v4.8.0" # Namespace, куда ставится Helm release драйвера csi_nfs_namespace: "kube-system" # 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 # 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 (Helm) ─────────────────────────────────────────────────── # Версия Helm-чарта ingress-nginx ingress_nginx_version: "4.10.1" # Namespace для controller и default backend ingress_nginx_namespace: "ingress-nginx" # Тип Service: LoadBalancer — kube-vip выдаст внешний IP из LAN ingress_nginx_service_type: "LoadBalancer" # Статический 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" # Домен в подсказке на 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 | letsencrypt cert_manager_issuer: "letsencrypt" # ACME account email (обязателен для letsencrypt, алерты от CA) cert_manager_acme_email: "admin@example.com" # ─── kube-prometheus-stack ──────────────────────────────────────────────────── # prometheus_stack_version: "60.3.0" # prometheus_retention_days: 7 # prometheus_storage_size: "10Gi" # Grafana: логин и пароль — задай в vault.yml: # vault_grafana_user: "admin" # vault_grafana_password: "ваш-пароль" # prometheus_grafana_ingress_enabled: false # prometheus_grafana_ingress_host: "grafana.example.com" # ─── Istio ──────────────────────────────────────────────────────────────────── # istio_version: "1.22.2" # istio_mtls_mode: "STRICT" # STRICT | PERMISSIVE | DISABLE # istio_install_gateway: true # Kiali (UI для Istio) — опционально вместе с Istio # kiali_enabled: false # kiali_ingress_host: "kiali.example.com" # ─── PostgreSQL ─────────────────────────────────────────────────────────────── # Пароли задаются в group_vars/all/vault.yml: # vault_postgresql_postgres_password: "..." # vault_postgresql_password: "..." # postgresql_auth_username: "appuser" # postgresql_auth_database: "appdb" # postgresql_storage_size: "8Gi" # postgresql_storage_class: "" # "" = default StorageClass # postgresql_replica_count: 0 # 0 = только primary # FQDN сервиса PostgreSQL в кластере (для URL в других чартах) postgresql_external_host: "postgresql.postgresql.svc.cluster.local" # Порт SQL postgresql_external_port: 5432 # ─── MySQL ──────────────────────────────────────────────────────────────────── # Пароли задаются в group_vars/all/vault.yml: # vault_mysql_root_password: "..." # vault_mysql_password: "..." # mysql_auth_username: "appuser" # mysql_auth_database: "appdb" # mysql_storage_size: "8Gi" # mysql_storage_class: "" # "" = default StorageClass # mysql_secondary_replica_count: 0 # 0 = только primary # FQDN MySQL service в кластере mysql_external_host: "mysql.mysql.svc.cluster.local" # Порт SQL mysql_external_port: 3306 # ─── GitLab + GitLab Runner ─────────────────────────────────────────────────── # GitLab ставится Helm-чартом, runner включается как поды в кластере. # При addon_postgresql: true — используется внешний PostgreSQL из addon_postgresql. # gitlab_version: "" # "" = последняя версия чарта # gitlab_namespace: "gitlab" # gitlab_ingress_enabled: true # gitlab_ingress_host: "gitlab.example.com" # gitlab_ingress_class: "nginx" # gitlab_ingress_tls: false # gitlab_domain: "example.com" # базовый домен для GitLab chart # gitlab_admin_password: "{{ vault_gitlab_admin_password }}" # gitlab_storage_class: "" # "" = default StorageClass # gitlab_gitaly_storage_size: "20Gi" # gitlab_runner_install: true # gitlab_runner_replicas: 2 # gitlab_runner_concurrent: 10 # gitlab_database_mode: "auto" # auto | internal | external_postgresql # gitlab_db_name: "gitlabhq_production" # gitlab_db_username: "gitlab" # gitlab_db_password: "{{ vault_gitlab_db_password }}" # для внешнего PostgreSQL # ─── Redis ───────────────────────────────────────────────────────────────────── # Bitnami Redis. architecture: standalone | replication # redis_version: "19.6.4" # redis_namespace: "redis" # redis_architecture: "standalone" # redis_auth_enabled: true # redis_auth_password: "{{ vault_redis_password }}" # redis_storage_class: "" # redis_storage_size: "8Gi" # redis_replica_count: 2 # используется при architecture=replication # redis_metrics_enabled: true # ─── MongoDB ─────────────────────────────────────────────────────────────────── # Bitnami MongoDB. architecture: standalone | replicaset # mongodb_version: "15.6.21" # mongodb_namespace: "mongodb" # mongodb_architecture: "standalone" # mongodb_auth_enabled: true # mongodb_root_user: "root" # mongodb_root_password: "{{ vault_mongodb_root_password }}" # mongodb_username: "appuser" # mongodb_password: "{{ vault_mongodb_password }}" # mongodb_database: "appdb" # mongodb_storage_class: "" # mongodb_storage_size: "8Gi" # mongodb_replica_count: 3 # используется при architecture=replicaset # mongodb_metrics_enabled: true # ─── Kafka (KRaft) ───────────────────────────────────────────────────────────── # Bitnami Kafka без ZooKeeper (KRaft). mode: standalone | cluster # kafka_version: "30.1.8" # kafka_namespace: "kafka" # kafka_mode: "standalone" # kafka_storage_class: "" # kafka_storage_size: "20Gi" # kafka_auth_enabled: false # kafka_client_passwords: ["{{ vault_kafka_client_password }}"] # kafka_controller_replica_count: 3 # используется в mode=cluster # kafka_broker_replica_count: 3 # используется в mode=cluster # kafka_metrics_enabled: true # ─── Kafka UI ────────────────────────────────────────────────────────────────── # Web UI для просмотра топиков, consumer groups и сообщений Kafka. # kafka_ui_version: "0.7.6" # kafka_ui_namespace: "kafka-ui" # kafka_ui_ingress_enabled: true # kafka_ui_ingress_host: "kafka-ui.example.com" # kafka_ui_ingress_class: "nginx" # kafka_ui_ingress_tls: false # kafka_ui_cluster_name: "k3s-kafka" # kafka_ui_bootstrap_servers: "kafka.kafka.svc.cluster.local:9092" # kafka_ui_auth_username: "admin" # kafka_ui_auth_password: "{{ vault_kafka_ui_password }}" # ─── RabbitMQ ────────────────────────────────────────────────────────────────── # Bitnami RabbitMQ. mode: standalone | cluster # rabbitmq_version: "15.5.1" # rabbitmq_namespace: "rabbitmq" # rabbitmq_mode: "standalone" # rabbitmq_auth_username: "appuser" # rabbitmq_auth_password: "{{ vault_rabbitmq_password }}" # rabbitmq_erlang_cookie: "{{ vault_rabbitmq_erlang_cookie }}" # rabbitmq_storage_class: "" # rabbitmq_storage_size: "8Gi" # rabbitmq_replica_count: 3 # используется в mode=cluster # rabbitmq_metrics_enabled: true # ─── 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 # ─── MinIO ──────────────────────────────────────────────────────────────────── # Логин/пароль задаются в vault.yml: # vault_minio_root_user: "admin" # vault_minio_root_password: "..." # 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 # ─── Velero ─────────────────────────────────────────────────────────────────── # Credentials задаются в vault.yml: # vault_velero_s3_access_key: "..." # логин MinIO (обычно = vault_minio_root_user) # vault_velero_s3_secret_key: "..." # пароль MinIO # velero_s3_url: "http://minio.minio.svc.cluster.local:9000" # endpoint addon_minio # velero_s3_bucket: "velero" # velero_schedule_enabled: true # velero_schedule_cron: "0 2 * * *" # каждый день в 02:00 # velero_schedule_ttl: "720h" # хранить 30 дней # ─── CrowdSec ───────────────────────────────────────────────────────────────── # Ключ энролмента задаётся в vault.yml (необязательно): # vault_crowdsec_enroll_key: "..." # с https://app.crowdsec.net # crowdsec_instance_name: "k3s-cluster" # crowdsec_collections: "crowdsecurity/linux crowdsecurity/nginx crowdsecurity/kubernetes" # crowdsec_nginx_bouncer_enabled: false # ─── Harbor ─────────────────────────────────────────────────────────────────── # Пароли задаются в vault.yml: # vault_harbor_admin_password: "Harbor12345" # vault_harbor_db_password: "..." # используется только при addon_postgresql: true # harbor_ingress_host: "harbor.example.com" # harbor_registry_storage_size: "20Gi" # harbor_database_mode: "auto" # auto | internal | external_postgresql # ─── Gitea ──────────────────────────────────────────────────────────────────── # Пароли задаются в vault.yml: # vault_gitea_admin_password: "..." # vault_gitea_db_password: "..." # используется только при addon_postgresql: true # gitea_ingress_host: "gitea.example.com" # gitea_version: "" # "" = автопоиск последней версии # gitea_ssh_enabled: false # NodePort SSH для git clone # gitea_database_mode: "auto" # auto | internal | external_postgresql # ─── ownCloud (OCIS) ────────────────────────────────────────────────────────── # Пароль задаётся в vault.yml: # vault_owncloud_admin_password: "..." # owncloud_ingress_host: "cloud.example.com" # owncloud_version: "" # "" = автопоиск последней версии # owncloud_storage_users_size: "20Gi" # ─── Nextcloud ──────────────────────────────────────────────────────────────── # Пароли задаются в vault.yml: # vault_nextcloud_admin_password: "..." # vault_nextcloud_db_password: "..." # используется только при addon_postgresql: true # nextcloud_ingress_host: "nextcloud.example.com" # nextcloud_version: "" # "" = автопоиск последней версии # nextcloud_storage_size: "20Gi" # nextcloud_database_mode: "external_postgresql" # auto | sqlite | external_postgresql # ─── Loki ───────────────────────────────────────────────────────────────────── # loki_storage_type: "filesystem" # filesystem (авто: s3 если addon_minio: true) # loki_storage_size: "10Gi" # loki_retention_period: "720h" # 30 дней # loki_ingress_enabled: false # loki_ingress_host: "loki.example.com" # ─── Promtail ───────────────────────────────────────────────────────────────── # DaemonSet на всех нодах. Требует addon_loki: true (или внешний Loki). # promtail_loki_url: "http://loki.loki.svc.cluster.local:3100/loki/api/v1/push" # ─── Tempo ──────────────────────────────────────────────────────────────────── # Distributed tracing backend. # tempo_storage_size: "10Gi" # tempo_retention_period: "720h" # tempo_receivers_otlp_enabled: true # порты 4317 (gRPC) и 4318 (HTTP) # tempo_receivers_jaeger_enabled: true # порты 14268 (HTTP) и 14250 (gRPC) # tempo_receivers_zipkin_enabled: false # порт 9411 # ─── Pushgateway ────────────────────────────────────────────────────────────── # Для push-метрик из batch-задач, CI/CD, скриптов. # pushgateway_ingress_enabled: false # pushgateway_ingress_host: "pushgateway.example.com" # pushgateway_persistence_enabled: false # сохранять метрики между рестартами # ─── CSI S3 ─────────────────────────────────────────────────────────────────── # Монтирует S3/MinIO бакеты как PersistentVolume в поды. # При addon_minio: true — автоматически использует внутренний MinIO. # csi_s3_mounter: "geesefs" # geesefs | s3fs | rclone # csi_s3_endpoint: "" # авто-MinIO если addon_minio: true # csi_s3_access_key: "" # авто из vault_minio_root_user # csi_s3_secret_key: "" # авто из vault_minio_root_password # ─── CSI Ceph (ceph-csi: RBD + CephFS) ─────────────────────────────────────── # Требует уже существующий Ceph-кластер (FSID, MON, user/key). csi_ceph_driver_ref: "devel" # ветка/тег ceph/ceph-csi (devel|v3.x.x) csi_ceph_namespace: "kube-system" csi_ceph_cluster_id: "b9127830-b0cc-4e34-aa47-9d1a2e9949a8" # FSID (ceph fsid) csi_ceph_monitors: - "10.0.0.11:6789" - "10.0.0.12:6789" - "10.0.0.13:6789" csi_ceph_user_id: "kubernetes" csi_ceph_user_key: "{{ vault_csi_ceph_user_key }}" csi_ceph_rbd_storage_class_name: "ceph-rbd" csi_ceph_rbd_pool: "rbd" csi_ceph_rbd_fs_type: "ext4" csi_ceph_rbd_storage_class_default: false csi_ceph_cephfs_storage_class_name: "cephfs" csi_ceph_cephfs_fs_name: "cephfs" csi_ceph_cephfs_pool: "cephfs_data" csi_ceph_cephfs_storage_class_default: false csi_ceph_reclaim_policy: "Delete" # Delete | Retain csi_ceph_volume_binding_mode: "Immediate" # Immediate | WaitForFirstConsumer csi_ceph_enable_rbd: true csi_ceph_enable_cephfs: true # ─── CSI GlusterFS ──────────────────────────────────────────────────────────── # Требует внешний GlusterFS кластер + Heketi REST API. # csi_glusterfs_heketi_url: "http://heketi.glusterfs.local:8080" # csi_glusterfs_cluster_id: "" # heketi-cli cluster list # csi_glusterfs_volume_type: "replicate:3" # csi_glusterfs_endpoints: # прямое подключение без Heketi # - name: "gluster01" # ip: "192.168.1.10" # ─── Vaultwarden ────────────────────────────────────────────────────────────── # Self-hosted Bitwarden-совместимый менеджер паролей. # Секреты задаются в vault.yml: # vault_vaultwarden_admin_token: "..." # токен доступа к /admin # vault_vaultwarden_smtp_password: "..." # пароль SMTP # vaultwarden_domain: "https://vault.example.com" # vaultwarden_signups_allowed: false # vaultwarden_ingress_host: "vault.example.com" # vaultwarden_smtp_enabled: false # vaultwarden_smtp_host: "smtp.yandex.ru" # vaultwarden_smtp_from: "vault@example.com" # vaultwarden_smtp_port: 465 # vaultwarden_smtp_security: "force_tls" # force_tls | starttls | off # vaultwarden_smtp_username: "user@example.com" # ─── SMTP Relay ─────────────────────────────────────────────────────────────── # Postfix relay для отправки почты из подов через внешний SMTP (Yandex/Gmail/etc). # Пароль задаётся в vault.yml: vault_smtp_relay_password # Использование: SMTP_HOST=smtp-relay.smtp-relay.svc.cluster.local, SMTP_PORT=25 # smtp_relay_host: "smtp.yandex.ru" # smtp_relay_port: 465 # smtp_relay_username: "sergey@antropoff.ru" # smtp_relay_from: "vault@antropoff.ru" # smtp_relay_allowed_sender_domains: "antropoff.ru" # smtp_relay_mynetworks: "10.0.0.0/8 172.16.0.0/12 192.168.0.0/16 127.0.0.0/8" # ─── HashiCorp Vault ────────────────────────────────────────────────────────── # Менеджер секретов. README: addons/vault/README.md # vault_mode: "standalone" # standalone (1 pod) | ha (3 pods Raft) # vault_auto_unseal_type: "none" # none | k8s | aws | gcp | azure | transit # k8s: ключи в Secret (homelab), aws/gcp/azure/transit (production) # vault_injector_enabled: true # Vault Agent Injector (авто-инжекция в поды) # vault_ingress_enabled: false # vault_ingress_host: "vault-hc.example.com" # vault_storage_size: "10Gi" # Для AWS KMS unseal (vault.yml): vault_aws_kms_access_key, vault_aws_kms_secret_key # ─── External Secrets Operator ──────────────────────────────────────────────── # Синхронизирует секреты из Vault/AWS/GCP в k8s Secrets. README: addons/external-secrets/README.md # Требует предварительно созданного AppRole в Vault (шаги в README). # external_secrets_vault_url: "http://vault.vault.svc.cluster.local:8200" # external_secrets_vault_kv_path: "secret" # external_secrets_vault_role_id: "" # после создания AppRole в Vault # external_secrets_vault_store_name: "vault-backend" # Пароль задаётся в vault.yml: vault_eso_approle_secret_id # ─── Jenkins ────────────────────────────────────────────────────────────────── # CI/CD сервер с dynamic k8s pod agents. # Пароль задаётся в vault.yml: vault_jenkins_admin_password # jenkins_ingress_host: "jenkins.example.com" # jenkins_storage_size: "20Gi" # jenkins_plugins: [...] # переопределить список плагинов # jenkins_agent_enabled: true # ─── Gitea Actions ─────────────────────────────────────────────────────────── # GitHub Actions-совместимая CI/CD встроенная в Gitea. # gitea_actions_enabled: false # включить Actions в Gitea (добавить в addon-gitea) # gitea_actions_runner_enabled: false # установить act_runner Deployment (DinD) # gitea_actions_runner_replicas: 2 # параллельных runner # gitea_actions_runner_dind_enabled: true # Docker-in-Docker для docker build/run в jobs # ─── NetBird VPN ────────────────────────────────────────────────────────────── # Self-hosted WireGuard-based VPN. Management + Signal + Coturn (STUN/TURN) + kube-vip LB. # Пароли задаются в vault.yml: vault_netbird_coturn_password, vault_netbird_router_setup_key # netbird_domain: "netbird.example.com" # netbird_management_lb_ip: "" # пусто = kube-vip назначит автоматически # netbird_signal_lb_ip: "" # netbird_coturn_lb_ip: "" # Subnet router (доступ к подсетям кластера из VPN): # netbird_subnet_router_enabled: false # netbird_subnet_routes: ["192.168.1.0/24", "10.42.0.0/16"] # Exit node (весь интернет-трафик VPN-клиентов через k3s ноду): # netbird_exit_node_enabled: false # После установки — настрой маршруты в Management UI # ─── Technitium DNS HA ─────────────────────────────────────────────────────── # Self-hosted Primary+Secondary DNS с kube-vip LoadBalancer IP и авто-синхронизацией зон. # Пароль задаётся в vault.yml: technitium_dns_admin_password # technitium_dns_primary_ip: "192.168.1.53" # статический IP для primary DNS (kube-vip) # technitium_dns_secondary_enabled: true # technitium_dns_secondary_ip: "192.168.1.54" # статический IP для secondary DNS (kube-vip) # technitium_dns_primary_node: "" # pinned hostname (пусто = soft anti-affinity) # technitium_dns_secondary_node: "" # technitium_dns_domain: "home.local" # локальная DNS-зона # technitium_dns_forwarders: ["1.1.1.1", "8.8.8.8"] # technitium_dns_recursion: "AllowOnlyForPrivateNetworks" # Allow | Deny | AllowOnlyForPrivateNetworks # technitium_dns_primary_host: "dns.home.local" # Web UI через ingress # technitium_dns_secondary_host: "dns-secondary.home.local" # technitium_dns_ingress_enabled: true # technitium_dns_ingress_tls_enabled: false # technitium_dns_sync_schedule: "*/5 * * * *" # как часто синхронизировать зоны primary→secondary # ExternalDNS (автоматические DNS-записи из Ingress/Service): # technitium_dns_externaldns_enabled: false # technitium_dns_externaldns_domain_filter: ["home.local"] # technitium_dns_externaldns_policy: "upsert-only" # sync | upsert-only # technitium_dns_externaldns_txt_owner_id: "k3s-home" # ─── Authelia SSO ──────────────────────────────────────────────────────────── # Централизованная аутентификация: forward-auth для ingress-nginx + OIDC provider. # Все секреты — в vault.yml (authelia_jwt_secret, authelia_session_secret, и др.) # authelia_host: "auth.home.local" # URL портала авторизации # authelia_domain: "home.local" # базовый домен (session cookie domain) # authelia_two_factor_enabled: false # включить 2FA для защищённых сервисов # authelia_storage_type: "sqlite" # sqlite | postgresql # authelia_redis_mode: "auto" # auto | internal | external_redis | disabled # authelia_redis_host: "redis-master.redis.svc.cluster.local" # authelia_redis_port: 6379 # authelia_smtp_enabled: false # SMTP для сброса пароля и 2FA email # Домены с защитой (forward-auth): # authelia_protected_domains: [sonarr.home.local, radarr.home.local, ...] # authelia_admin_domains: [argocd.home.local, vault.home.local, ...] # authelia_bypass_domains: [plex.home.local] # OIDC клиенты (включить нужные): # authelia_oidc_gitea_enabled: true # + authelia_oidc_secret_gitea в vault # authelia_oidc_grafana_enabled: true # + authelia_oidc_secret_grafana в vault # authelia_oidc_argocd_enabled: false # authelia_oidc_minio_enabled: false # authelia_oidc_vault_enabled: false # Пользователи (хэши паролей — в vault.yml): # authelia_users: # admin: # displayname: "Administrator" # email: "admin@home.local" # groups: [admins, users] # ─── etcd backup ────────────────────────────────────────────────────────────── # Каталог на control-plane, куда k3s пишет снапшоты etcd etcd_backup_dir: "{{ k3s_data_dir }}/server/db/snapshots" # Сколько последних snapshot-файлов оставлять (ротация) etcd_backup_retention: 5 # Копировать снапшот с ноды на машину, где запускается Ansible etcd_backup_copy_to_local: false # Локальный путь куда складывать копии (если copy_to_local: true) etcd_backup_local_dir: "./etcd-backups"