Yandex Cloud
  • Сервисы
  • Решения
  • Почему Yandex Cloud
  • Сообщество
  • Тарифы
  • Документация
  • Связаться с нами
Подключиться
Language / Region
Проект Яндекса
© 2023 ООО «Яндекс.Облако»
Yandex Managed Service for Kubernetes
  • Сопоставление с другими сервисами Yandex Cloud
  • Начало работы
  • Пошаговые инструкции
    • Все инструкции
    • Подключение к узлу по SSH
    • Обновление Kubernetes
    • Настройка автомасштабирования
    • Подключение к кластеру
      • Обзор способов подключения
      • Настройка групп безопасности
      • Создание статического файла конфигурации
    • Установка приложений из Cloud Marketplace
      • Основы работы с Cloud Marketplace
      • Установка Argo CD
      • Установка Container Storage Interface для S3
      • Установка Crossplane
      • Установка External Secrets Operator
      • Установка Falco
      • Установка Filebeat
      • Установка Fluent Bit
      • Установка Gateway API
      • Установка GitLab Agent
      • Установка GitLab Runner
      • Установка HashiCorp Vault
      • Установка Ingress-контроллера Application Load Balancer
      • Установка Jaeger
      • Установка Kyverno & Kyverno Policies
      • Установка Loki
      • Установка Metrics Provider
      • Установка NodeLocal DNS
      • Установка Policy Reporter
      • Установка Thumbor
    • Сетевые сценарии
      • Обеспечение доступа к приложению, запущенному в кластере Kubernetes
      • Настройка контроллера сетевых политик Calico
      • Настройка контроллера сетевых политик Cilium
      • Настройка NodeLocal DNS для контроллера сетевых политик Cilium
    • Работа с постоянными томами
      • Динамическая подготовка тома
      • Статическая подготовка тома
      • Управление классами хранилищ
      • Увеличение размера тома для подов
      • Увеличение размера тома для контроллера StatefulSet
      • Подключение тома в блочном режиме
      • Интеграция с Object Storage
    • Управление кластером Kubernetes
      • Получение информации о кластере Kubernetes
      • Создание кластера Kubernetes
      • Изменение кластера Kubernetes
      • Создание пространства имен в кластере Kubernetes
      • Удаление кластера Kubernetes
    • Управление группой узлов
      • Информация об имеющихся группах узлов
      • Создание группы узлов
      • Подключение к узлу по SSH
      • Настройка автомасштабирования
      • Изменение группы узлов
      • Управление метками узлов кластера Kubernetes
      • Удаление группы узлов
    • Подключение внешних узлов к кластеру
  • Практические руководства
    • Все руководства
    • Создание нового Kubernetes-проекта в Yandex Cloud
    • Интеграция с Container Registry
    • Подпись и проверка Docker-образов Container Registry
    • Сканирование уязвимостей Container Registry при непрерывном развертывании приложений с помощью GitLab
    • Запуск рабочих нагрузок с GPU
    • Установка Ingress-контроллера NGINX с Let's Encrypt®
    • Установка Ingress-контроллера NGINX с сертификатом из Certificate Manager
    • Резервное копирование в Object Storage
    • Горизонтальное масштабирование приложения в кластере
    • Вертикальное масштабирование приложения в кластере
    • Развертывание и нагрузочное тестирование gRPC-сервиса с масштабированием
    • Работа со снапшотами
    • Интеграция с корпоративной зоной DNS
    • Автоматическое масштабирование DNS по размеру кластера
    • Настройка локального кеширования DNS
    • Проверка DNS Challenge для сертификатов Let's Encrypt®
    • Мониторинг кластера с помощью Prometheus и Grafana
    • Непрерывное развертывание контейнеризованных приложений с помощью GitLab
    • Изменение параметров сервера метрик (Metrics Server)
    • Использование продуктов Cloud Marketplace
      • Интеграция с Argo CD
      • Интеграция с Crossplane
      • Синхронизация с секретами Yandex Lockbox
      • Настройка Fluent Bit для работы с Cloud Logging
      • Настройка Gateway API
      • Настройка Application Load Balancer Ingress-контроллера
      • Использование Jaeger для трассировки запросов в Managed Service for YDB
      • Настройка Kyverno & Kyverno Policies
      • Использование Metrics Provider для трансляции метрик
  • Концепции
    • Взаимосвязь ресурсов сервиса
    • Релизные каналы и обновления
    • Шифрование секретов
    • Использование объектов API Kubernetes
      • Том
      • Сервис
    • Группа узлов
      • Автоматическое масштабирование группы узлов
      • Расселение подов с узла
      • Динамическое резервирование ресурсов для узла
      • Группы узлов с GPU
    • Сеть в Managed Service for Kubernetes
    • Внешние узлы кластера
    • Сетевые настройки и политики кластера
    • Автоматическое масштабирование
    • Квоты и лимиты
    • Рекомендации по использованию Managed Service for Kubernetes
  • Управление доступом
  • Правила тарификации
  • Справочник API
    • Аутентификация в API
    • gRPC (англ.)
      • Overview
      • ClusterService
      • NodeGroupService
      • VersionService
      • OperationService
    • REST (англ.)
      • Overview
      • Cluster
        • Overview
        • create
        • delete
        • get
        • list
        • listNodeGroups
        • listNodes
        • listOperations
        • start
        • stop
        • update
      • NodeGroup
        • Overview
        • create
        • delete
        • get
        • list
        • listNodes
        • listOperations
        • update
      • Version
        • Overview
        • list
  • Вопросы и ответы
    • Общие вопросы
    • Хранилище данных
    • Настройка и обновление
    • Автоматическое масштабирование
    • Ресурсы
    • Логи
    • Все вопросы на одной странице
  1. Пошаговые инструкции
  2. Установка приложений из Cloud Marketplace
  3. Установка HashiCorp Vault

