Создание веб-хука резолвера ACME для ответов на DNS01-проверки
Чтобы автоматически проходить проверки прав на домен с использованием утилиты cert-manager, добавьте веб-хук с резолвером DNS01 в конфигурацию утилиты.
Ниже приведен пример создания объекта ClusterIssuer
с веб-хуком резолвера DNS01 для домена, зарегистрированного в Yandex Cloud DNS.
Чтобы запустить веб-хук в кластере Managed Service for Kubernetes:
- Установите веб-хук.
- Подготовьте конфигурационные файлы.
- Запустите менеджер сертификатов с веб-хуком.
Перед началом работы
- Подготовьте кластер Managed Service for Kubernetes к работе.
- Установите менеджер сертификатов последней версии.
- Установите менеджер пакетов Helm.
- Настройте CLI для работы от имени сервисного аккаунта.
Установите веб-хук
-
Клонируйте репозиторий веб-хука:
git clone https://github.com/yandex-cloud/cert-manager-webhook-yandex.git
-
Установите веб-хук с помощью Helm:
helm install -n cert-manager yandex-webhook ./deploy/cert-manager-webhook-yandex
Подготовьте конфигурационные файлы
-
Создайте авторизованный ключ и сохраните его в файл
iamkey.json
:yc iam key create iamkey \ --service-account-id=<your service account ID> \ --format=json \ --output=iamkey.json
Важно
Сервисный аккаунт должен иметь роль не ниже editor.
-
Создайте секрет с ключом сервисного аккаунта:
kubectl create secret generic cert-manager-secret --from-file=iamkey.json -n cert-manager
-
Создайте файл
cluster-issuer.yml
с манифестом объектаClusterIssuer
:apiVersion: cert-manager.io/v1 kind: ClusterIssuer metadata: name: clusterissuer namespace: default spec: acme: # You must replace this email address with your own. # Let's Encrypt will use this to contact you about expiring # certificates, and issues related to your account. email: your@email.com server: https://acme-staging-v02.api.letsencrypt.org/directory privateKeySecretRef: # Secret resource that will be used to store the account's private key. name: secret-ref solvers: - dns01: webhook: config: # The ID of the folder where dns-zone located in folder: <your folder ID> # This is the secret used to access the service account serviceAccountSecretRef: name: cert-manager-secret key: iamkey.json groupName: acme.cloud.yandex.com solverName: yandex-cloud-dns
-
Создайте файл
cluster-certificate.yml
с манифестом объектаCertificate
:apiVersion: cert-manager.io/v1 kind: Certificate metadata: name: your-site-com namespace: default spec: secretName: example-com-secret issuerRef: # The issuer created previously name: clusterissuer kind: ClusterIssuer dnsNames: - your-site.com
Запустите менеджер сертификатов с веб-хуком
-
Создайте объекты в кластере Kubernetes:
kubectl apply -f cluster-issuer.yml && \ kubectl apply -f cluster-certificate.yaml
-
Убедитесь, что веб-хук запущен:
kubectl get pods -n cert-manager –watch
Проверьте, что среди записей присутствует веб-хук ACME для Yandex Cloud DNS:
NAME READY STATUS RESTARTS AGE ... yandex-webhook-cert-manager-webhook-yandex-5578cfb98-tw4mq 1/1 Running 1 43h
Удалите созданные ресурсы
Если созданные ресурсы вам больше не нужны, удалите кластер Managed Service for Kubernetes.