Yandex Cloud
Поиск
Связаться с намиПодключиться
  • Истории успеха
  • Документация
  • Блог
  • Все сервисы
  • Статус работы сервисов
    • Популярные
    • Инфраструктура и сеть
    • Платформа данных
    • Контейнеры
    • Инструменты разработчика
    • Бессерверные вычисления
    • Безопасность
    • Мониторинг и управление ресурсами
    • AI Studio
    • Бизнес-инструменты
  • Все решения
    • По отраслям
    • По типу задач
    • Экономика платформы
    • Безопасность
    • Техническая поддержка
    • Каталог партнёров
    • Обучение и сертификация
    • Облако для стартапов
    • Облако для крупного бизнеса
    • Центр технологий для общества
    • Облако для интеграторов
    • Поддержка IT-бизнеса
    • Облако для фрилансеров
    • Обучение и сертификация
    • Блог
    • Документация
    • Контент-программа
    • Мероприятия и вебинары
    • Контакты, чаты и сообщества
    • Идеи
    • Тарифы Yandex Cloud
    • Промоакции и free tier
    • Правила тарификации
  • Истории успеха
  • Документация
  • Блог
Проект Яндекса
© 2025 ООО «Яндекс.Облако»
Yandex Managed Service for Kubernetes
  • Сопоставление с другими сервисами Yandex Cloud
  • Начало работы
    • Все инструкции
    • Подключение к узлу по SSH
    • Подключение к узлу через OS Login
    • Обновление Kubernetes
    • Настройка автомасштабирования
    • Подключение Terraform-провайдера Kubernetes
      • Основы работы с Cloud Marketplace
      • Установка Argo CD
      • Установка Chaos Mesh
      • Установка cert-manager c плагином Cloud DNS ACME webhook
      • Установка Container Storage Interface для S3
      • Установка Crossplane
      • Установка External Secrets Operator
      • Установка ExternalDNS c плагином для Cloud DNS
      • Установка Falco
      • Установка Filebeat OSS
      • Установка Fluent Bit
      • Установка Gatekeeper
      • Установка Gateway API
      • Установка GitLab Agent
      • Установка GitLab Runner
      • Установка HashiCorp Vault
      • Установка Ingress NGINX
      • Установка Ingress-контроллера Application Load Balancer
      • Обновление Ingress-контроллера Application Load Balancer
      • Установка Istio
      • Установка Jaeger
      • Установка Kruise
      • Установка Kyverno & Kyverno Policies
      • Установка Loki
      • Установка Metrics Provider
      • Установка NodeLocal DNS
      • Установка OIDC Аутентификация
      • Установка Policy Reporter
      • Установка Prometheus Operator
      • Установка Thumbor
      • Установка Velero
    • Подключение внешних узлов к кластеру
    • Настройка WireGuard-шлюзов для подключения внешних узлов к кластеру
    • Настройка IPSec-шлюзов для подключения внешних узлов к кластеру
  • Управление доступом
  • Правила тарификации
  • Справочник Terraform
  • Метрики Monitoring
  • Аудитные логи Audit Trails
  • История изменений
  • Обучающие курсы

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

  • Перед началом работы
  • Установка с помощью Yandex Cloud Marketplace
  • Установка с помощью Helm-чарта
  • Получение тестового сертификата
  • Примеры использования
  • См. также
  1. Пошаговые инструкции
  2. Установка приложений из Cloud Marketplace
  3. Установка cert-manager c плагином Cloud DNS ACME webhook

Установка cert-manager c плагином Yandex Cloud DNS ACME webhook

Статья создана
Yandex Cloud
Улучшена
mmerihsesh
Обновлена 30 июля 2025 г.
  • Перед началом работы
  • Установка с помощью Yandex Cloud Marketplace
  • Установка с помощью Helm-чарта
  • Получение тестового сертификата
  • Примеры использования
  • См. также

cert-manager — приложение, которое добавляет сертификаты и эмитентов сертификатов в качестве типов ресурсов в кластерах Managed Service for Kubernetes и упрощает процесс получения, обновления и использования этих сертификатов. Например, при получении сертификатов Let's Encrypt® можно пройти следующие виды проверок для подтверждения владения доменом:

  • DNS-01. Для прохождения проверки используется сервис Yandex Cloud DNS. Вместе с cert-manager устанавливается плагин Yandex Cloud DNS ACME webhook, который обеспечивает интеграцию с сервисом.
  • HTTP-01. Для прохождения проверки используется Ingress-контроллер, который нужно установить в кластер.

Примечание

