Cluster Issuers

Cluster Issuers - ресурсы Kubernetes, представляющие центры сертификации в кластере, которые могут генерировать подлинные сертификаты, выполняя запросы на подпись сертификатов.

На странице ClusterIssuers можно создать, отредактировать, удалить или просмотреть ранее созданные менеджеры сертификатов (ClusterIssuers).

Чтобы добавить Менеджер сертификатов нажмите на кнопку + Добавить ClusterIssuers.

В открывшемся окне необходимо заполнить:

  • Имя
  • Спецификацию объекта. Из выпадающего списка выберите тип. На текущий момент доступен ACME и Vault. При необходимости задайте лейблы.

Просмотр и изменение Cluster Issuers

Созданные Cluster Issuers отображаются в виде списка на странице ClusterIssuers в разделе Администрирование кластера.

Для просмотра нажмите на название Cluster Issuer в списке.

При необходимости изменения Cluster Issuer обновите сведения спецификации объекта и нажмите Сохранить.

Также Cluster Issuer можно изменить с помощью YAML манифеста. Перейдите на вкладку Манифест. После изменения манифеста выполните проверку. Результат проверки будет доступен в правой части экрана. Раскройте блок результата проверки, чтобы увидеть полный манифест. Если валидация формата манифеста Cluster Issuer не пройдена, недоступна проверка манифеста.

Сохраните изменения, внесенные в манифест. Несохраненные данные не будут применены.

Настройка ACME

Для настройки вы должны иметь учетную запись в ACME (Automated Certificate Management Environment).

Заполните сведения о сервере ACME. Например: https://acme-v02.api.letsencrypt.org/directory

Введите email, который связан с учетной записью ACME. Определите, нужно ли пропускать проверку TLS.

Если пропустить проверку TLS, то запросы к серверу ACME не будут подтверждены сертификатом TLS.(т.е. будут разрешены небезопасные соединения). Включайте этот параметр только в средах разработки.

При установлении защищенного TLS-соединения вы можете указать в поле CA Bundle пакет сертификатов центра сертификации. CA Bundle содержит корневой сертификат и промежуточный в формате PEM для проверки подлинности и доверия сертификату сервера ACME. Обратите внимание! Данные файла CA Bundle должны содержать ----BEGIN CERTIFICATE---- и ----END CERTIFICATE----.

Если CABundle не указан, но проверка TLS-соединения устанавливается, то для проверки соединения используется пакет системных сертификатов внутри контейнера.

В части Ключ учетной записи ACME необходимо ввести имя и ключ Secret.

Обозначьте solvers: выберите тип солвера: HTTP01 или DNS01.

  • Для HTTP01 заполните поле ClassIngress и нажмите кнопку Добавить.

Может быть использован, если:

  • Ваш провайдер не блокирует порт 80;
  • Ingress контроллер доступен из интернета по 80 порту;
  • Вы не используете сертификаты с подстановкой (wildcard-сертификаты).

Введите класс Ingress (ClassIngress), который должен быть использован для решения Challenge от Let’s Encrypt.

Посмотреть, какие ClassIngress есть в кластере
kubectl get ingressclass -A

Если не указать ClassIngress, будет использован дефолтный класс.

  • Для DNS01/acmeDNS заполните значение хоста. В AccountSecretRef впишите имя и ключ, затем нажмите кнопку Добавить.

Может быть использован, если:

  • Вы используете сертификаты с подстановкой (wildcard-сертификаты);
  • Есть несколько web-серверов.
Пример
apiVersion: cert-manager.io/v1
kind: Issuer
metadata:
  name: example-issuer
spec:
  acme:
    solvers:
    - dns01:
        acmeDNS:
          host: https://acme.example.com
          accountSecretRef:
            name: acme-dns
            key: acmedns.json
  • Для DNS01/rfc2136 заполните значение Nameserver и TsigAlgorithm. В TsigSecretSecretRef впишите имя и ключ, затем нажмите кнопку Добавить. Может быть использован, если у вас есть:
  • Сервер DNS, настроенный с поддержкой протокола RFC2136;
  • Доступ к данным (ключи TSIG) для авторизации обновлений DNS.
Пример
rfc2136:
         nameserver: 1.2.3.4:53
         tsigKeyName: example-com-secret
         tsigAlgorithm: HMACSHA512
         tsigSecretSecretRef:
           name: tsig-secret
           key: tsig-secret-key
  • tsigKeyName - имя ключа вашей TSIG аутентификации (например, example-key).
  • tsigAlgorithm - алгоритм, используемый для создания ключа TSIG (например, hmac-md5).
  • tsigSecretSecretRef.name - секрет, содержащий секретный ключ для TSIG аутентификации.
  • Для DNS01/webhook заполните данные Cert-Manager, подставляя в поля значение GroupName, SolverName и Config, затем нажмите кнопку Добавить.
Пример
apiVersion: cert-manager.io/v1
kind: Issuer
metadata:
  name: example-issuer
spec:
  acme:
   ...
    solvers:
    - dns01:
        webhook:
          groupName: $WEBHOOK_GROUP_NAME
          solverName: $WEBHOOK_SOLVER_NAME
          config:
            ...
            <webhook-specific-configuration>

Подробнее о настройке TLS.

Настройка Vault

Для настройки вы должны иметь учетную запись в vault. Согласно официальной документации Cert Manager рекомендуемый способ интеграции для текущей версии - ServiceAccountRef. Поэтому для интеграции выберите ServiceAccount из выпадающего списка.

ServiceAccount должен быть создан в неймспейсе cert-manager и иметь в неймспейсе cert-manager роль vault-issuer.

Права для роли vault-issuer
rules:
  - apiGroups: ['']
    resources: ['serviceaccounts/token']
    resourceNames: ['vault-issuer']
    verbs: ['create']

После выбора ServiceAccount в поле mountPath заполните путь монтирования Vault для использования при аутентификации в Vault. Пример: /v1/auth/kubernetes.

В поле Роль пропишите роль пользователя на стороне Vault, например: my-app-1.

В поле Path пропишите путь к монтируемому пути конечной точки подписи PKI-backend Vault, например: my_pki_mount/sign/my-role-name.

В поле Сервер пропишите адрес подключения к серверу Vault, например: https://vault.local.

С целью проверки подлинности и доверия сертификатам сервера Vault, вы можете указать CA Bundle, содержащий корневой и промежуточный сертификаты в формате PEM. Доступно два способа включения CA Bundle в Cluster Issuers:

  • Выберите Файл в блоке CA Bundle, чтобы ввести данные файла CA Bundle. Обратите внимание! Данные файла CA Bundle должны содержать ----BEGIN CERTIFICATE---- и ----END CERTIFICATE----.
  • Выберите Ключ к CA Bundle в блоке CA Bundle, чтобы загрузить CA Bundle с указанием ссылки на Secret в вашем кластере. Выберите Secret, который содержит CA Bundle, и укажите ключ доступа к нему.

Если CABundle не указан в Cluster Issuer, пакет сертификатов cert-manager используется для проверки TLS- соединения.

После завершения настройки менеджера сертификатов нажмите кнопку Сохранить.

Чтобы удалить элемент, нажмите в строке элемента.

×