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 не
доходит ни одним путём.
68 lines
3.5 KiB
YAML
68 lines
3.5 KiB
YAML
# Инфраструктура разделена на два слоя, и это не косметика.
|
||
#
|
||
# Flux делает dry-run всей Kustomization целиком перед применением. Если
|
||
# положить cert-manager (который СТАВИТ CRD) и ClusterIssuer/Certificate
|
||
# (которые ЭТИ CRD используют) в один слой, dry-run падает с
|
||
# no matches for kind "Certificate" in version "cert-manager.io/v1"
|
||
# и не применяется НИЧЕГО — включая сам cert-manager. Дедлок: CRD никогда не
|
||
# появятся, потому что слой не может пройти проверку.
|
||
#
|
||
# Поэтому: controllers ставят чарты (и CRD), configs содержат только
|
||
# пользовательские ресурсы.
|
||
#
|
||
# ПОЧЕМУ У infra-configs НЕТ dependsOn (было — и создавало дедлок).
|
||
#
|
||
# В configs лежат ClusterIssuer'ы. Чарты из слоя controllers создают
|
||
# Certificate, а Flux после установки релиза ждёт готовности его ресурсов.
|
||
# С dependsOn получался круг:
|
||
# чарт с Certificate ждёт выпуска
|
||
# → выпуск ждёт ClusterIssuer
|
||
# → ClusterIssuer в configs
|
||
# → configs ждёт готовности controllers
|
||
# → а там висит тот самый чарт
|
||
# Наступали на это дважды: сначала istio-config, следом rabbitmq (тот провисел
|
||
# в "Running 'install' action" полчаса).
|
||
#
|
||
# Жёсткий порядок заменён сходимостью через повторы: пока cert-manager не
|
||
# поставил CRD, configs будет падать на dry-run и переприменяться каждые
|
||
# 10 минут, а как только CRD появятся — применится сам. Издатели при этом
|
||
# больше не зависят от здоровья чартов, которые в них нуждаются.
|
||
#
|
||
# apps по-прежнему ждёт controllers, и это правильно: без istiod и
|
||
# vault-agent-injector его поды физически не поднимутся.
|
||
---
|
||
apiVersion: kustomize.toolkit.fluxcd.io/v1
|
||
kind: Kustomization
|
||
metadata:
|
||
name: infra-controllers
|
||
namespace: flux-system
|
||
spec:
|
||
# 2 минуты, а не дефолтные 10: интервал определяет, как быстро слой заметит
|
||
# новую ревизию и как быстро повторит попытку после неудачи. С 10 минутами
|
||
# цикл «правка → проверка» растягивался до получаса, а сломанный релиз
|
||
# держал слой всё это время.
|
||
interval: 2m0s
|
||
path: ./clusters/aero/controllers
|
||
prune: true
|
||
wait: true
|
||
timeout: 10m0s
|
||
sourceRef:
|
||
kind: GitRepository
|
||
name: flux-system
|
||
---
|
||
apiVersion: kustomize.toolkit.fluxcd.io/v1
|
||
kind: Kustomization
|
||
metadata:
|
||
name: infra-configs
|
||
namespace: flux-system
|
||
spec:
|
||
interval: 2m0s
|
||
path: ./clusters/aero/configs
|
||
prune: true
|
||
# dependsOn намеренно отсутствует — см. комментарий в начале файла.
|
||
# Повторные попытки до появления CRD дешевле, чем дедлок.
|
||
retryInterval: 1m0s
|
||
sourceRef:
|
||
kind: GitRepository
|
||
name: flux-system
|