Таємниці під контролем: від Vault до Doppler
В якийсь момент кожен розробник або DevOps-інженер стикається з необхідністю ефективно керувати паролями, токенами, секретами та іншою…
Таємниці під контролем: від Vault до Doppler
В якийсь момент кожен розробник або DevOps-інженер стикається з необхідністю ефективно керувати паролями, токенами, секретами та іншою чутливою інформацією, яка обов’язково має залишатися захищеною.
У цій статті я розповім про Doppler — SaaS-платформу для централізованого управління секретами та конфігураціями.
Чому це важливо?
Використання систем для менеджменту секретів — це серйозний крок для будь-якої компанії. Це не просто “сховище паролів”, а продумана структура з розподілом прав доступу, можливістю масштабування та адаптацією під різні середовища: dev, staging, production.
Класичним рішенням у цій сфері є HashiCorp Vault. Це потужна система, яку можна використовувати як SaaS або розгорнути й адмініструвати самостійно. Я колись піднімав Vault у Kubernetes-кластері, експериментував і зрозумів: для повноцінного впровадження потрібно мати зрілу інфраструктуру і команду, готову до цього рівня складності.
Мій кейс
У моєму поточному проєкті інфраструктура розгорнута в Hetzner Cloud. Очікувано, для підняття всього використовується Terraform. Це означає, що постійно доводиться працювати з токенами й ключами доступу. А коли на сервери додається ще й Kubernetes-кластер, кількість секретів різко зростає.
Саме тому я почав шукати сучасні та красиві рішення з підтримкою Terraform і Kubernetes, щоб спростити роботу з секретами. Після огляду різних варіантів мій вибір зупинився на Doppler (doppler.com).
Чому саме Doppler?
- інтуїтивно зрозумілий веб-інтерфейс;
- відмінна документація;
- проста й швидка інтеграція з хмарою, CI/CD та Kubernetes.
Чесно скажу — у цю систему я буквально “закохався”. І не буду приховувати: ідею спробувати Doppler мені також підкинув ChatGPT 🙂
У наступних розділах я покажу, як саме інтегрував Doppler із Kubernetes-кластером.
Крок 1. Будуємо ієрархію секретів у Doppler. Наприклад таку

У цьому вікні наведено перелік конфігурацій — dev, dev_personal, dev_hetzner . Їх ми будемо використовувати потім. В середині кожної з конфігурацій є секрети, які потім і будемо витягувати.
Крок 2. Генеруємо сервісний токен

Крок 3. Цей токен потрібно покласти у секрети кубера, але ДУЖЕ важливо правильно його назвати
kubectl create namespace doppler-operator-system
kubectl -n doppler-operator-system create secret generic doppler-token-secret \
--from-literal=serviceToken='....’
Крок 4. Встановлюємо CRD. Звісно, що я роблю це через ArgoCD. Ключовою тут є секція
repoURL: https://helm.doppler.com
chart: doppler-kubernetes-operator
targetRevision: "1.7.1"
Щоб перевірити чи все ОК — достатньо подивитись логи подіка контроллера.
Крок 5. Витягуємо секрет із Doppler
apiVersion: secrets.doppler.com/v1alpha1
kind: DopplerSecret
metadata:
name: nginx-secret
namespace: doppler-operator-system
spec:
tokenSecret:
name: doppler-token-secret # Назва сікрета із кроку 3
project: hetzner-k8s # назва Doppler проекта
config: dev_hetzner # назва конфігурації (див крок 1)
managedSecret:
name: demo-secret # назва секрету який буде створений
namespace: default # у цьому неймспейсі
type: Opaque
secrets:
- API_KEY # Ключ секрету у конфігурації Doppler
Як результат виконання маніфесту — буде створений секрет demo-secret у неймспейсі default із такими ключами — API_KEY (власне це нам і потрібно), DOPPLER_CONFIG (назва конфігу, де живе секрет), DOPPLER_ENVIRONMENT (у цьому випадку — dev), DOPPLER_PROJECT (в цьому випадку — hetzner-k8s).
УПРАВЛІННЯ СЕКРЕТАМИ
Щоб подивитись перелік секретів, які були створені контроллером
kubectl get dopplersecret --all-namespaces
Варто знати, що якщо вручну Ви видалите секрет, створений Доплер контроллером — він повстане знову. Для того щоб видалити секрет спочатку видаляємо його із контроллера
kubectl -n doppler-operator-system delete dopplersecret nginx-secret
ПРОТЕ, сам куберівський секрет залишиться жити. Видалення dopplersecret не призводить до видалення самої сутності. Секрет demo-secret видалений не буде, але вже конроллер не буде за ним дивитись. Тому його, при потребі, можна вручну видалити.
Terraform code and doppler
Для коду terraform сервіс doppler також гарно інтегрується. Зазвичай секрети йдуть у змінні середовища. Звісно, для початку встановлюємо doppler cli . Якщо цікаво подивитись на список змінних і їх значення у Windows можна за допомогою команди:
doppler run -- powershell -Command "gci env:"
Ну а для інтеграції із тераформ кодом запускається інша команда.
doppler run --name-transformer tf-var -- terraform plan 메타데이터
- post_id
- 0fa0b8a5b780
- slug
- про-те-як-зберігати-таємниці-0fa0b8a5b780
- url
- https://medium.com/@AndriyAndrukhiv/%D0%BF%D1%80%D0%BE-%D1%82%D0%B5-%D1%8F%D0%BA-%D0%B7%D0%B1%D0%B5%D1%80%D1%96%D0%B3%D0%B0%D1%82%D0%B8-%D1%82%D0%B0%D1%94%D0%BC%D0%BD%D0%B8%D1%86%D1%96-0fa0b8a5b780
- canonical_url
- https://medium.com/@AndriyAndrukhiv/%D0%BF%D1%80%D0%BE-%D1%82%D0%B5-%D1%8F%D0%BA-%D0%B7%D0%B1%D0%B5%D1%80%D1%96%D0%B3%D0%B0%D1%82%D0%B8-%D1%82%D0%B0%D1%94%D0%BC%D0%BD%D0%B8%D1%86%D1%96-0fa0b8a5b780
- author_url
- https://medium.com/@AndriyAndrukhiv
- status
- ok
- fetched_at
- 2026-08-18 14:19:15