<div><img src="https://top-fwz1.mail.ru/counter?id=3548135;js=na" style="position:absolute;left:-9999px;" alt="Top.Mail.Ru" /></div>
Публичное облако на базе VMware с управлением через vCloud Director
Вход / Регистрация
На главную
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

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

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.

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