Интеграция с 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 infracreds | HashiCorp 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, выполните следующие шаги:
-
Откройте файл
values.yamlв каталоге Helm Chart. -
Добавьте блок
vaultсо следующими параметрами:vault:enabled: truesecretStore: vault # имя ClusterSecretStorepath: customer/infracreds # путь к секретам в KV версии 2refreshInterval: 1m # интервал синхронизации секретов с VaultОписание параметров представлено в разделе Параметры.
-
Примените изменения, выполнив команду в каталоге Helm Chart:
helm upgrade --install asoc \--namespace asoc \--values values.yaml \.Результат шага: Helm Chart создает объект
ExternalSecretвместоSecretinfracreds. Изменять поды не требуется.
Проверка результата
Чтобы убедиться, что секреты получены из Vault, выполните следующие шаги:
-
Проверьте состояние объекта
ExternalSecret:kubectl get externalsecret -n asocРезультат шага: объект имеет статус
SecretSynced. -
Проверьте, что
Secretinfracredsсоздан:kubectl get secret infracreds -n asoc -
Проверьте, что поды запущены:
kubectl get pods -n asocРезультат шага: поды имеют статус
Running, а значениеREADYсоответствует ожидаемому, например1/1.
Параметры
Параметры блока vault представлены в таблице ниже.
| Параметр | Обязательность | Описание | Пример |
|---|---|---|---|
vault.enabled | Да | Признак включения интеграции. Значение задается типом true или false без кавычек | true |
vault.secretStore | Да | Имя ClusterSecretStore с провайдером Vault | vault |
vault.path | Да | Путь к секретам в KV версии 2 относительно точки монтирования, заданной в ClusterSecretStore | customer/infracreds |
vault.refreshInterval | Да | Интервал синхронизации секретов с Vault | 1m |
Ротация секретов
Чтобы поды автоматически перезапускались при изменении секретов в Vault, в кластере должен быть установлен Reloader. Аннотация reloader.stakater.com/auto уже добавлена на поды в Helm Chart, дополнительная настройка не требуется.