cert-manager

Configuration

Issuer Configuration

После установки cert-manager'a в кластер, нужно наладить issuer с помощью которого будут выпускаться сертификаты
Бывает Issuer и ClusterIssuer, обычный issuer ставится в каждый неймспейс где нужно выпускать серты

ACME

ACME Issuer представляет один аккаунт зарегистрированный на ACME CA сервере. Когда ты создаешь ACME Issuer, cert-manager генерирует приватный ключ который используется в том числе для идентификации тебя на ACME сервере

Solving Challenges

Чтобы подтвердить владение доменом, для которого запрашивается сертификат, нужно завершить challenge
cert-manager предлагает два вида челленджей - HTTP01 и DNS01

HTTP01 завершается предоставлением ключа на определенном url'е доступном из интернета
Когда создается http01 challenge, cert-manager автоматически настраивает ingress на роутинг этого специального url'а в маленький web-сервер который предоставляет тот самый ключ

DNS01 завершается предоставлением ключа в DNS TXT записе, cert-manager (если все корректно настроено) автоматически создает эти dns-записи у вашего dns провайдера

Configuration

Все ACME Issuer'ы имеют схожую конфигурационную структуру:

Example:

apiVersion: cert-manager.io/v1
kind: ClusterIssuer
metadata:
  name: letsencrypt-staging
spec:
  acme:
    email: user@example.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: example-issuer-account-key
    # Add a single challenge solver, HTTP01 using nginx
    solvers:
    - http01:
        ingress:
          class: nginx

Adding Multiple Solver Types

Можно использовать разные типы челленджей для разных доменов
Секция solvers может содержать поле selector, которым выбирается для каких Certificates и для каких доменов в этих сертификатах нужен этот solver
Существует три вида селекторов - matchLabels, dnsNames и dnsZones
Можно использовать любое количество селекторов на одном solver'е

HTTP01