Commit Graph

467 Commits

Author SHA1 Message Date
emelinda
ee1881e516 feat(aero): django в k3s — backend, frontend, s3-proxy и выход наружу
Первый прикладной сервис переехал из compose в кластер. Развёрнуты backend,
frontend, redis, srx-admin и s3-proxy; celery выключен до следующего шага.
Платформа доступна по https://sarex.local.lonsdaleites.ru — корень отдаёт
frontend, /api/ и /admin/ уходят в backend, /media/ в s3-proxy.

Kafka и Zitadel в контуре не развёрнуты, и приложению они не нужны:
SERVER_KAFKA_ENABLED в base уже False, а zitadel_enabled в sarex-backend
читается ровно в одном месте — update_ams_user(), которая при выключенном
флаге сразу выходит. Но аннотации инжекции этих секретов пришлось убрать:
vault-agent-init не рендерит шаблон для несуществующего секрета и роняет под
в Init:Error ещё до старта приложения.

nginx-configmap заменён целиком. В base зашиты upstream'ы на namespace pm,
workspaces и processing; nginx резолвит их при старте и падал с
"host not found in upstream". pm убран как ненужный, для остальных двух
адрес вынесен в переменную с resolver — их резолвинг откладывается до
запроса, поэтому появление сервисов позже не потребует правки конфига.
Заменять пришлось именно патчем: объект с тем же kind+name уже приходит из
base, и добавление его в resources валит сборку слоя целиком.

Секреты django в Vault: postgres, rabbitmq, minio и общие RSA-ключи JWT.
RabbitMQ и MinIO подключены под административными кредами — отдельных
пользователей приложения чарты создавать не умеют, это осознанный долг.

Задача создания суперпользователя переписана с docker compose exec на
kubectl exec. ВНИМАНИЕ: она пока НЕ РАБОТАЕТ — команда падает, вывод скрыт
no_log. Механизм проверен отдельно и исправен, значит ошибка на стороне
Django. Чтобы увидеть причину, нужно временно снять no_log.
2026-08-08 16:49:16 +03:00
emelinda
8e14cd1e0b feat(aero): PostgreSQL с четырьмя базами и ускоренный цикл реконсиляции
PostgreSQL разворачивается пустым инстансом, состав баз повторяет то, что
сейчас провижинит postgres-init в compose:
  sarex_db     -> django       (ltree)
  workflow_db  -> processing   (uuid-ossp, ltree, hstore)
  bim_db       -> bim
  workspace_db -> workspace
Пароли администратора и владельцев берутся из Vault через
vault-agent-injector, в репозитории их нет. Расширения создаёт бутстрап
заранее: роли не суперпользователи и CREATE EXTENSION в миграциях им
недоступен. timescaledb включён в shared_preload_libraries сразу, хотя этим
базам не нужен, — параметр читается только при старте, и добавить его позже
означает перезапуск СУБД.

nodeSelector снимается postRenderers'ом. Чарт по умолчанию ставит
dedicated: sts в расчёте на выделенный пул нод; в контуре таких нет, и под
навсегда повисал в Pending, а следом застревал PVC, потому что у local-path
режим WaitForFirstConsumer. Через values это недостижимо: Helm сливает карты
по ключам, поэтому ни {}, ни другая метка dedicated: sts не убирают.

Цикл реконсиляции сокращён с 10 до 2 минут у всех Kustomization и
HelmRelease контура. Корневая Kustomization патчится из clusters/aero:
её файл генерирует flux bootstrap с пометкой DO NOT EDIT, а флаг --interval
задаёт периодичность только GitRepository. Таймаут установки postgresql
снижен с 20 до 10 минут — он определяет цену одной неудачной итерации.

Отключение собственных Gateway/VirtualService/Certificate чарта rabbitmq
переведено с JSON6902 на postRenderers: kustomize нормализует null в {}, а
пустую карту Helm сливает с дефолтами, поэтому настоящий null до Helm не
доходит ни одним путём.
2026-08-08 11:33:43 +03:00
emelinda
565faa0e17 feat(aero): базовый слой контура — Vault↔k3s, GitOps-синхронизация, выход наружу
Топология k3s: 1 мастер + 2 воркера (убран k3s-worker-3 с томом).

