- 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
39 lines
1.9 KiB
Plaintext
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 }}
|