Files
K3S/addons/technitium-dns/role/chart/templates/NOTES.txt
Sergey Antropoff f3dfe87d03 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
2026-04-26 17:58:28 +03:00

39 lines
1.9 KiB
Plaintext

╔══════════════════════════════════════════════════════════════╗
║ Technitium DNS HA — Deployed ║
╚══════════════════════════════════════════════════════════════╝
Primary DNS:
LoadBalancer IP : {{ .Values.primary.ip }}
Web UI : http://{{ .Values.ingress.primary.host }}/
API : http://{{ .Values.primary.ip }}:5380/
{{- if .Values.secondary.enabled }}
Secondary DNS:
LoadBalancer IP : {{ .Values.secondary.ip }}
Web UI : http://{{ .Values.ingress.secondary.host }}/
{{- end }}
Configure Keenetic router (or DHCP server) to use:
Primary DNS : {{ .Values.primary.ip }}
{{- if .Values.secondary.enabled }}
Secondary DNS : {{ .Values.secondary.ip }}
{{- end }}
First-time setup (create your internal zone):
kubectl -n {{ .Release.Namespace }} exec -it deploy/{{ include "technitium-dns.name" . }}-primary -- \
curl -s "http://localhost:5380/api/zones/create?token=\$TOKEN&zone={{ .Values.dns.domain }}&type=Primary"
Zone sync CronJob (primary → secondary):
{{- if and .Values.sync.enabled .Values.secondary.enabled }}
kubectl -n {{ .Release.Namespace }} create job --from=cronjob/{{ include "technitium-dns.name" . }}-sync sync-manual-1
kubectl -n {{ .Release.Namespace }} logs -l app.kubernetes.io/component=sync --tail=50
{{- else }}
(disabled — set sync.enabled=true and secondary.enabled=true to enable)
{{- end }}
Logs:
kubectl -n {{ .Release.Namespace }} logs -l app.kubernetes.io/component=primary -f
{{- if .Values.secondary.enabled }}
kubectl -n {{ .Release.Namespace }} logs -l app.kubernetes.io/component=secondary -f
{{- end }}