Yandex Cloud
Поиск
Связаться с намиПодключиться
  • Документация
  • Блог
  • Все сервисы
  • Статус работы сервисов
    • Популярные
    • Инфраструктура и сеть
    • Платформа данных
    • Контейнеры
    • Инструменты разработчика
    • Бессерверные вычисления
    • Безопасность
    • Мониторинг и управление ресурсами
    • Машинное обучение
    • Бизнес-инструменты
  • Все решения
    • По отраслям
    • По типу задач
    • Экономика платформы
    • Безопасность
    • Техническая поддержка
    • Каталог партнёров
    • Обучение и сертификация
    • Облако для стартапов
    • Облако для крупного бизнеса
    • Центр технологий для общества
    • Облако для интеграторов
    • Поддержка IT-бизнеса
    • Облако для фрилансеров
    • Обучение и сертификация
    • Блог
    • Документация
    • Контент-программа
    • Мероприятия и вебинары
    • Контакты, чаты и сообщества
    • Идеи
    • Истории успеха
    • Тарифы Yandex Cloud
    • Промоакции и free tier
    • Правила тарификации
  • Документация
  • Блог
Проект Яндекса
© 2025 ООО «Яндекс.Облако»
Yandex Lockbox
  • Начало работы
    • Все руководства
    • Синхронизация с секретами Managed Service for Kubernetes
    • Хранение подключений и переменных Apache Airflow™ в Yandex Lockbox
    • Построение пайплайна CI/CD в GitLab с использованием serverless-продуктов
    • Безопасное хранение паролей для GitLab CI в виде секретов Yandex Lockbox
    • Загрузка данных из Яндекс Директ в витрину Yandex Managed Service for ClickHouse® с использованием Yandex Cloud Functions, Yandex Object Storage и Yandex Data Transfer
    • Развертывание отказоустойчивой архитектуры с прерываемыми ВМ
    • Создание интерактивного serverless-приложения с использованием WebSocket
    • Автоматическое копирование объектов из одного бакета Object Storage в другой
    • Безопасная передача пароля в скрипт инициализации
  • Квоты и лимиты
  • Управление доступом
  • Правила тарификации
  • Справочник Terraform
  • Метрики Monitoring
  • Аудитные логи Audit Trails
  • История изменений
  • Вопросы и ответы

В этой статье:

  • Перед началом работы
  • Необходимые платные ресурсы
  • Создайте инфраструктуру
  • Настройте окружение
  • Установите External Secrets Operator и настройте Yandex Lockbox
  • Настройте кластер Managed Service for Kubernetes
  • Создайте External Secret
  • Удалите созданные ресурсы
  1. Практические руководства
  2. Синхронизация с секретами Managed Service for Kubernetes

Синхронизация с секретами Yandex Managed Service for Kubernetes

Статья создана
Yandex Cloud
Улучшена
Обновлена 21 апреля 2025 г.
  • Перед началом работы
    • Необходимые платные ресурсы
    • Создайте инфраструктуру
    • Настройте окружение
  • Установите External Secrets Operator и настройте Yandex Lockbox
  • Настройте кластер Managed Service for Kubernetes
  • Создайте External Secret
  • Удалите созданные ресурсы

С помощью инструмента External Secrets Operator вы можете настроить синхронизацию секретов Yandex Lockbox с секретами кластера Yandex Managed Service for Kubernetes.

Существует несколько схем интеграции Yandex Lockbox с сервисом Managed Service for Kubernetes. Далее для примера рассматривается схема ESO as a Service:

Чтобы настроить синхронизацию секретов:

  1. Установите External Secrets Operator и настройте Yandex Lockbox.
  2. Настройте кластер Managed Service for Kubernetes.
  3. Создайте External Secret.

Если созданные ресурсы вам больше не нужны, удалите их.

Также инфраструктуру для синхронизации секретов Yandex Lockbox с секретами кластера Managed Service for Kubernetes можно развернуть через Terraform с помощью готового файла конфигурации.

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

Зарегистрируйтесь в Yandex Cloud и создайте платежный аккаунт:

  1. Перейдите в консоль управления, затем войдите в Yandex Cloud или зарегистрируйтесь.
  2. На странице Yandex Cloud Billing убедитесь, что у вас подключен платежный аккаунт, и он находится в статусе ACTIVE или TRIAL_ACTIVE. Если платежного аккаунта нет, создайте его и привяжите к нему облако.

