← Back to list

Таємниці під контролем: від Vault до Doppler

В якийсь момент кожен розробник або DevOps-інженер стикається з необхідністю ефективно керувати паролями, токенами, секретами та іншою…

Andriy Andrukhiv · 2025-10-02 18:10 · 1 claps · 2.7 min read
#kubernetes #doppler #secretmanager #hetzner-cloud
Open on Medium ↗
Wiki topics: ☁️ · DevOps & Cloud

Таємниці під контролем: від 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