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

Интеграция с HashiCorp Vault

При необходимости можно включить интеграцию с HashiCorp Vault, которая позволяет хранить секретные данные не в файле values.yaml, а в специальном хранилище. Данные передаются в кластер Kubernetes с помощью компонента External Secrets Operator.

Интеграция с HashiCorp Vault доступна при установке TRON.ASOC с помощью Helm Chart. Подробнее об установке см. раздел Установка с помощью Helm Chart.

Принцип работы​

По умолчанию интеграция с HashiCorp Vault выключена и Helm Chart создает объект Secret с именем infracreds из значений файла values.yaml. При включении интеграции поменяется только источник этого объекта. Шаблоны подов остаются неизменными и поды продолжают получать секреты из Secret infracreds.

Различия между режимами представлены в таблице ниже.

РежимПоведение Helm ChartИсточник секретов
Интеграция выключена (vault.enabled: false)Создает Secret infracredsФайл values.yaml
Интеграция включена (vault.enabled: true)Создает объект ExternalSecret с целевым Secret infracredsHashiCorp Vault

При включенной интеграции External Secrets Operator извлекает все ключи, расположенные в Vault по пути vault.path, и записывает их в Secret infracreds.

Перед началом работы​

Перед включением интеграции убедитесь в следующем:

  • в кластере установлен компонент External Secrets Operator (external-secrets);
  • создан компонент ClusterSecretStore с провайдером Vault (хранилище KV версии 2), и для него настроена аутентификация;
  • секреты TRON.ASOC размещены в Vault KV по одному пути;
  • в Vault по этому пути присутствуют все ключи из секции secret.infracreds.envs файла values.yaml. Всего таких ключей 18, включая производные: AWS_*, CLICKHOUSE_ADMIN_*, DATA_SOURCE_* и OPENAI_API_KEY.
Внимание

Значение ключа NEW_ENCRYPTION_SECRET_KEY в Vault должно совпадать со значением, которое использовалось при первом развертывании TRON.ASOC. Если значения различаются, данные не будут расшифрованы.

Порядок действий​

Включение интеграции​

Чтобы включить интеграцию с HashiCorp Vault, выполните следующие шаги:

  1. Откройте файл values.yaml в каталоге Helm Chart.

  2. Добавьте блок vault со следующими параметрами:

    vault:
    enabled: true
    secretStore: vault # имя ClusterSecretStore
    path: customer/infracreds # путь к секретам в KV версии 2
    refreshInterval: 1m # интервал синхронизации секретов с Vault

    Описание параметров представлено в разделе Параметры.

  3. Примените изменения, выполнив команду в каталоге Helm Chart:

    helm upgrade --install asoc \
    --namespace asoc \
    --values values.yaml \
    .

    Результат шага: Helm Chart создает объект ExternalSecret вместо Secret infracreds. Изменять поды не требуется.

Проверка результата​

Чтобы убедиться, что секреты получены из Vault, выполните следующие шаги:

  1. Проверьте состояние объекта ExternalSecret:

    kubectl get externalsecret -n asoc

    Результат шага: объект имеет статус SecretSynced.

  2. Проверьте, что Secret infracreds создан:

    kubectl get secret infracreds -n asoc
  3. Проверьте, что поды запущены:

    kubectl get pods -n asoc

    Результат шага: поды имеют статус Running, а значение READY соответствует ожидаемому, например 1/1.

Параметры​

Параметры блока vault представлены в таблице ниже.

ПараметрОбязательностьОписаниеПример
vault.enabledДаПризнак включения интеграции. Значение задается типом true или false без кавычекtrue
vault.secretStoreДаИмя ClusterSecretStore с провайдером Vaultvault
vault.pathДаПуть к секретам в KV версии 2 относительно точки монтирования, заданной в ClusterSecretStorecustomer/infracreds
vault.refreshIntervalДаИнтервал синхронизации секретов с Vault1m

Ротация секретов​

Чтобы поды автоматически перезапускались при изменении секретов в Vault, в кластере должен быть установлен Reloader. Аннотация reloader.stakater.com/auto уже добавлена на поды в Helm Chart, дополнительная настройка не требуется.