iac/infrastructure/local-path-provisioner/aero/local-path-provisioner.yaml
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

63 lines
2.2 KiB
YAML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

apiVersion: helm.toolkit.fluxcd.io/v2
kind: HelmRelease
metadata:
name: local-path-provisioner
namespace: local-path-provisioner
spec:
interval: 2m
timeout: 10m
values:
replicaCount: 1
image:
repository: cr.yandex/crp3ccidau046kdj8g9q/contour/local-path-provisioner-nn/local-path-provisioner
tag: v0.0.24
pullPolicy: IfNotPresent
helperImage:
repository: cr.yandex/crp3ccidau046kdj8g9q/contour/local-path-provisioner-nn/busybox
tag: latest
imagePullSecrets:
- name: regcred
defaultSettings:
registrySecret: null
privateRegistry:
registryUrl: null
registryUser: null
registryPasswd: null
storageClass:
create: true
# Класс по умолчанию: встроенный в k3s провижинер отключён
# (--disable=local-storage в docker-compose.yaml), и default-класса в
# кластере иначе не остаётся — PVC без явного storageClassName висели бы
# в Pending.
defaultClass: true
name: local-path
reclaimPolicy: Delete
# Путь ВНУТРИ контейнера ноды. Взят тот же, что использовал встроенный
# провижинер, потому что он уже смонтирован с хоста:
# ./k3s-storage/<нода> -> /var/lib/rancher/k3s/storage
# Благодаря этому данные PVC переживают пересоздание контейнеров нод и
# доступны для бэкапа обычными средствами хоста. Дефолт чарта
# (/opt/local-path-provisioner) никуда не смонтирован — данные исчезли бы
# вместе с контейнером ноды.
nodePathMap:
- node: DEFAULT_PATH_FOR_NON_LISTED_NODES
paths:
- /var/lib/rancher/k3s/storage
rbac:
create: true
serviceAccount:
create: true
name: ""
resources: {}
nodeSelector: {}
tolerations: []
affinity: {}
configmap:
name: local-path-config
setup: |-
set -eu
mkdir -m 0777 -p "$VOL_DIR"
teardown: |-
set -eu
rm -rf "$VOL_DIR"