Vault ↔ k3s. Vault живёт в compose, вне кластера, поэтому получает
статический IP 172.28.0.13, DNS-мост в namespace vault и token reviewer
(SA vault-auth + system:auth-delegator). Ansible включает auth/kubernetes,
передавая адрес apiserver, CA и JWT ревьюера явно, и заводит политику с
ролями. Секрет token reviewer'а читается целиком в JSON: вариант
-o jsonpath={.data.ca\.crt} НЕ работает — модуль command разбирает строку
через shlex, съедает обратный слэш, kubectl возвращает пустую строку с
кодом 0, и отказ остаётся незамеченным до падения vault write.

Синхронизация репозитория в gitea. Нужное подмножество путей (замыкание
ссылок clusters/aero) едет архивом на хост и коммитится там: gitea не
публикуется дальше самого хоста, контур остаётся замкнутым. flux-bootstrap
вынесен в отдельную волну — до неё Vault получает auth/kubernetes, а
репозиторий наполняется, иначе первая реконсиляция падает на пустом репо.

Инфраструктура: vault-agent-injector (чарт vault-contour в режиме внешнего
Vault), local-path-provisioner взамен встроенного в k3s (--disable=
local-storage; путь данных прежний), rabbitmq и minio с кредами из Vault.

Выход наружу: порты 80/443 k3s-server опубликованы (istio ingressgateway
занимает эти hostPort), общий contour-gateway на wildcard-хост, сертификат
Let's Encrypt через http01. Имена в сертификате перечислены явно —
http01 не выдаёт wildcard, для них нужен dns01.

Разорваны два дедлока Flux: infra-configs больше не зависит от
infra-controllers (издатели не должны зависеть от здоровья чартов, которые
их используют), istio-config получил disableWait.

Модули ядра iptable_nat и смежные грузятся на хосте: ноды k3s —
контейнеры, istio-init правит iptables через ядро хоста, а на RED OS 8
(nf_tables) legacy-модули не загружены, из-за чего любой под с
istio-injection навсегда вставал в Init:Error.

