Files
K3S/addons/technitium-dns/role/chart/templates/ingress.yaml
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

65 lines
2.0 KiB
YAML

{{- if .Values.ingress.enabled }}
---
# Ingress for primary Web UI
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: {{ include "technitium-dns.name" . }}-primary
namespace: {{ .Release.Namespace }}
labels:
{{- include "technitium-dns.labels" . | nindent 4 }}
app.kubernetes.io/component: primary
annotations:
kubernetes.io/ingress.class: {{ .Values.ingress.ingressClass | quote }}
spec:
{{- if .Values.ingress.tls.enabled }}
tls:
- hosts:
- {{ .Values.ingress.primary.host | quote }}
secretName: {{ .Values.ingress.tls.secretName | default (printf "%s-primary-tls" (include "technitium-dns.name" .)) | quote }}
{{- end }}
rules:
- host: {{ .Values.ingress.primary.host | quote }}
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: {{ include "technitium-dns.name" . }}-primary-web
port:
number: 5380
{{- if .Values.secondary.enabled }}
---
# Ingress for secondary Web UI
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: {{ include "technitium-dns.name" . }}-secondary
namespace: {{ .Release.Namespace }}
labels:
{{- include "technitium-dns.labels" . | nindent 4 }}
app.kubernetes.io/component: secondary
annotations:
kubernetes.io/ingress.class: {{ .Values.ingress.ingressClass | quote }}
spec:
{{- if .Values.ingress.tls.enabled }}
tls:
- hosts:
- {{ .Values.ingress.secondary.host | quote }}
secretName: {{ .Values.ingress.tls.secretName | default (printf "%s-secondary-tls" (include "technitium-dns.name" .)) | quote }}
{{- end }}
rules:
- host: {{ .Values.ingress.secondary.host | quote }}
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: {{ include "technitium-dns.name" . }}-secondary-web
port:
number: 5380
{{- end }}
{{- end }}