Истории успеха наших клиентов — лучшие проекты
Вход/ Регистрация
На главную
25eb9e0a-a5a8-472a-ace7-940b8bd2adf0
Облачные сервисы

cert-manager Webhook

cert-manager Webhook используется для автоматического создания DNS-записей при валидации домена с помощью метода DNS-01.

Для корректной работы дополнения необходимо, чтобы:

Установка cert-manager Webhook

Установите дополнение cert-manager Webhook через панель управления Kubernetes в разделе «Дополнения». 

Selection 283

После установки убедитесь, что запущен под, отвечающий за DNS01-валидацию:

    
kubectl get pods -n cert-manager -l app=cert-manager-webhook-timeweb-cloud

У пода должен быть статус Running.

Настройка ClusterIssuer

Чтобы cert-manager мог выпускать сертификаты, необходимо создать объект ClusterIssuer. Он описывает, каким способом и через какого провайдера cert-manager будет выполнять валидацию доменов и получать сертификаты. Объект ClusterIssuer действует на уровне всего кластера и может использоваться из любых namespace'ов.

Создайте файл cluster-issuer.yaml:

    
apiVersion: cert-manager.io/v1 kind: ClusterIssuer metadata: name: letsencrypt-dns spec: acme: server: https://acme-v02.api.letsencrypt.org/directory email: email@example.com # Укажите вашу почту privateKeySecretRef: name: letsencrypt-dns-account-key solvers: - dns01: webhook: groupName: twcloud-<ID_кластера> # Укажите ID вашего кластера solverName: twcloud-dns

Значение privateKeySecretRef указывает, где будет храниться ключ учетной записи, с помощью которой cert-manager взаимодействует с Let's Encrypt.

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

Selection 284

Примените манифест:

    
kubectl apply -f cluster-issuer.yaml

Выпуск сертификата

Создайте файл certificate.yaml:

    
apiVersion: cert-manager.io/v1 kind: Certificate metadata: name: example-com-tls namespace: default spec: secretName: example-com-tls issuerRef: name: letsencrypt-dns kind: ClusterIssuer dnsNames: - example.com - www.example.com

При использовании wildcard-домена обязательно заключайте его в кавычки:

    
dnsNames: - "*.example.com"

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

Замените домены на свои и примените манифест:

    
kubectl apply -f certificate.yaml

Проверка статуса

Проверить текущий статус выпуска сертификата можно так:

    
kubectl get certificaterequests,orders,challenges -n default

При успешном выпуске сертификата вы увидите примерно следующее:

    
NAME APPROVED DENIED READY ISSUER REQUESTER AGE certificaterequest.cert-manager.io/example-com-tls-1 True True letsencrypt-dns system:serviceaccount:cert-manager:cert-manager 91s NAME STATE AGE order.acme.cert-manager.io/example-com-tls-1-1905819700 valid 91s

Проверка сертификата

После успешного выпуска проверьте, что секрет с сертификатом создан:

    
kubectl get secret example-com-tls -n default -o yaml

Секрет будет содержать ключи tls.crt и tls.key.

Была ли статья полезна?
Ваша оценка очень важна
Пока нет комментариев