Yandex Cloud
Поиск
Связаться с намиПопробовать бесплатно
  • Истории успеха
  • Документация
  • Блог
  • Все сервисы
  • Статус работы сервисов
  • Marketplace
    • Популярные
    • Инфраструктура и сеть
    • Платформа данных
    • Искусственный интеллект
    • Безопасность
    • Инструменты DevOps
    • Бессерверные вычисления
    • Управление ресурсами
  • Все решения
    • По отраслям
    • По типу задач
    • Экономика платформы
    • Безопасность
    • Техническая поддержка
    • Каталог партнёров
    • Обучение и сертификация
    • Облако для стартапов
    • Облако для крупного бизнеса
    • Центр технологий для общества
    • Облако для интеграторов
    • Поддержка IT-бизнеса
    • Облако для фрилансеров
    • Обучение и сертификация
    • Блог
    • Документация
    • Контент-программа
    • Мероприятия и вебинары
    • Контакты, чаты и сообщества
    • Идеи
    • Калькулятор цен
    • Тарифы
    • Акции и free tier
  • Истории успеха
  • Документация
  • Блог
Создавайте контент и получайте гранты!Готовы написать своё руководство? Участвуйте в контент-программе и получайте гранты на работу с облачными сервисами!
Подробнее о программе
Проект Яндекса
© 2026 ООО «Яндекс.Облако»
Yandex Managed Service for Kubernetes
  • Сопоставление с другими сервисами Yandex Cloud
  • Начало работы
    • Все руководства
    • Создание нового Kubernetes-проекта в Yandex Cloud
    • Создание кластера Kubernetes без доступа в интернет
    • Запуск рабочих нагрузок с GPU
    • Использование групп узлов c GPU без предустановленных драйверов
    • Установка Time-Slicing GPUs
    • Миграция ресурсов в другую зону доступности
    • Шифрование секретов в Managed Service for Kubernetes
    • Создание кластера Kubernetes с помощью провайдера Yandex Cloud для Kubernetes Cluster API
    • Доступ к API Yandex Cloud из кластера Managed Service for Kubernetes с помощью федерации сервисных аккаунтов
      • Интеграция с корпоративной зоной DNS
      • Автоматическое масштабирование DNS по размеру кластера
      • Настройка NodeLocal DNS Cache
      • Проверка DNS Challenge для сертификатов Let's Encrypt®
      • Создание веб-хука резолвера ACME для ответов на DNS01-проверки
  • Управление доступом
  • Правила тарификации
  • Справочник Terraform
  • Метрики Monitoring
  • Аудитные логи Audit Trails
  • История изменений
  • Обучающие курсы

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

  • Перед началом работы
  • Необходимые платные ресурсы
  • Подготовьте окружение
  • Подготовьте кластер Managed Service for Kubernetes к работе
  • Создайте кластер Managed Service for Kubernetes
  • Добавьте учетные данные в конфигурационный файл kubectl
  • Создайте группу узлов
  • Установите и запустите веб-хук в кластере Managed Service for Kubernetes
  • Проверьте работу веб-хука
  • Подготовьте конфигурационные файлы
  • Выпустите сертификат с помощью веб-хука
  • Удалите созданные ресурсы
  1. Практические руководства
  2. Работа с DNS
  3. Создание веб-хука резолвера ACME для ответов на DNS01-проверки

Создание веб-хука резолвера ACME для ответов на DNS01-проверки

Статья создана
Yandex Cloud
Обновлена 5 февраля 2026 г.
  • Перед началом работы
    • Необходимые платные ресурсы
  • Подготовьте окружение
  • Подготовьте кластер Managed Service for Kubernetes к работе
    • Создайте кластер Managed Service for Kubernetes
    • Добавьте учетные данные в конфигурационный файл kubectl
    • Создайте группу узлов
  • Установите и запустите веб-хук в кластере Managed Service for Kubernetes
  • Проверьте работу веб-хука
    • Подготовьте конфигурационные файлы
    • Выпустите сертификат с помощью веб-хука
  • Удалите созданные ресурсы

