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 не
доходит ни одним путём.
32 lines
2.1 KiB
YAML
32 lines
2.1 KiB
YAML
# Слой 1: чарты инфраструктуры. Только HelmRelease и Namespace — никаких
|
||
# ресурсов, чьи CRD ставятся этими же чартами (см. clusters/aero/infrastructure.yaml).
|
||
#
|
||
# Порядок внутри слоя обеспечивают dependsOn в самих HelmRelease:
|
||
# istiod и ingressgateway ждут istio-base, istio-config ждёт всех троих.
|
||
#
|
||
# local-path-provisioner подключён ЯВНО, а встроенный в k3s — отключён флагом
|
||
# --disable=local-storage (см. docker-compose.yaml). Два провижинера с одним
|
||
# именем StorageClass дрались бы за одни и те же PVC, поэтому ровно один из них
|
||
# должен быть активен. Каталог данных не изменился: чарту задан тот же путь
|
||
# /var/lib/rancher/k3s/storage, что смонтирован с хоста.
|
||
apiVersion: kustomize.config.k8s.io/v1beta1
|
||
kind: Kustomization
|
||
resources:
|
||
# Хранилище идёт первым: PVC rabbitmq и minio без StorageClass не создадутся.
|
||
- ../../../infrastructure/local-path-provisioner/aero
|
||
- ../../../infrastructure/cert-manager/aero
|
||
- ../../../infrastructure/istio-base/aero
|
||
- ../../../infrastructure/istio-pilot/aero
|
||
- ../../../infrastructure/istio-gateway/aero
|
||
- ../../../infrastructure/istio-config/aero
|
||
- ../../../infrastructure/dashboard/aero
|
||
# Только Vault Agent Injector: сам Vault живёт в compose, а не в кластере.
|
||
- ../../../infrastructure/vault-injector/aero
|
||
# СУБД, брокер и объектное хранилище. Креды берут из Vault через injector,
|
||
# поэтому идут после него. Админки rabbitmq и minio выставлены наружу через
|
||
# istio-config/aero; postgresql наружу не публикуется — доступ только изнутри
|
||
# кластера.
|
||
- ../../../infrastructure/postgresql/aero
|
||
- ../../../infrastructure/rabbitmq/aero
|
||
- ../../../infrastructure/minio/aero
|