Установка HashiCorp Vault с поддержкой Key Management Service

Статья создана
Yandex Cloud
  • Создание сервисного аккаунта и ключей
  • Установка с помощью Yandex Cloud Marketplace
  • Установка с помощью Helm-чарта
  • Инициализация хранилища

HashiCorp Vault — инструмент с открытым исходным кодом, который обеспечивает безопасное хранение и доступ к различным секретам (паролям, сертификатам, токенам).

Образ приложения содержит предустановленную сборку HashiCorp Vault, которая при помощи Yandex Key Management Service дополнительно поддерживает Auto Unseal. Сборка подготовлена на основе HashiCorp Vault соответствующей версии.

Чтобы установить HashiCorp Vault:

  1. Создайте сервисный аккаунт и ключи.
  2. Установите HashiCorp Vault.
  3. Выполните инициализацию хранилища.

Создание сервисного аккаунта и ключей

Для работы HashiCorp Vault требуется:

  • Сервисный аккаунт с ролью kms.keys.encrypterDecrypter.
  • Авторизованный ключ.
  • Симметричный ключ шифрования.
  1. Создайте сервисный аккаунт:

    yc iam service-account create --name vault-kms
    
  2. Создайте авторизованный ключ для сервисного аккаунта и сохраните его в файл authorized-key.json:

    yc iam key create \
      --service-account-name vault-kms \
      --output authorized-key.json
    
  3. Создайте симметричный ключ Key Management Service:

    yc kms symmetric-key create \
      --name example-key \
      --default-algorithm aes-256 \
      --rotation-period 24h
    

    Сохраните идентификатор ключа (id) — он понадобится при установке приложения.

  4. Назначьте роль kms.keys.encrypterDecrypter ключу Key Management Service:

    yc resource-manager folder add-access-binding \
      --id <идентификатор каталога> \
      --service-account-name vault-kms \
      --role kms.keys.encrypterDecrypter
    

    Идентификатор каталога можно получить со списком каталогов.

Установка с помощью Yandex Cloud Marketplace

  1. Перейдите на страницу каталога и выберите сервис Managed Service for Kubernetes.
  2. Нажмите на имя нужного кластера и выберите вкладку Marketplace.
  3. В разделе Доступные для установки приложения выберите HashiCorp Vault с поддержкой Key Management Service и нажмите кнопку Использовать.
  4. Задайте настройки приложения:
    • Пространство имен — выберите пространство имен или создайте новое.
    • Название приложения — укажите название приложения.
    • Ключ сервисной учетной записи для Vault — скопируйте в это поле содержимое файла authorized-key.json.
    • ID ключа KMS для Vault — укажите полученный ранее идентификатор ключа Key Management Service.
  5. Нажмите кнопку Установить.

Установка с помощью Helm-чарта

  1. Установите менеджер пакетов Helm версии не ниже 3.7.0.

  2. Для установки Helm-чарта с HashiCorp Vault выполните команду:

    export HELM_EXPERIMENTAL_OCI=1 && \
    cat authorized-key.json | helm registry login cr.yandex --username 'json_key' --password-stdin && \
    helm pull oci://cr.yandex/yc-marketplace/yandex-cloud/vault/chart/vault \
      --version <версия Helm-чарта> \
      --untar && \
    helm install \
      --namespace <пространство имен> \
      --create-namespace \
      --set-file yandexKmsAuthJson=authorized-key.json \
      hashicorp ./vault/
    

    Актуальную версию Helm-чарта можно посмотреть на странице приложения.

    Эта команда также создаст новое пространство имен, необходимое для работы HashiCorp Vault.

Инициализация хранилища

После установки HashiCorp Vault необходимо инициализировать один из его серверов. Процесс инициализации генерирует учетные данные, необходимые для распечатывания (unseal) всех серверов хранилища.

Примечание

При инициализации выполнять операцию unseal не нужно — образ приложения интегрирован с Key Management Service.

Подробнее см. на странице Auto Unseal и в документации HashiCorp Vault.

Чтобы инициализировать хранилище:

  1. Убедитесь, что приложение перешло в состояние Running и имеет 0/1 готовых подов:

    kubectl get pods --selector='app.kubernetes.io/name=vault'
    

    Результат:

    NAME              READY  STATUS   RESTARTS  AGE
    <имя пода vault>  0/1    Running  0         58s
    
  2. Выполните инициализацию хранилища:

    kubectl exec \
      --stdin=true \
      --tty=true <имя пода vault> \
      -- vault operator init
    

    Результат:

    Recovery Key 1: ulbugw4IKttmCCPprF6JwmUCyx1YfieCQPQiI2S0VV9o
    Recovery Key 2: S0kcValC6qSfEI4WJBovSbJWZntBUwtTrtisSIcS3n0e
    Recovery Key 3: t44ZRqbzLZNzfChinZNzLCNnwvFN/R52vbDq/UueHPPg
    ...
    
    Recovery key initialized with 5 key shares and a key threshold of 3. Please
    securely distribute the key shares printed above.
    
  3. Повторно запросите список подов приложения и убедитесь, что готов один под:

    kubectl get pods --selector='app.kubernetes.io/name=vault'
    

    Результат:

    NAME               READY  STATUS   RESTARTS  AGE
    vault-yckms-k8s-0  1/1    Running  0         5m
    

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

Language / Region
Проект Яндекса
© 2023 ООО «Яндекс.Облако»
В этой статье:
  • Создание сервисного аккаунта и ключей
  • Установка с помощью Yandex Cloud Marketplace
  • Установка с помощью Helm-чарта
  • Инициализация хранилища