Чтобы автоматически проходить проверки прав на домен, зарегистрированный в Yandex Cloud DNS, установите приложение cert-manager с веб-хуком резолвера DNS01.

Чтобы запустить веб-хук в кластере Managed Service for Kubernetes:

  1. Подготовьте кластер Managed Service for Kubernetes к работе.
  2. Установите и запустите веб-хук в кластере Managed Service for Kubernetes.
  3. Проверьте работу веб-хука.
  4. Удалите созданные ресурсы.

Примечание

Менеджер сертификатов с веб-хуком ACME для Yandex Cloud DNS поддерживает работу с Wildcard-сертификатами.

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

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

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

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

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

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

В стоимость поддержки описываемого решения входят:

  • Плата за кластер Managed Service for Kubernetes: использование мастера и исходящий трафик (см. тарифы Managed Service for Kubernetes).
  • Плата за узлы кластера (ВМ): использование вычислительных ресурсов, операционной системы и хранилища (см. тарифы Compute Cloud).
  • Плата за публичный IP-адрес для узлов кластера (см. тарифы Virtual Private Cloud).

Подготовьте окружениеПодготовьте окружение

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

  2. Установите интерфейс командной строки Kubernetes — kubectl.

  3. Убедитесь, что у вас достаточно свободных ресурсов в облаке.

  4. Если у вас еще нет сети, создайте ее.

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

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

    • sa-kubernetes с ролями:

      • k8s.clusters.agent и vpc.publicAdmin на каталог, в котором создается кластер Managed Service for Kubernetes.
      • container-registry.images.puller на каталог с реестром Docker-образов.

      От имени этого сервисного аккаунта будут создаваться необходимые кластеру ресурсы, а узлы Managed Service for Kubernetes будут скачивать из реестра необходимые Docker-образы.

    • sa-dns-editor с ролью dns.editor на каталог с публичной зоной. От его имени будут создаваться ресурсные записи DNS.

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

    Важно

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

  8. Добавьте в группы безопасности следующие правила:

    • В группу безопасности кластера добавьте правило для исходящего трафика, которое разрешает проверку сертификатов через веб-хук cert-manager:
      • Диапазон портов — 10250.
      • Протокол — TCP.
      • Назначение — CIDR.
      • CIDR блоки — 0.0.0.0/0.
    • В группу безопасности группы узлов добавьте правило для исходящего трафика, которое разрешает подключение к серверам Let's Encrypt® для выпуска сертификатов:
      • Диапазон портов — 443.
      • Протокол — TCP.
      • Назначение — CIDR.
      • CIDR блоки — 0.0.0.0/0.

Подготовьте кластер Managed Service for Kubernetes к работеПодготовьте кластер Managed Service for Kubernetes к работе

Создайте кластер Managed Service for KubernetesСоздайте кластер Managed Service for Kubernetes

Консоль управления
  1. В консоли управления выберите каталог, в котором нужно создать кластер Managed Service for Kubernetes.
  2. Выберите сервис Managed Service for Kubernetes.
  3. Нажмите кнопку Создать кластер.
  4. Введите имя кластера: kubernetes-cluster-wh.
  5. Сервисный аккаунт для ресурсов — укажите сервисный аккаунт sa-kubernetes, который будет использоваться для создания ресурсов.
  6. Сервисный аккаунт для узлов — укажите сервисный аккаунт sa-kubernetes, который будет использоваться узлами Managed Service for Kubernetes для доступа к реестру Docker-образов.
  7. Укажите релизный канал. Эту настройку невозможно изменить после создания кластера Managed Service for Kubernetes.
  8. В блоке Конфигурация мастера:
    • Версия Kubernetes — выберите версию Kubernetes, которая будет установлена на мастере Managed Service for Kubernetes. Версия не должна отличаться от версии командной строки Kubernetes.
    • Публичный адрес — выберите способ назначения IP-адреса:
      • Автоматически — чтобы назначить случайный IP-адрес из пула IP-адресов Yandex Cloud.
    • Тип мастера — выберите тип мастера:
      • Базовый — будет создан один хост-мастер в выбранной зоне доступности. Укажите облачную сеть и выберите в ней подсеть для размещения хоста-мастера.
      • Высокодоступный — в каждой зоне доступности будет создано по одному хосту-мастеру. Укажите облачную сеть и подсеть для каждой зоны доступности.
    • Выберите группы безопасности для сетевого трафика кластера Managed Service for Kubernetes.
  9. В блоке Сетевые настройки кластера:
    • CIDR кластера — укажите диапазон IP-адресов, из которого будут выделяться IP-адреса для подов.
    • CIDR сервисов — укажите диапазон IP-адресов, из которого будут выделяться IP-адреса для сервисов.
    • Задайте маску подсети узлов Managed Service for Kubernetes и максимальное количество подов в узле.
  10. Нажмите кнопку Создать.
  11. Дождитесь, когда статус кластера изменится на Running, а состояние на Healthy.