Если у вас есть активный платежный аккаунт, вы можете создать или выбрать каталог, в котором будет работать ваша инфраструктура, на странице облака.

Подробнее об облаках и каталогах.

Необходимые платные ресурсыНеобходимые платные ресурсы

В стоимость ресурсов для синхронизации секретов входит:

  • Плата за использование мастера Managed Service for Kubernetes (см. тарифы Managed Service for Kubernetes).
  • Плата за вычислительные ресурсы и диски группы узлов Managed Service for Kubernetes (см. тарифы Yandex Compute Cloud).
  • Плата за хранение и операции с секретом (см. тарифы Yandex Lockbox).

Создайте инфраструктуруСоздайте инфраструктуру

Вручную
Terraform
  1. Если у вас еще нет сети, создайте ее.

  2. Если у вас еще нет подсетей, создайте их в зонах доступности, где будут созданы кластер Managed Service for Kubernetes и группа узлов.

  3. Создайте сервисные аккаунты:

    • Сервисный аккаунт для ресурсов Kubernetes с ролями k8s.clusters.agent и vpc.publicAdmin на каталог, в котором создается кластер Managed Service for Kubernetes.
    • Сервисный аккаунт для узлов Managed Service for Kubernetes с ролью container-registry.images.puller на каталог с реестром Docker-образов. От его имени узлы Managed Service for Kubernetes будут скачивать из реестра необходимые Docker-образы.

    Совет

    Вы можете использовать один и тот же сервисный аккаунт для всех операций.

  4. Создайте группы безопасности для кластера Managed Service for Kubernetes и входящих в него групп узлов.

    Важно

    От настройки групп безопасности зависит работоспособность и доступность кластера, а также запущенных в нем сервисов и приложений.

  5. Создайте кластер Managed Service for Kubernetes и группу узлов. При создании кластера Managed Service for Kubernetes укажите ранее созданные сервисные аккаунты для ресурсов и узлов и группы безопасности.

  6. Создайте секрет Yandex Lockbox со следующими параметрами:

    • Имя — lockbox-secret.
    • Ключ — введите неконфиденциальный идентификатор password.
    • Значение — введите конфиденциальные данные для хранения p@$$w0rd.

    Сохраните идентификатор секрета, он понадобится в дальнейшем.

  1. Если у вас еще нет Terraform, установите его.

  2. Получите данные для аутентификации. Вы можете добавить их в переменные окружения или указать далее в файле с настройками провайдера.

  3. Настройте и инициализируйте провайдер. Чтобы не создавать конфигурационный файл с настройками провайдера вручную, скачайте его.

  4. Поместите конфигурационный файл в отдельную рабочую директорию и укажите значения параметров. Если данные для аутентификации не были добавлены в переменные окружения, укажите их в конфигурационном файле.

  5. Скачайте в ту же рабочую директорию файл конфигурации кластера Managed Service for Kubernetes k8s-cluster-and-lockbox.tf.

    В этом файле описаны:

    • Сеть.

    • Подсеть.

    • Секрет Yandex Lockbox.

    • Кластер Managed Service for Kubernetes.

    • Сервисный аккаунт для ресурсов и узлов Managed Service for Kubernetes.

    • Группы безопасности, которые содержат необходимые правила для кластера Managed Service for Kubernetes и входящих в него групп узлов.

      Важно

      От настройки групп безопасности зависит работоспособность и доступность кластера, а также запущенных в нем сервисов и приложений.

  6. Укажите в файле конфигурации:

    • Идентификатор каталога.
    • Версию Kubernetes для кластера Managed Service for Kubernetes и групп узлов.
    • Имя сервисного аккаунта для ресурсов и узлов Managed Service for Kubernetes.
  7. Проверьте корректность файлов конфигурации Terraform с помощью команды:

    terraform validate
    

    Если в файлах конфигурации есть ошибки, Terraform на них укажет.

  8. Создайте необходимую инфраструктуру:

    1. Выполните команду для просмотра планируемых изменений:

      terraform plan
      

      Если конфигурации ресурсов описаны верно, в терминале отобразится список изменяемых ресурсов и их параметров. Это проверочный этап: ресурсы не будут изменены.

    2. Если вас устраивают планируемые изменения, внесите их:

      1. Выполните команду:

        terraform apply
        
      2. Подтвердите изменение ресурсов.

      3. Дождитесь завершения операции.

    В указанном каталоге будут созданы все требуемые ресурсы. Проверить появление ресурсов и их настройки можно в консоли управления.

  9. Сохраните выведенный в терминале идентификатор созданного секрета, он понадобится в дальнейшем.

