Развёртывание через Argo CD
Новое в 2026.8.1
Раздел описывает установку и обновление Vampy через Argo CD. Общие параметры чарта — в разделе Установка чарта, режимы секретов — в разделе Управление секретами.
Для работы с Argo CD в файле оверрайдов values укажите secrets.behavior: classic
и настройте Application так, чтобы Argo CD не перезаписывал
Secret $RELEASE_NAME-vampy-secrets.
Требуется Argo CD версии 2.3 или новее.
Новая установка
Шаг 1. В файл оверрайдов (например, my-values.yaml) добавьте параметры ниже.
Файл values.yaml внутри чарта не изменяйте.
Остальные настройки добавляются в тот же файл оверрайдов. Если используются внешние PostgreSQL и Redis, укажите хост, отключите встроенные сервисы и задайте учётные данные. Полные примеры — в разделе Установка чарта.
Пароль задаётся одним из способов:
database.passwordиredis.passwordв values — чарт запишет их в Secret;- или
database.secretsKeyRefsиredis.secretsKeyRefs— см. тот же раздел.
Если пароль не указать, чарт сгенерирует свои значения, и подключение к уже существующей БД не установится.
Если используются встроенные PostgreSQL и Redis, эти параметры указывать не нужно.
Шаг 2. В манифест Application добавьте:
spec:
ignoreDifferences:
- group: ""
kind: Secret
name: vampy-vampy-secrets # замените на $RELEASE_NAME-vampy-secrets
jsonPointers:
- /data
syncPolicy:
syncOptions:
- RespectIgnoreDifferences=true
Для релиза vampy имя Secret — vampy-vampy-secrets.
Поле name должно совпадать с именем Secret в namespace.
RespectIgnoreDifferences
Без RespectIgnoreDifferences опция ignoreDifferences только скрывает
статус OutOfSync. При синхронизации Argo CD всё равно запишет новые случайные значения.
Шаг 3. Синхронизируйте Application.
Появятся Secret $RELEASE_NAME-vampy-secrets и остальные ресурсы.
PostgreSQL и Redis перейдут в статус Running.
Первая синхронизация
Поды v-engine могут перезапускаться: схемы базы данных ещё нет.
Шаг 4. Включите хуки обновления в том же файле оверрайдов:
Синхронизируйте Application ещё раз. Job $RELEASE_NAME-v-upgrade-migrations создаст
схему базы данных, после этого поды перейдут в статус Running.
kubectl get secret -n $RELEASE_NAMESPACE ${RELEASE_NAME}-vampy-secrets
kubectl get job -n $RELEASE_NAMESPACE | grep upgrade-migrations
kubectl get pods -n $RELEASE_NAMESPACE
Хуки после первой синхронизации
Дальше обновляйте версию чарта как обычно. Параметр preUpgrade.enabled
больше не выключайте.
Переход с Helm на Argo CD
- Если режим ещё не
classic, сначала выполните дваhelm upgrade(migrate2classic, затемclassic) — см. раздел Управление секретами. - Опишите Application на тот же release name и namespace.
- В values укажите
secrets.behavior: classic. - Добавьте в Application блок
ignoreDifferencesиз раздела «Новая установка». - Синхронизируйте Application. Не удаляйте Helm-релиз, пока не убедитесь, что Argo CD управляет ресурсами.
Пароли
Копировать пароли в Application не нужно: после перехода на classic через Helm
(пункт 1 этого списка) они уже есть в Secret $RELEASE_NAME-vampy-secrets.
Обновление существующей установки Argo CD
Раздел для инсталляций, которые уже управляются через Argo CD на предыдущей версии чарта.
Шаг 1. Сохраните текущий Secret:
Шаг 2. Скопируйте из него пароли и токены в новый Secret. Не генерируйте значения заново:
kubectl get secret "${RELEASE_NAME}-vampy-config" -n "${RELEASE_NAMESPACE}" -o json \
| jq --arg name "${RELEASE_NAME}-vampy-secrets" '{
apiVersion: "v1",
kind: "Secret",
type: "Opaque",
metadata: {name: $name, namespace: .metadata.namespace},
data: (.data | with_entries(select(.key | IN(
"POSTGRES_PASSWORD", "REDIS_PASSWORD", "JWT_SECRET_KEY", "SECRET_KEY",
"MFA_AES_KEY", "INTERNAL_AUTH_TOKEN", "INTERNAL_ENCRYPT_KEY", "INSTALLATION_ID"
))))
}' \
| kubectl apply -f -
Шаг 3. Добавьте в Application блок ignoreDifferences из раздела «Новая установка».
Шаг 4. В values укажите secrets.behavior: migrate2classic и синхронизируйте
Application. Дождитесь статуса Running у подов, прежде чем переходить к шагу 5.
Шаг 5. Укажите secrets.behavior: classic и синхронизируйте ещё раз.
Автосинхронизация при смене режима
Если включена автоматическая синхронизация, не меняйте values на classic,
пока поды после шага 4 не перейдут в Running. Иначе оба режима применятся
подряд, и промежуточный migrate2classic не успеет завершиться.
Использование Vault, External Secrets или Sealed Secrets
Оператор должен создать Secret $RELEASE_NAME-vampy-secrets со всеми ключами
из списка ниже. В values укажите secrets.behavior: classic.
В Application добавьте тот же блок ignoreDifferences и RespectIgnoreDifferences=true
или исключите этот Secret из Application.
Параметры database.secretsKeyRefs и redis.secretsKeyRefs задают только учётные данные
БД и Redis. Остальные ключи по-прежнему должны быть в $RELEASE_NAME-vampy-secrets.
Состав Secret $RELEASE_NAME-vampy-secrets
POSTGRES_PASSWORDREDIS_PASSWORDJWT_SECRET_KEYSECRET_KEYMFA_AES_KEYINTERNAL_AUTH_TOKENINTERNAL_ENCRYPT_KEYINSTALLATION_ID
На новой установке чарт заполняет эти ключи сам.
На уже работающей инсталляции копируйте значения из $RELEASE_NAME-vampy-config,
не создавайте их заново.
Не удаляйте vampy-config
Secret $RELEASE_NAME-vampy-config после перехода на classic не удаляйте:
в нём хранятся хосты, порты и метаданные продукта.
Особенности работы чарта в Argo CD
Argo CD рендерит чарт через helm template без доступа к API кластера.
Уже созданные Secret он не видит и при каждой синхронизации подставляет новые
случайные пароли. Обычный helm upgrade этой проблемы не имеет:
функция lookup читает Secret из кластера.
Режим classic выносит пароли в отдельный Secret, но чарт по-прежнему формирует
его манифест. Чтобы Argo CD не перезаписывал существующие значения
для секрета $RELEASE_NAME-vampy-secrets, в Application нужны
ignoreDifferences и RespectIgnoreDifferences=true.
Job миграций в Argo CD запускается до остальных ресурсов, поэтому на первой
синхронизации хуки отключают (preUpgrade.enabled: false), а на второй включают обратно.
Автоматическая синхронизация
Хуки выполняются при каждой синхронизации, не только при смене версии чарта.
Job downscale на время останавливает поды v-background, v-orchestration
и v-scheduling. API при этом продолжает работать. Если включена
автоматическая синхронизация, фоновая обработка будет прерываться
на каждую синхронизацию.
Размер томов
Если тома расширяли вручную, укажите фактические размеры в values
(vPostgres.pvc.size, vFiles.pvc.files.size). Иначе Argo CD покажет
статус OutOfSync.