Skip to content

Управление секретами

Новое в 2026.8.1

Чарт хранит пароли, токены и ключи шифрования в Kubernetes Secret. Режим хранения задаётся параметром secrets.behavior в файле values.

Эта страница описывает установку через Helm (helm install / helm upgrade). Если Vampy разворачивается через Argo CD, после этого раздела см. Развёртывание через Argo CD.

Какие секреты создаёт чарт

Secret Содержимое
$RELEASE_NAME-vampy-config Хосты, порты, имя БД, метаданные продукта, логин администратора. В режиме primitive здесь же хранятся пароли и токены.
$RELEASE_NAME-vampy-secrets Только пароли и ключи. Создаётся в режимах classic и migrate2classic.

Пароли и ключи генерируются при первой установке и дальше должны сохраняться:

  • POSTGRES_PASSWORD
  • REDIS_PASSWORD
  • JWT_SECRET_KEY
  • SECRET_KEY
  • MFA_AES_KEY
  • INTERNAL_AUTH_TOKEN
  • INTERNAL_ENCRYPT_KEY
  • INSTALLATION_ID

Не меняйте ключи на работающей инсталляции

Если эти значения изменятся, перестанут работать вход (в том числе 2FA), связь сервисов между собой и доступ к PostgreSQL и Redis.

Режимы secrets.behavior

Значение Где хранятся пароли и токены Когда использовать
primitive (по умолчанию) $RELEASE_NAME-vampy-config Текущие установки через Helm: менять режим не обязательно.
classic $RELEASE_NAME-vampy-secrets Новые установки, GitOps / Argo CD, подготовка к будущему значению по умолчанию.
migrate2classic Чарт записывает пароли в $RELEASE_NAME-vampy-secrets. Прежние значения остаются в vampy-config Только переход с primitive на classic. Не оставляйте этот режим постоянно.

Не удаляйте vampy-config

Secret $RELEASE_NAME-vampy-config используется во всех режимах: из него читаются хосты и порты. После перехода на classic не удаляйте его.

Новые установки

В следующих версиях чарта значение по умолчанию планируется сменить с primitive на classic. Для новых установок рекомендуется сразу указать classic.

Новая установка через Helm

Добавьте в файл my-values.yaml:

secrets:
  behavior: classic

Далее установите чарт как обычно — см. раздел Установка чарта.

При первом helm install / helm upgrade --install чарт создаст $RELEASE_NAME-vampy-secrets и запишет в него сгенерированные значения. На последующих helm upgrade функция lookup подставит уже существующие ключи, новые случайные значения не появятся.

Если параметр secrets.behavior не указывать, используется режим primitive. Такая установка тоже рабочая.

Обновление существующей установки

Обычное обновление версии чарта не требует смены режима. Оставьте primitive (или не указывайте параметр) и обновляйтесь по инструкции в разделе Обновление чарта.

Чтобы перейти на classic, выполните два последовательных helm upgrade.

Нельзя перейти одним шагом

Одним шагом с primitive на classic переходить нельзя. Job миграций схемы запускается до появления $RELEASE_NAME-vampy-secrets и завершится ошибкой secret "...-vampy-secrets" not found.

Шаг 1. Режим migrate2classic

В файле my-values.yaml:

secrets:
  behavior: migrate2classic

Обновите релиз тем же способом, что и обычно (--reset-values -f my-values.yaml, см. раздел Обновление чарта).

Чарт создаст $RELEASE_NAME-vampy-secrets и скопирует туда текущие значения. Поды начнут читать пароли из нового Secret, job обновления схемы — ещё из vampy-config.

Дождитесь статуса Running у подов и проверьте, что приложения ссылаются на новый Secret:

kubectl get pod -n $RELEASE_NAMESPACE \
  -l app.kubernetes.io/component=${RELEASE_NAME}-v-engine -o json \
| jq -r '.items[0].spec.containers[0].env[]
         | select(.name == "INTERNAL_AUTH_TOKEN")
         | .valueFrom.secretKeyRef.name'

Ожидается значение $RELEASE_NAME-vampy-secrets.

Шаг 2. Режим classic

secrets:
  behavior: classic

Снова выполните helm upgrade. Job миграций теперь читает $RELEASE_NAME-vampy-secrets (секрет уже есть в кластере).

После этого пароли перестанут записываться в vampy-config. Сам Secret оставьте: в нём по-прежнему хранятся хосты, порты и метаданные продукта. Старые копии паролей в нём могут остаться — приложение их уже не использует.

Внешние PostgreSQL и Redis

Ссылки database.secretsKeyRefs / redis.secretsKeyRefs работают во всех режимах и не заменяют secrets.behavior. Они задают, откуда взять логин, пароль и хост БД или Redis.

Это альтернатива полям database.password и redis.password в values: нужен один из способов, не оба с разными значениями.

Пример с хостом и отключением встроенных сервисов — в разделе Установка чарта. Пароль должен совпадать с паролем самой БД.

Задание паролей в values

Для внешней БД или Redis можно указать database.password и redis.password. Также доступны параметры vEngine.internalAuthToken и vEngine.internalEncryptKey. Значение из values чарт запишет в Secret вместо сгенерированного. Остальные ключи через values не задаются.