Собственные Gateway/VirtualService/Certificate чартов rabbitmq и dashboard
отключены — маршрутизация описана централизованно. У rabbitmq это сделано
postRenderers, а не values: kustomize нормализует null в {}, а пустую карту
Helm сливает с дефолтами, возвращая их целиком.
2026-08-08 09:36:08 +03:00
emelinda
b28e5dd27a feat(fluxcd): introduce multi-layer infrastructure setup with kustomize and CRD dependency handling in aero environment 2026-08-03 16:02:35 +03:00
emelinda
457f0dad41 feat(ansible): add private registry configuration for k3s and Flux with secure key handling 2026-08-03 15:40:07 +03:00
a4f1424403 ++ move uralmine service domains up one level 2026-08-03 10:56:18 +03:00
ivan
c7b749fd09 ++ 2026-07-31 12:55:03 +05:00
emelinda
2296dae803 Disable initChownData in Grafana configuration within Prometheus Stack. 2026-07-30 20:04:12 +03:00
emelinda
833652bbc3 Reduce Prometheus Stack timeout to 5m and set disableWait for install, upgrade, and rollback operations. 2026-07-30 19:51:19 +03:00
emelinda
86cbaceeb3 Reduce gotk-sync interval from 10m to 1m in Flux configuration. 2026-07-30 18:20:07 +03:00
emelinda
432fdf4c2e Update Istio configuration to rename Superset references to BI in host mappings 2026-07-30 18:17:53 +03:00
ivan
da9494b483 change charts 2026-07-30 19:42:35 +05:00
emelinda
7553651efd Update Grafana securityContext in Prometheus Stack to enforce non-root user settings 2026-07-30 17:23:31 +03:00
ivan
5726d02b62 ++ 2026-07-29 18:19:52 +05:00
ivan
73ec054bba ++ 2026-07-29 17:34:10 +05:00
ivan
76a3ba7d4e ++ 2026-07-28 19:15:38 +05:00
ivan
24521afd47 ++ 2026-07-28 19:10:02 +05:00
ivan
5c43502cba ++ 2026-07-28 17:05:43 +05:00
ivan
7bf12669d5 ++ 2026-07-28 15:19:32 +05:00
ivan
2bd1276cdb ++ 2026-07-25 21:18:11 +05:00
ivan
12e4d88957 ++ 2026-07-25 20:40:22 +05:00
ivan
377280b2fa ++ 2026-07-25 20:32:08 +05:00
d2ac44a245 ++ fix superset redis image 2026-07-22 13:50:01 +03:00
d8f9c4381d ++ fix superset env duplicates 2026-07-22 13:28:22 +03:00
46d0de18fb add ss + trino to wb 2026-07-22 13:10:48 +03:00
ivan
52ab310c65 ++ 2026-07-21 14:22:34 +05:00
446284bf4a remove bootstrap jobs form ugmk 2026-07-20 18:48:11 +03:00
emelinda
ccbfd63a08 Migrate attachments app to HelmRelease in d8-ugmk-prod, enable in kustomization, and update related configurations. Remove legacy namespace resource. 2026-07-18 21:43:49 +03:00
emelinda
3febe6382b Remove attachments app from d8-ugmk-prod kustomization and its namespace resource 2026-07-18 20:47:24 +03:00
emelinda
0d87e03126 add control-interface in d8-ugmk-prod 2026-07-15 18:42:26 +03:00
emelinda
06acc89567 remove control-interface in d8-ugmk-prod 2026-07-15 18:35:57 +03:00
emelinda
a8aeb7df0e Migrate auth-flow app from raw manifest definitions to HelmRelease and add to d8-ugmk-prod kustomization. Remove deprecated deployment and service resources and update related configurations. 2026-07-15 18:04:32 +03:00
emelinda
0e0108ea52 Migrate remarks app from raw manifest definitions to HelmRelease and add to d8-ugmk-prod kustomization. Remove deprecated resources and update related configurations. 2026-07-15 17:55:40 +03:00
emelinda
68b2fc9eaf Migrate reviews app from raw manifest definitions to HelmRelease and add to d8-ugmk-prod kustomization. Remove deprecated resources and update related configurations. 2026-07-15 17:30:01 +03:00
emelinda
c46132f75c Migrate cross-section-static from raw manifest definitions to HelmRelease and add to d8-ugmk-prod kustomization. Remove deprecated resources and update related configurations. 2026-07-15 17:13:06 +03:00
emelinda
d60dc2a5e1 Enable attachments app in d8-ugmk-prod kustomization 2026-07-15 15:44:43 +03:00
emelinda
58c189cd69 Comment out attachments app in d8-ugmk-prod kustomization 2026-07-15 15:42:46 +03:00
6abde9cce2 ++ change infra domains 2026-07-15 14:53:57 +03:00
emelinda
8a350b4391 Restructure d8-ugmk-prod kustomization to directly include infrastructure resources instead of nested directory. 2026-07-15 14:41:59 +03:00
ivan
ed80fd33e6 ++ 2026-07-15 16:32:44 +05:00
63cdb767e6 ++ move ugmk infrastructure patches to overlays 2026-07-15 13:00:34 +03:00
52f90cb00c ++ clear postgresql chart node selector 2026-07-15 12:34:47 +03:00
b343438779 ++ move zitadel postgresql to master node 2026-07-15 12:26:52 +03:00
4b165fe6e1 ++ add deckhouse istio ingress and selfsigned tls 2026-07-15 12:07:54 +03:00
26f10ce34b ++ add istio routes for ugmk services 2026-07-15 11:50:31 +03:00
77b8c84b71 ++ move camunda databases external and scale down 2026-07-15 11:05:02 +03:00
67ad879aa3 ++ remove default sts selector from postgresql 2026-07-14 16:44:07 +03:00
576b67f566 ++ fix generic scheduling for postgresql and zitadel 2026-07-14 16:24:53 +03:00
089c125fa3 ++ fix postgresql namespace for zitadel 2026-07-14 16:17:43 +03:00
6beaa1bbbf ++ deploy zitadel to a dedicated postgresql 17 2026-07-14 16:04:32 +03:00