- 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
50 lines
1.4 KiB
YAML
50 lines
1.4 KiB
YAML
---
|
|
# DNS LoadBalancer service — kube-vip assigns the static IP.
|
|
# Exposes UDP/53 + TCP/53 (requires K3s 1.26+ for MixedProtocol, which is the default).
|
|
apiVersion: v1
|
|
kind: Service
|
|
metadata:
|
|
name: {{ include "technitium-dns.name" . }}-primary
|
|
namespace: {{ .Release.Namespace }}
|
|
labels:
|
|
{{- include "technitium-dns.labels" . | nindent 4 }}
|
|
app.kubernetes.io/component: primary
|
|
annotations:
|
|
kube-vip.io/loadbalancerIPs: {{ .Values.primary.ip | quote }}
|
|
spec:
|
|
type: LoadBalancer
|
|
# Local preserves client source IP and avoids extra hop through kube-proxy
|
|
externalTrafficPolicy: Local
|
|
selector:
|
|
{{- include "technitium-dns.selectorLabels" . | nindent 4 }}
|
|
app.kubernetes.io/component: primary
|
|
ports:
|
|
- name: dns-udp
|
|
port: 53
|
|
targetPort: 53
|
|
protocol: UDP
|
|
- name: dns-tcp
|
|
port: 53
|
|
targetPort: 53
|
|
protocol: TCP
|
|
---
|
|
# ClusterIP service for Web UI — used as Ingress backend
|
|
apiVersion: v1
|
|
kind: Service
|
|
metadata:
|
|
name: {{ include "technitium-dns.name" . }}-primary-web
|
|
namespace: {{ .Release.Namespace }}
|
|
labels:
|
|
{{- include "technitium-dns.labels" . | nindent 4 }}
|
|
app.kubernetes.io/component: primary
|
|
spec:
|
|
type: ClusterIP
|
|
selector:
|
|
{{- include "technitium-dns.selectorLabels" . | nindent 4 }}
|
|
app.kubernetes.io/component: primary
|
|
ports:
|
|
- name: web-ui
|
|
port: 5380
|
|
targetPort: 5380
|
|
protocol: TCP
|