- 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
54 lines
1.9 KiB
YAML
54 lines
1.9 KiB
YAML
{{- if and .Values.sync.enabled .Values.secondary.enabled }}
|
|
apiVersion: batch/v1
|
|
kind: CronJob
|
|
metadata:
|
|
name: {{ include "technitium-dns.name" . }}-sync
|
|
namespace: {{ .Release.Namespace }}
|
|
labels:
|
|
{{- include "technitium-dns.labels" . | nindent 4 }}
|
|
spec:
|
|
schedule: {{ .Values.sync.schedule | quote }}
|
|
concurrencyPolicy: Forbid
|
|
successfulJobsHistoryLimit: 3
|
|
failedJobsHistoryLimit: 3
|
|
jobTemplate:
|
|
spec:
|
|
backoffLimit: 2
|
|
template:
|
|
metadata:
|
|
labels:
|
|
{{- include "technitium-dns.selectorLabels" . | nindent 12 }}
|
|
app.kubernetes.io/component: sync
|
|
spec:
|
|
restartPolicy: OnFailure
|
|
containers:
|
|
- name: sync
|
|
image: {{ .Values.sync.image }}
|
|
imagePullPolicy: IfNotPresent
|
|
command:
|
|
- python3
|
|
- /scripts/sync.py
|
|
env:
|
|
- name: PRIMARY_URL
|
|
value: "http://{{ include "technitium-dns.name" . }}-primary-web.{{ .Release.Namespace }}:5380"
|
|
- name: SECONDARY_URL
|
|
value: "http://{{ include "technitium-dns.name" . }}-secondary-web.{{ .Release.Namespace }}:5380"
|
|
- name: PRIMARY_LB_IP
|
|
value: {{ .Values.primary.ip | quote }}
|
|
- name: ADMIN_PASSWORD
|
|
valueFrom:
|
|
secretKeyRef:
|
|
name: {{ include "technitium-dns.name" . }}-secret
|
|
key: adminPassword
|
|
volumeMounts:
|
|
- name: scripts
|
|
mountPath: /scripts
|
|
resources:
|
|
{{- toYaml .Values.sync.resources | nindent 16 }}
|
|
volumes:
|
|
- name: scripts
|
|
configMap:
|
|
name: {{ include "technitium-dns.name" . }}-sync
|
|
defaultMode: 0755
|
|
{{- end }}
|