Настройте окружениеНастройте окружение

  1. Если у вас еще нет интерфейса командной строки Yandex Cloud (CLI), установите и инициализируйте его.

    По умолчанию используется каталог, указанный при создании профиля CLI. Чтобы изменить каталог по умолчанию, используйте команду yc config set folder-id <идентификатор_каталога>. Также для любой команды вы можете указать другой каталог с помощью параметров --folder-name или --folder-id.

  2. Установите утилиту jq:

    sudo apt update && sudo apt install jq
    
  3. Установите kubectl и настройте его на работу с созданным кластером.

Установите External Secrets Operator и настройте Yandex LockboxУстановите External Secrets Operator и настройте Yandex Lockbox

  1. Установите External Secrets Operator согласно инструкции.
  2. Назначьте сервисному аккаунту, который вы создали при установке External Secrets Operator, роль lockbox.payloadViewer на созданный ранее секрет lockbox-secret.

Настройте кластер Managed Service for KubernetesНастройте кластер Managed Service for Kubernetes

  1. Создайте пространство имен ns, в котором будут размещены объекты External Secrets Operator:

    kubectl create namespace ns
    
  2. Создайте секрет yc-auth с ключом sa-key.json, который вы создали при установке External Secrets Operator:

    kubectl --namespace ns create secret generic yc-auth \
      --from-file=authorized-key=sa-key.json
    
  3. Создайте хранилище секретов SecretStore, содержащее секрет yc-auth:

    kubectl --namespace ns apply -f - <<< '
    apiVersion: external-secrets.io/v1beta1
    kind: SecretStore
    metadata:
      name: secret-store
    spec:
      provider:
        yandexlockbox:
          auth:
            authorizedKeySecretRef:
              name: yc-auth
              key: authorized-key'
    

Создайте External SecretСоздайте External Secret

  1. Создайте объект ExternalSecret, указывающий на секрет lockbox-secret в хранилище secret-store:

    kubectl --namespace ns apply -f - <<< '
    apiVersion: external-secrets.io/v1beta1
    kind: ExternalSecret
    metadata:
      name: external-secret
    spec:
      refreshInterval: 1h
      secretStoreRef:
        name: secret-store
        kind: SecretStore
      target:
        name: k8s-secret
      data:
      - secretKey: password
        remoteRef:
          key: <идентификатор_секрета>
          property: password'
    

    Где:

    • key — идентификатор созданного ранее секрета Yandex Lockbox lockbox-secret.
    • spec.target.name — имя нового ключа: k8s-secret. External Secret Operator создаст этот ключ и поместит в него параметры секрета lockbox-secret.
  2. Убедитесь, что новый ключ k8s-secret содержит значение секрета lockbox-secret:

    kubectl --namespace ns get secret k8s-secret \
      --output=json | \
      jq --raw-output ."data"."password" | \
      base64 --decode
    

    В выводе команды будет содержаться значение ключа password секрета lockbox-secret:

    p@$$w0rd
    

Удалите созданные ресурсыУдалите созданные ресурсы

Удалите ресурсы, которые вы больше не будете использовать, чтобы за них не списывалась плата:

Вручную
Terraform
  1. Удалите кластер Managed Service for Kubernetes.
  2. Если вы зарезервировали для кластера Managed Service for Kubernetes публичный статический IP-адрес, удалите его.
  3. Удалите секрет lockbox-secret.
  1. В терминале перейдите в директорию с планом инфраструктуры.

    Важно

    Убедитесь, что в директории нет Terraform-манифестов с ресурсами, которые вы хотите сохранить. Terraform удаляет все ресурсы, которые были созданы с помощью манифестов в текущей директории.

  2. Удалите ресурсы:

    1. Выполните команду:

      terraform destroy
      
    2. Подтвердите удаление ресурсов и дождитесь завершения операции.

    Все ресурсы, которые были описаны в Terraform-манифестах, будут удалены.

Была ли статья полезна?

Предыдущая
Все руководства
Следующая
Хранение подключений и переменных Apache Airflow™ в Yandex Lockbox
Проект Яндекса
© 2025 ООО «Яндекс.Облако»