feat: добавить аддон technitium-dns — HA DNS Primary+Secondary с kube-vip LB и zone sync

- Helm chart: Primary и Secondary Deployment, kube-vip LoadBalancer сервисы (UDP+TCP :53),
  ClusterIP для Web UI, PVC (ReadWriteOnce), Secret, Ingress
- CronJob sync (*/5 мин): Python sync.py опрашивает Technitium REST API, создаёт Secondary
  зоны на secondary и вызывает forceSyncZone для каждой зоны
- ExternalDNS (disabled по умолчанию): RFC 2136 DDNS для автоматических DNS-записей из Ingress
- Ansible role: validate, namespace, Helm deploy, cleanup secrets, summary с Keenetic-инструкцией
- Интеграция: Makefile, playbooks/addons.yml, group_vars/all/addons.yml, vault.yml.example
- README с архитектурой, Keenetic-конфигурацией и troubleshooting
This commit is contained in:
Sergey Antropoff
2026-04-26 17:58:28 +03:00
parent f6fc33a38b
commit f3dfe87d03
24 changed files with 1329 additions and 3 deletions

View File

@@ -9,8 +9,8 @@ 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: true # metrics-server (kubectl top nodes/pods)
addon_prometheus_stack: true # Prometheus + Grafana + Alertmanager
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)
@@ -44,6 +44,7 @@ addon_splitgw: false # Split Gateway — прозрачный пр
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
# ─── NFS Server ───────────────────────────────────────────────────────────────
nfs_exports:
@@ -358,6 +359,28 @@ minio_api_ingress_host: "s3.example.com"
# 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"
# ─── etcd backup ──────────────────────────────────────────────────────────────
etcd_backup_dir: "{{ k3s_data_dir }}/server/db/snapshots"
etcd_backup_retention: 5 # сколько снимков хранить

View File

@@ -132,3 +132,6 @@ vault_transmission_password: "changeme-transmission"
yandex_dns:
org_id: "3312086"
token: "y0_ЗАМЕНИ_НА_OAUTH_ТОКЕН"
# ── Technitium DNS HA ─────────────────────────────────────────────────────────
technitium_dns_admin_password: "ЗАМЕНИ_НААРОЛЬ" # минимум 8 символов