Перейти к основному содержимому
Версия: 2.0.x

values-prod — самодостаточные values для production

Файлы здесь = содержимое ../values-minimal/ плюс prod-тюнинг размещения (resources requests/limits, tolerations, и закомментированные nodeSelector/affinity). Каждый файл самодостаточен — подключается одним -f, второй файл не нужен.

Как применять​

Один -f на чарт. Переключение dev↔prod — это просто смена директории:

# dev / минимальный профиль
helm install selena-cm {chart_path} -f ../values-minimal/selena-cm-values.yaml

# production
helm install selena-cm {chart_path} -f ../values-prod/selena-cm-values.yaml

Имена файлов в values-minimal/ и values-prod/ совпадают, поэтому в скрипте достаточно одной переменной с путём к директории.

Бизнес-логика, URL-ы и Secrets в обоих наборах идентичны — отличается только блок --- prod tuning ---. Если правите URL/Secret, синхронизируйте оба файла (или генерируйте values-prod из values-minimal).

Что активно, а что закомментировано​

БлокСостояниеПочему
resourcesактивен, конкретные стартовые числаБезопасен при любом значении; числа — стартовая точка под правку.
tolerationsактивен, с плейсхолдерамиToleration на несуществующий taint безвреден, поды не ломаются.
nodeSelectorзакомментированНезаполненный label оставит поды в Pending. Раскомментируйте после замены.
affinityзакомментированТребует label'ов конкретного чарта/кластера; неверное значение блокирует scheduling.

Плейсхолдеры​

Замените перед установкой (формат {var}):

PlaceholderЗначение
{node_label_key} / {node_label_value}Label узлов целевого node pool, например workload=selena.
{node_taint_key} / {node_taint_value}Taint узлов целевого node pool, например dedicated=selena.

Плюс все обычные плейсхолдеры основного guide ({storage_class}, {registry}, URL-ы Keycloak и т.д.) — они унаследованы из minimal-части.

Где какой ключ (схема у чартов разная)​

Чартresourcesscheduling
postgresprimary.resourcesprimary.*
keycloakresources (top)top-level
minio-operatoroperator.resourcesoperator.*
minio-tenanttenant.pools[0].resourcesper-pool
lakekeepercatalog.resourcescatalog.*
openldapresources (top)top-level
vaultserver.resourcesserver.*
kube-prometheus-stackprometheus.prometheusSpec / alertmanager.alertmanagerSpec / grafana / prometheusOperatorте же scope'ы
selena-operatorselenaOperator.resourcesselenaOperator.*
selena-cmresources (top)top-level
selena-ideweb/worker/scheduler.resourcestop-level (общие)
selena-aicomponents.{backend,frontend,mcp}.resourcestop-level (общие)

Стартовые resources — не финальные​

Числа — разумная отправная точка для среднего prod-стенда; правьте по факту (kubectl top pod, метрики Prometheus). Нюансы:

  • JVM (Keycloak, CM): memory limit должен быть заметно больше heap (-Xmx), иначе OOMKill.
  • Stateful (PostgreSQL, MinIO): CPU limit может throttle'ить под пиком — часто оставляют только requests + memory limit.
  • node-exporter (kube-prometheus-stack): не пиннить — DaemonSet на все узлы.
  • minio-tenant: minimal-геометрия 1 server / 1 volume = нет erasure coding; для prod ≥4 дисков.

Что ещё стоит усилить для prod (не входит в эти файлы)​

PodDisruptionBudget; topologySpreadConstraints; priorityClassName; HPA/autoscaling для stateless; securityContext/podSecurityContext; managed/HA PostgreSQL + бэкапы вместо standalone-SPOF; Prometheus retention/Thanos; NetworkPolicy; startupProbe для медленных JVM.