Приложение cert-manager c плагином Yandex Cloud DNS ACME webhook поддерживает работу с Wildcard-сертификатами.

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

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

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

  2. Убедитесь, что кластер Managed Service for Kubernetes расположен в том же каталоге, что и публичная зона Cloud DNS.

  3. Убедитесь, что группы безопасности для кластера Managed Service for Kubernetes и его групп узлов настроены корректно. Если отсутствует какое-либо из правил — добавьте его.

    Важно

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

  4. Добавьте в группу безопасности, примененную к группе узлов, следующие правила:

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

  6. Создайте сервисный аккаунт, необходимый для работы cert-manager.

  7. Назначьте сервисному аккаунту роль dns.editor на каталог, где расположена публичная зона DNS.

  8. Создайте авторизованный ключ для этого сервисного аккаунта и сохраните ключ в файл key.json.

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

  1. Перейдите на страницу каталога и выберите сервис Managed Service for Kubernetes.
  2. Нажмите на имя нужного кластера Managed Service for Kubernetes и выберите вкладку Marketplace.
  3. В разделе Доступные для установки приложения выберите cert-manager c плагином Yandex Cloud DNS ACME webhook и нажмите кнопку Перейти к установке.
  4. Задайте настройки приложения:
    • Пространство имен — создайте новое пространство имен (например, cert-manager-dns-space). Если вы оставите пространство имен по умолчанию, cert-manager с плагином Yandex Cloud DNS может работать некорректно.
    • Название приложения — укажите название приложения, например, cert-manager.
    • Ключ сервисной учетной записи — вставьте содержимое файла key.json или создайте новый ключ.
    • ID каталога — укажите идентификатор каталога, в котором находится зона Cloud DNS, для подтверждения владением доменом при проверке DNS-01.
    • Адрес электронной почты для получения уведомлений от Let's Encrypt — укажите адрес электронной почты для получения оповещений от Let's Encrypt®.
    • Адрес сервера Let's Encrypt — выберите из списка адрес сервера Let's Encrypt®:
      • https://acme-v02.api.letsencrypt.org/directory — основной URL.
      • https://acme-staging-v02.api.letsencrypt.org/directory — тестовый URL.
  5. Нажмите кнопку Установить.
  6. Дождитесь перехода приложения в статус Deployed.

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

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

  2. Установите kubectl и настройте его на работу с созданным кластером.

  3. Для установки Helm-чарта с cert-manager и плагином Yandex Cloud DNS выполните команду:

    helm pull oci://cr.yandex/yc-marketplace/yandex-cloud/cert-manager-webhook-yandex/cert-manager-webhook-yandex \
      --version 1.0.9 \
      --untar && \
    helm install \
      --namespace <пространство_имен> \
      --create-namespace \
      --set-file config.auth.json=key.json \
      --set config.email='<адрес_электронной_почты_для_уведомлений_от_Lets_Encrypt>' \
      --set config.folder_id='<идентификатор_каталога_с_зоной_Cloud_DNS>' \
      --set config.server='URL_сервера_Lets_Encrypt' \
      cert-manager-webhook-yandex ./cert-manager-webhook-yandex/
    

    В качестве URL сервера Let's Encrypt® используйте:

    • https://acme-v02.api.letsencrypt.org/directory — основной URL.
    • https://acme-staging-v02.api.letsencrypt.org/directory — тестовый URL.

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

    Если вы укажете в параметре namespace пространство имен по умолчанию, cert-manager может работать некорректно. Рекомендуем указывать значение, отличное от всех существующих пространств имен (например, cert-manager-dns-space).

    Примечание

    Если вы используете версию Helm ниже 3.8.0, добавьте в начало команды строку export HELM_EXPERIMENTAL_OCI=1 && \, чтобы включить поддержку Open Container Initiative (OCI) в клиенте Helm.

  4. Убедитесь, что под cert-manager перешел в состояние Running:

    kubectl get pods --namespace=<пространство_имен> -l app=cert-manager-webhook-yandex -w
    

Получение тестового сертификатаПолучение тестового сертификата

Чтобы проверить работоспособность установленного приложения, получите тестовый сертификат. Для выпуска сертификата будет использоваться эмитент yc-clusterissuer. Он создается при установке cert-manager и уже настроен на работу с провайдером Let's Encrypt®.

  1. Создайте файл certificate.yaml, содержащий запрос на тестовый сертификат:

    apiVersion: cert-manager.io/v1
    kind: Certificate
    metadata:
      name: domain-name
      namespace: <пространство_имен>
    spec:
      secretName: domain-name-secret
      issuerRef:
        # ClusterIssuer, созданный вместе с Yandex Cloud DNS ACME webhook.
        name: yc-clusterissuer
        kind: ClusterIssuer
      dnsNames:
        # Домен должен входить в вашу публичную зону Cloud DNS.
        # Указывается имя домена (например, test.example.com), а не имя DNS-записи.
        - <имя_домена>
    
  2. Установите сертификат в кластер Managed Service for Kubernetes:

    kubectl apply -f certificate.yaml
    
  3. Проверьте готовность сертификата:

    kubectl get certificate
    

    Результат:

    NAME         READY  SECRET              AGE
    domain-name  True   domain-name-secret  45m
    

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

  4. (Опционально) получите подробную информацию о сертификате:

    kubectl -n <пространство_имен> describe certificate domain-name
    

    В выводе команды будут содержаться подобные события (events):

    Events:
      Type    Reason     Age   From                                       Message
      ----    ------     ----  ----                                       -------
      Normal  Issuing    ...   cert-manager-certificates-trigger          Issuing certificate as Secret does not exist
      Normal  Generated  ...   cert-manager-certificates-key-manager      Stored new private key in temporary Secret resource...
    

    Сертификаты используются в связке с соответствующими им секретами Kubernetes, которые хранят пары ключей и служебную информацию. В случае отсутствия секрета сертификат перевыпускается автоматически с созданием нового секрета, о чем и сообщается в событиях. Подробнее о причинах, которые могут привести к перевыпуску сертификата, см. в документации cert-manager.

    Поскольку сертификат выпускается впервые, то соответствующий ему секрет отсутствует. Наличие событий, сообщающих об этом, не является ошибкой.

Примеры использованияПримеры использования

  • Проверка DNS Challenge для сертификатов Let's Encrypt®.
  • Установка Ingress-контроллера NGINX с менеджером для сертификатов Let's Encrypt®.

См. такжеСм. также

  • Документация Let's Encrypt®.
  • Документация cert-manager.

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

Предыдущая
Установка Chaos Mesh
Следующая
Установка Container Storage Interface для S3
Проект Яндекса
© 2025 ООО «Яндекс.Облако»