Добавьте учетные данные в конфигурационный файл kubectlДобавьте учетные данные в конфигурационный файл kubectl

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

    yc managed-kubernetes cluster get-credentials kubernetes-cluster-wh --external
    

    По умолчанию учетные данные добавляются в директорию $HOME/.kube/config. Если необходимо изменить расположение конфигураций, используйте параметр --kubeconfig <путь_к_файлу>.

  2. Проверьте конфигурацию kubectl после добавления учетных данных:

    kubectl config view
    

    Результат:

    apiVersion: v1
    clusters:
      - cluster:
        certificate-authority-data: DATA+OMITTED
    ...
    

Создайте группу узловСоздайте группу узлов

Консоль управления
  1. В консоли управления выберите каталог, в котором создан нужный кластер Managed Service for Kubernetes.

  2. В списке сервисов выберите Managed Service for Kubernetes.

  3. Выберите кластер kubernetes-cluster-wh.

  4. На странице кластера перейдите на вкладку Управление узлами.

  5. Нажмите кнопку Создать группу узлов.

  6. Введите имя и описание группы узлов Managed Service for Kubernetes.

  7. В поле Версия Kubernetes выберите версию Kubernetes для узлов Managed Service for Kubernetes.

  8. В блоке Масштабирование выберите его тип:

    • Фиксированный, чтобы количество узлов в группе Managed Service for Kubernetes оставалось неизменным. Укажите количество узлов в группе Managed Service for Kubernetes.
    • Автоматический, чтобы управлять количеством узлов в группе Managed Service for Kubernetes с помощью автоматического масштабирования кластера Managed Service for Kubernetes.
  9. В блоке В процессе создания и обновления разрешено укажите максимальное количество виртуальных машин, на которое можно превысить и уменьшить размер группы Managed Service for Kubernetes.

  10. В блоке Вычислительные ресурсы:

    • Выберите платформу.
    • Укажите необходимое количество vCPU и гарантированную долю vCPU, а также объем RAM.
  11. В блоке Хранилище:

    • Укажите Тип диска для узлов группы Managed Service for Kubernetes:

      • HDD — стандартный сетевой диск, сетевое блочное хранилище на HDD-накопителе.
      • SSD — быстрый сетевой диск, сетевое блочное хранилище на SSD-накопителе.
      • Нереплицируемый SSD — сетевой диск с повышенной производительностью, реализованной за счет устранения избыточности. Размер такого диска можно менять только с шагом 93 ГБ.
      • SSD IO — обладает теми же скоростными характеристиками, что и Нереплицируемый SSD, и одновременно обеспечивает избыточность. Размер такого диска можно менять только с шагом 93 ГБ.

      Подробнее о типах дисков см. в документации Yandex Compute Cloud.

    • Укажите размер дисков для узлов группы Managed Service for Kubernetes.

  12. В блоке Сетевые настройки:

    • В поле Публичный адрес выберите способ назначения IP-адреса:
      • Автоматически — чтобы назначить случайный IP-адрес из пула IP-адресов Yandex Cloud.
    • Выберите группы безопасности.
    • Выберите зону доступности и подсеть для размещения узлов группы Managed Service for Kubernetes.
  13. В блоке Доступ укажите данные для доступа к узлам группы Managed Service for Kubernetes по SSH:

    • Логин — укажите имя пользователя.
    • SSH-ключ — вставьте содержимое файла публичного ключа.
  14. Нажмите кнопку Создать.

  15. Дождитесь, когда статус группы узлов изменится на Running.

