Обновлена документация под новые аддоны (gitlab, redis, mongodb, kafka, kafka-ui, rabbitmq) и новую модель явного выбора зависимостей. Добавлены и унифицированы описания переключателей *_database_mode и *_redis_mode, обновлена таблица зависимостей аддонов, примеры конфигурации и список vault-секретов.
617 lines
34 KiB
YAML
617 lines
34 KiB
YAML
---
|
||
# Аддоны кластера — выбери что устанавливать
|
||
# make install-full → core + все аддоны у которых true
|
||
# make addon-<name> → конкретный аддон напрямую (флаг в 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"
|