Skip to content

Развёртывание через 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 внутри чарта не изменяйте.

secrets:
  behavior: classic

preUpgrade:
  enabled: false

Остальные настройки добавляются в тот же файл оверрайдов. Если используются внешние 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. Включите хуки обновления в том же файле оверрайдов:

preUpgrade:
  enabled: true

Синхронизируйте 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

  1. Если режим ещё не classic, сначала выполните два helm upgrade (migrate2classic, затем classic) — см. раздел Управление секретами.
  2. Опишите Application на тот же release name и namespace.
  3. В values укажите secrets.behavior: classic.
  4. Добавьте в Application блок ignoreDifferences из раздела «Новая установка».
  5. Синхронизируйте Application. Не удаляйте Helm-релиз, пока не убедитесь, что Argo CD управляет ресурсами.

Пароли

Копировать пароли в Application не нужно: после перехода на classic через Helm (пункт 1 этого списка) они уже есть в Secret $RELEASE_NAME-vampy-secrets.

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

Раздел для инсталляций, которые уже управляются через Argo CD на предыдущей версии чарта.

Шаг 1. Сохраните текущий Secret:

kubectl get secret "${RELEASE_NAME}-vampy-config" -n "${RELEASE_NAMESPACE}" -o yaml

Шаг 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_PASSWORD
  • REDIS_PASSWORD
  • JWT_SECRET_KEY
  • SECRET_KEY
  • MFA_AES_KEY
  • INTERNAL_AUTH_TOKEN
  • INTERNAL_ENCRYPT_KEY
  • INSTALLATION_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.