Установите и запустите веб-хук в кластере Managed Service for KubernetesУстановите и запустите веб-хук в кластере Managed Service for Kubernetes

  1. Клонируйте репозиторий веб-хука с менеджером сертификатов, настроенным для выпуска сертификатов от Let's Encrypt:

    git clone https://github.com/yandex-cloud/cert-manager-webhook-yandex.git
    
  2. Установите менеджер пакетов Helm для управления пакетами в вашем кластере Kubernetes.

  3. Установите веб-хук с помощью Helm:

    helm install \
      --namespace cert-manager \
      --create-namespace \
      yandex-webhook ./cert-manager-webhook-yandex/deploy/cert-manager-webhook-yandex
    
  4. Убедитесь, что веб-хук запущен:

    kubectl get pods -n cert-manager --watch
    

    Проверьте, что среди записей присутствует веб-хук ACME для Yandex Cloud DNS:

    NAME                                                          READY   STATUS    RESTARTS   AGE
    ... 
    yandex-webhook-cert-manager-webhook-yandex-55********-tw4mq   1/1     Running   1          43m
    

Проверьте работу веб-хукаПроверьте работу веб-хука

Подготовьте конфигурационные файлыПодготовьте конфигурационные файлы

  1. Создайте авторизованный ключ для сервисного аккаунта sa-dns-editor и сохраните его в файл iamkey.json:

    yc iam key create iamkey \
      --service-account-id=<идентификатор_сервисного_аккаунта> \
      --format=json \
      --output=iamkey.json
    
  2. Создайте секрет с ключом сервисного аккаунта:

    kubectl create secret generic cert-manager-secret --from-file=iamkey.json -n cert-manager
    
  3. Создайте файл cluster-issuer.yml с манифестом объекта ClusterIssuer, в котором используется веб-хук резолвера DNS01 для домена Cloud DNS:

    apiVersion: cert-manager.io/v1
    kind: ClusterIssuer
    metadata:
     name: clusterissuer
     namespace: default
    spec:
     acme:
      email: <адрес_электронной_почты_для_уведомлений_от_Lets_Encrypt>
      server: https://acme-v02.api.letsencrypt.org/directory
      privateKeySecretRef:
       name: secret-ref
      solvers:
       - dns01:
          webhook:
            config:
              folder: <идентификатор_каталога_с_публичной_зоной>
              serviceAccountSecretRef:
                name: cert-manager-secret
                key: iamkey.json
            groupName: acme.cloud.yandex.com
            solverName: yandex-cloud-dns
    
  4. Создайте файл cluster-certificate.yml с манифестом объекта Certificate:

    apiVersion: cert-manager.io/v1
    kind: Certificate
    metadata:
     name: your-site
     namespace: default
    spec:
     secretName: your-site-secret
     issuerRef:
      name: clusterissuer
      kind: ClusterIssuer
     dnsNames:
       - <имя_домена>
    

Выпустите сертификат с помощью веб-хукаВыпустите сертификат с помощью веб-хука

  1. Создайте объекты в кластере Kubernetes:

    kubectl apply -f cluster-issuer.yml && \
    kubectl apply -f cluster-certificate.yml
    
  2. Проверьте готовность сертификата:

    kubectl get certificate
    

    Результат:

    NAME        READY  SECRET            AGE
    your-site   True   your-site-secret  45m
    

    Статус True в колонке READY означает, что сертификат был выпущен успешно.

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

Если созданные ресурсы вам больше не нужны, удалите кластер Managed Service for Kubernetes.

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

Предыдущая
Проверка DNS Challenge для сертификатов Let's Encrypt®
Следующая
Резервное копирование в Object Storage
Создавайте контент и получайте гранты!Готовы написать своё руководство? Участвуйте в контент-программе и получайте гранты на работу с облачными сервисами!
Подробнее о программе
Проект Яндекса
© 2026 ООО «Яндекс.Облако»