Commit Graph

11 Commits

Author SHA1 Message Date
Sergey Antropoff
fd8ef1c5c7 фикс документации 2026-04-27 08:45:15 +03:00
Sergey Antropoff
d9bc3c0bad фикс ошибок линта и молекулы 2026-04-27 08:40:08 +03:00
Sergey Antropoff
91299fcc1b test: добавить полное покрытие Molecule + HTML report генератор
Molecule тесты для всех аддонов и кластерный topology тест:

Аддоны (Helm lint + template + assertions):
- addons/technitium-dns/role/molecule/ — Primary/Secondary DNS, CronJob, kube-vip
- addons/authelia/role/molecule/ — OIDC clients, access_control, manifests
- addons/ingress-proxypass/role/molecule/ — proxies, Service/Endpoints/Ingress
- addons/ingress-add-domains/role/molecule/ — entries, Ingress per namespace
- addons/yandex-dns-controller/role/molecule/ — CronJob, ConfigMap, RBAC

Кластер:
- molecule/cluster/ — 3 master (embedded etcd HA) + 2 worker topology тест

Инфраструктура:
- scripts/molecule-report.py — генератор HTML отчётов из JUnit XML
  (читает /tmp/molecule-junit/*.xml → /tmp/molecule-report.html)
- requirements-python.txt — комментарий к отчётному блоку
- docker/entrypoint.sh — добавлены команды molecule-addon, molecule-cluster,
  molecule-report с автоматическим включением junit callback
- Makefile — targets: molecule-cluster, molecule-addon-*, molecule-addon-all,
  molecule-report; molecule-all генерирует HTML отчёт
- docs/molecule-testing.md — полная документация всех сценариев
- docs/addons.md — добавлены technitium-dns и authelia в таблицу аддонов
2026-04-26 18:57:11 +03:00
Sergey Antropoff
404347b535 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
2026-04-26 12:16:32 +03:00
Sergey Antropoff
5079975d5e feat: добавить аддон ingress-add-domains — добавить домены к сервисам кластера
Helm chart + Ansible роль, создающие Ingress-only правила для уже существующих
K8s сервисов. Каждый Ingress создаётся в namespace целевого сервиса.

Поддерживает: TLS (cert-manager или готовый Secret), basic auth (автохэш пароля
через openssl passwd -apr1), WebSocket, несколько хостов, per-entry аннотации.
2026-04-26 12:02:41 +03:00
Sergey Antropoff
fafcc34f03 docs: обновить документацию — добавить splitgw, ingress-proxypass, hysteria2-server
docs/networking.md:
  - Раздел ingress-proxypass: архитектура, пример конфигурации с TLS и auth
  - Раздел splitgw: TPROXY-маршрутизация, systemd и k8s режимы, пример TV
  - Раздел hysteria2-server: установка на VPS, SSH-пароль, URL для клиентов

docs/make-reference.md:
  - addon-mediaserver (с флагом без Hysteria2)
  - addon-hysteria2-server (SSH-ключ и интерактивный пароль -k)
  - addon-splitgw (systemd и k8s DaemonSet)
  - addon-ingress-proxypass

docs/troubleshooting.md:
  - Строки таблицы: 502/503/404 для ingress-proxypass, TPROXY для splitgw,
    firewall/TLS для hysteria2-server, Prowlarr sidecar для mediaserver
  - Разделы диагностики: ingress-proxypass, splitgw, hysteria2-server
    с конкретными командами kubectl/systemctl/iptables
2026-04-26 07:36:46 +03:00
Sergey Antropoff
e9e0ffa3c2 refactor: переименовать аддон ext-proxy → ingress-proxypass
- addons/ext-proxy/ → addons/ingress-proxypass/ (git mv, история сохранена)
- Все переменные Ansible: ext_proxy_* → ingress_proxypass_*
- Все имена ресурсов K8s: ext-proxy → ingress-proxypass (namespace, chart, release)
- Helm-хелперы: "ext-proxy.*" → "ingress-proxypass.*"
- Makefile: addon-ext-proxy → addon-ingress-proxypass
- group_vars/all/addons.yml: addon_ext_proxy → addon_ingress_proxypass
- playbooks/addons.yml: обновлена ссылка на роль
- docs/addons.md, README.md: обновлены все упоминания
2026-04-26 07:32:02 +03:00
Sergey Antropoff
aae7941416 feat: добавить аддон ext-proxy — проксировать внешние сервисы через ingress-nginx
Helm chart (один чарт создаёт Service + Endpoints + Ingress на каждый прокси):
- _helpers.tpl: хелперы ext-proxy.resourceName, ext-proxy.labels
- service.yaml: ClusterIP без selector — имя совпадает с Endpoints
- endpoints.yaml: внешние IP(s) + порт; несколько IP → round-robin через kube-proxy
- ingress.yaml: слияние аннотаций (defaults → сгенерированные → уровень прокси);
  поддержка TLS, basic auth, WebSocket, несколько хостов, маршрутизация по пути
- secret-auth.yaml: htpasswd Secret создаётся только при auth.enabled=true + credentials
- NOTES.txt: список прокси + команды проверки после установки

Ansible роль:
- defaults/main.yml: ext_proxy_namespace, ext_proxy_defaults, ext_proxy_proxies
- tasks/main.yml: валидация → namespace → копировать chart → lint → helm upgrade --install --atomic
- templates/values.yaml.j2: преобразование Ansible-переменных в Helm values через to_yaml

Интеграция: Makefile addon-ext-proxy, флаг addons.yml, playbooks/addons.yml,
            docs/addons.md, README.md (счётчик 37 аддонов)

README.md на русском языке с полной документацией:
архитектура, настройка, функции, DNS, проверка, примеры манифестов, устранение неисправностей

Дополнительно: splitgw_deploy_mode изменён на k8s
2026-04-26 07:21:41 +03:00
Sergey Antropoff
07fdc9a994 feat: добавить аддон splitgw — прозрачный split-tunnel gateway (sing-box + Hysteria2 TPROXY)
- Роль: defaults, tasks (main/deploy-host/deploy-k8s), handlers, templates (sing-box config, iptables setup/teardown, systemd, K8s DaemonSet/ConfigMap/Secret)
- Режимы: systemd (host) и K8s DaemonSet с hostNetwork + privileged init-container
- Маршрутизация: YouTube/Google → Hysteria2, RU (geoip/geosite) → прямой, остальное → прямой
- DNS без утечек: protocol=dns перехватывается TPROXY, per-domain DNS серверы
- Интеграция: inventory [splitgw], addons.yml flag, Makefile target, playbooks/addons.yml
- Документация: README.md, docs/addons.md, README.md (счётчик 36)
2026-04-26 06:56:17 +03:00
Sergey Antropoff
ba580f883e docs: добавить mediaserver в README и docs/addons.md
- README: новая строка в таблице аддонов (Медиасервер), счётчик 34 → 35
- docs/addons.md: mediaserver в каталоге, конфигурации addons.yml и vault секретах
- docs/addons.md: зависимость mediaserver → csi-nfs (RWX StorageClass)
- docs/addons.md: раздел MediaServer с примером vault.yml и описанием Hysteria2 sidecar
2026-04-26 00:53:33 +03:00
Sergey Antropoff
eccc1c2a01 docs: полная документация проекта — docs/ и README.md для каждого аддона
- README.md: перепиcан как компактный обзор (98 строк) с навигацией по docs/
- docs/: 13 файлов — getting-started, architecture, configuration, addons,
  storage, security, cicd, observability, networking, operations,
  make-reference, molecule-testing, troubleshooting
- addons/*/README.md: 31 новый файл — описание, параметры, примеры кода
  для каждого из 34 аддонов (vault и external-secrets уже существовали)
2026-04-26 00:22:06 +03:00