feat: добавить аддон yandex-dns-controller — управление DNS Yandex 360

CronJob (*/5 мин) reconcile ConfigMap → Yandex 360 DNS API.
Safe mode: управляет только записями с managed: true.
Никогда не удаляет неуправляемые записи (MX, DKIM, SPF и т.д.).

Удаление только при двух условиях одновременно:
  1. Запись была создана контроллером (есть в state ConfigMap)
  2. Запись полностью удалена из ConfigMap (не просто managed: false)

Переключение managed: true → false = release без удаления из DNS.

API: /directory/v1/org/{org_id}/domains/{domain}/dns
Fields: A→content, CNAME→target, TXT→text, MX→exchange+preference
This commit is contained in:
Sergey Antropoff
2026-04-26 12:16:32 +03:00
parent 5079975d5e
commit 404347b535
23 changed files with 976 additions and 1 deletions

View File

@@ -27,6 +27,9 @@
| NetBird: клиент не подключается | DNS не настроен | Настрой A-записи для Management, Signal, Coturn LB IPs |
| MinIO: distributed не поднимается | Мало нод | Distributed требует минимум 4 реплики/ноды |
| Nextcloud: redirect loop | HTTP→HTTPS конфликт | Добавь `TRUSTED_PROXIES` в конфиг Nextcloud |
| yandex-dns-controller: 401 Unauthorized | Неверный токен | Проверь `yandex_dns.token` в vault.yml; токен получается на oauth.yandex.ru |
| yandex-dns-controller: запись не создаётся | managed: false | Убедись что `managed: true` в ConfigMap |
| yandex-dns-controller: старая запись не удалена | Нет в state | Запись была создана вручную, не контроллером — удали вручную если нужно |
| ingress-add-domains: 404 | Ingress не найден в namespace сервиса | `kubectl get ingress -A -l app.kubernetes.io/instance=ingress-add-domains` |
| ingress-add-domains: 503 | Сервис/порт неверный | `kubectl -n <namespace> get svc <name>` — проверь имя и порт |
| ingress-proxypass: 502 Bad Gateway | Кластер не достигает внешний IP | `curl -v http://<external-ip>:<port>` с ноды кластера; проверь файрвол на внешнем хосте |