Cert-manager#

Cert-manager - инструмент, предназначенный для автоматизации управления TLS-сертификатами внутри кластера. Он позволяет запрашивать, выдавать, обновлять и хранить сертификаты, обеспечивая безопасность сервисов без необходимости ручного вмешательства.

Основные задачи и возможности
  • Автоматическое создание и обновление сертификатов:

    Cert-manager отслеживает срок действия сертификатов и автоматически продлевает их.

  • Интеграция с Kubernetes API:

    Добавляет новые ресурсы в API Kubernetes, такие как Certificate, Issuer и ClusterIssuer, что позволяет управлять сертификатами через привычные манифесты.

  • Поддержка разных типов издателей (Issuers):

    Позволяет настраивать источники выдачи сертификатов, например, внутренние PKI или центры сертификации.

  • Хранение сертификатов в Kubernetes Secrets:

    Готовые сертификаты сохраняются в виде Secret-ресурсов, что удобно для интеграции с другими компонентами кластера, такими как Ingress-контроллеры.

  • Гибкая конфигурация:

    Поддерживает разные профили выпуска сертификатов, указание SAN (Subject Alternative Names), параметров ключа и других свойств.

Благодаря своей надежности и широким возможностям, Cert-manager является стандартным решением для управления TLS-сертификатами в экосистеме Kubernetes.

Примечание

Cert-manager является единственным инструментом в компоненте Cert-management, и он устанавливается по умолчанию в процессе установки всего кластера DropApp. В частности, его сертификаты использует инструмент Ingress-nginx в компоненте Ingress-controller.

Конфигурация values#

Значения можно переопределить через редактирование инструмента с именем cert-manager и указанием нужных values в spec.values. Общее описание конфигурации values для инструментов описано в разделе «Конфигурации инструментов дополнительных компонентов».

installCRDs - управление установкой Custom Resource Definitions#

Параметр

Описание

Значение по умолчанию

installCRDs

Устаревший параметр для установки CRD, используйте crds.enabled

false

crds - настройки Custom Resource Definitions#

Параметр

Описание

Значение по умолчанию

crds.enabled

Установить CRDs как часть Helm-установки

true

crds.keep

Добавить аннотацию "helm.sh/resource-policy": keep к CRDs

true

replicaCount - количество реплик#

Параметр

Описание

Значение по умолчанию

replicaCount

Количество реплик контроллера Cert-manager для высокой доступности

1

strategy - стратегия обновления контроллера deployment#

Параметр

Описание

Значение по умолчанию

strategy

Стратегия обновления для deployment контроллера Cert-manager

1

podDisruptionBudget - политика прерывания pods#

Параметр

Описание

Значение по умолчанию

podDisruptionBudget.enabled

Включить PodDisruptionBudget для предотвращения простоев

false

featureGates - экспериментальные функции#

Параметр

Описание

Значение по умолчанию

featureGates

Список функций через запятую для включения в контроллере

""

maxConcurrentChallenges - ограничение concurrent challenges#

Параметр

Описание

Значение по умолчанию

maxConcurrentChallenges

Максимальное количество challenges, обрабатываемых одновременно

60

image - конфигурация образа контроллера#

Параметр

Описание

Значение по умолчанию

image.repository

Репозиторий образа контроллера

"{{ .Values.global.image.registry }}/{{ .Values.global.image.repository }}/{{ .Values.global.dappVersion }}/dapp-cert-manager/cert-manager-controller"

image.tag

Тег образа контроллера Cert-manager

v1.16.4

image.pullPolicy

Политика загрузки образа (Always, IfNotPresent, Never)

IfNotPresent

namespace - namespace для установки сервисов#

Параметр

Описание

Значение по умолчанию

namespace

Namespace для установки сервисов Cert-manager

""

serviceAccount - настройки учетной записи сервиса#

Параметр

Описание

Значение по умолчанию

serviceAccount.create

Создавать ServiceAccount для cert-manager

true

serviceAccount.name

Имя ServiceAccount

""

serviceAccount.annotations

Аннотации для ServiceAccount

{}

serviceAccount.automountServiceAccountToken

Автоматически монтировать API credentials для Service Account

true

enableCertificateOwnerRef - автоматическое удаление секретов#

Параметр

Описание

Значение по умолчанию

enableCertificateOwnerRef

Автоматически удалять секреты при удалении ресурса Certificate

false

config - конфигурационный файл контроллера#

Параметр

Описание

Значение по умолчанию

config

YAML-конфигурация для компонентов Cert-manager через файл

{}

dns01RecursiveNameservers - настройки DNS для ACME DNS01#

Параметр

Описание

Значение по умолчанию

dns01RecursiveNameservers

Список рекурсивных nameservers для DNS01 самопроверки

""

dns01RecursiveNameserversOnly

Принуждать использовать только рекурсивные nameservers

false

disableAutoApproval - отключение автоматического одобрения#

Параметр

Описание

Значение по умолчанию

disableAutoApproval

Отключить встроенное автоматическое одобрение запросов на сертификаты

false

approveSignerNames - список имен подписантов для автоодобрения#

Параметр

Описание

Значение по умолчанию

approveSignerNames

Список имен подписантов для автоматического одобрения CertificateRequests

["issuers.cert-manager.io/", "clusterissuers.cert-manager.io/"]

extraArgs - дополнительные параметры запуска#

Параметр

Описание

Значение по умолчанию

extraArgs

Дополнительные аргументы командной строки для контроллера

[]

extraEnv - дополнительные переменные окружения#

Параметр

Описание

Значение по умолчанию

extraEnv

Дополнительные переменные окружения для контроллера

[]

resources - лимиты и requests ресурсов#

Параметр

Описание

Значение по умолчанию

resources.requests.cpu

Запросы CPU

50m

resources.requests.memory

Запросы памяти

128Mi

resources.limits.cpu

Лимит CPU

500m

resources.limits.memory

Лимит памяти

500Mi

securityContext - securityContext контейнера#

Параметр

Описание

Значение по умолчанию

securityContext.runAsNonRoot

Запуск от имени непривилегированного пользователя

true

securityContext.seccompProfile.type

Тип профиля seccomp для контейнера

RuntimeDefault

containerSecurityContext - контекст безопасности контейнера#

Параметр

Описание

Значение по умолчанию

containerSecurityContext.allowPrivilegeEscalation

Разрешить эскалацию привилегий

false

containerSecurityContext.capabilities.drop

Список capabilities для удаления

["ALL"]

containerSecurityContext.readOnlyRootFilesystem

Использовать read-only корневую файловую систему

true

volumes - дополнительные тома для пода контроллера#

Параметр

Описание

Значение по умолчанию

volumes

Дополнительные тома для добавления к pod контроллера

[]

volumeMounts - дополнительные монтирования томов#

Параметр

Описание

Значение по умолчанию

volumeMounts

Дополнительные монтирования томов для контейнера контроллера

[]

podLabels - метки пода#

Параметр

Описание

Значение по умолчанию

podLabels

Дополнительные метки для добавления к pods контроллера

{}

hostAliases - псевдонимы хостов для подов#

Параметр

Описание

Значение по умолчанию

hostAliases

Дополнительные hostAliases для pods контроллера

[]

nodeSelector - селектор узла пода#

Параметр

Описание

Значение по умолчанию

nodeSelector

Ограничивает запуск pods на определенных (тэгированных) узлах

{}

nodeSelector.kubernetes.io/os

Селектор операционной системы узла

{}

ingressShim - настройки ingress-shim#

Параметр

Описание

Значение по умолчанию

ingressShim

Конфигурация для автоматического создания Certificate из ресурсов Ingress

{}

affinity - правила размещения pod#

Параметр

Описание

Значение по умолчанию

affinity

Описывает правила размещения pods

{}

tolerations - разрешенные tolerations к taint узлов#

Параметр

Описание

Значение по умолчанию

tolerations

Разрешает запускаться на taint-узлах

[]

topologySpreadConstraints - равномерное распределение pods#

Параметр

Описание

Значение по умолчанию

topologySpreadConstraints

Ограничения распределения топологии Kubernetes

[]

livenessProbe - проверка работоспособности#

Параметр

Описание

Значение по умолчанию

livenessProbe.enabled

Включить проверку работоспособности

true

livenessProbe.initialDelaySeconds

Задержка перед первой проверкой

10

livenessProbe.periodSeconds

Периодичность

10

livenessProbe.timeoutSeconds

Время ожидания проверки

15

livenessProbe.failureThreshold

Количество неудачных проверок для перезапуска

8

livenessProbe.successThreshold

Количество успешных проверок для восстановления

1

Параметр

Описание

Значение по умолчанию

enableServiceLinks

Внедрение информации о сервисах в переменные окружения

false

prometheus - конфигурация мониторинга Prometheus#

Параметр

Описание

Значение по умолчанию

prometheus.enabled

Включить мониторинг Prometheus

true

prometheus.servicemonitor.enabled

Создать ServiceMonitor для добавления Cert-manager в Prometheus

false

prometheus.servicemonitor.prometheusInstance

Метка prometheus на создаваемом ServiceMonitor

default

prometheus.servicemonitor.targetPort

Целевой порт для установки на ServiceMonitor

9402

prometheus.servicemonitor.path

Путь для сбора метрик

/metrics

prometheus.servicemonitor.interval

Интервал сбора метрик ServiceMonitor

""

prometheus.servicemonitor.scrapeTimeout

Время ожидания сбора метрик

30s

prometheus.servicemonitor.labels

Дополнительные метки для ServiceMonitor

{}

prometheus.servicemonitor.annotations

Дополнительные аннотации для ServiceMonitor

{}

prometheus.servicemonitor.honorLabels

Сохранять метки из scraped-данных

false

prometheus.servicemonitor.endpointAdditionalProperties

Дополнительные свойства для endpoint

{}

prometheus.podmonitor.enabled

Создать PodMonitor для добавления Cert-manager в Prometheus

false

prometheus.podmonitor.prometheusInstance

Метка Prometheus на создаваемом PodMonitor

default

prometheus.podmonitor.path

Путь для сбора метрик

/metrics

prometheus.podmonitor.interval

Интервал сбора метрик

60s

prometheus.podmonitor.scrapeTimeout

Время ожидания сбора метрик

30s

prometheus.podmonitor.labels

Дополнительные метки для PodMonitor

{}

prometheus.podmonitor.annotations

Дополнительные аннотации для PodMonitor

{}

prometheus.podmonitor.honorLabels

Сохранять метки из scraped-данных

false

prometheus.podmonitor.endpointAdditionalProperties

Дополнительные свойства для endpoint

{}

webhook - конфигурация компонента webhook#

Параметр

Описание

Значение по умолчанию

webhook.replicaCount

Количество реплик webhook для высокой доступности

1

webhook.timeoutSeconds

Время ожидания API-сервера для ответа webhook (1-30 сек)

30

webhook.config

Конфигурация для компонента webhook через файл

{}

webhook.strategy

Стратегия обновления для deployment webhook

{}

webhook.securityContext.runAsNonRoot

Запускать webhook от имени непривилегированного пользователя

true

webhook.securityContext.seccompProfile.type

Тип профиля seccomp для webhook

RuntimeDefault

webhook.containerSecurityContext.allowPrivilegeEscalation

Разрешить эскалацию привилегий для webhook

false

webhook.containerSecurityContext.capabilities.drop

Список capabilities для удаления в webhook

["ALL"]

webhook.containerSecurityContext.readOnlyRootFilesystem

Использовать read-only файловую систему в webhook

true

webhook.podDisruptionBudget.enabled

Включить PodDisruptionBudget для webhook

false

webhook.validatingWebhookConfiguration.namespaceSelector.matchExpressions

Селектор namespace для validating webhook

[{"key": "cert-manager.io/disable-validation", "operator": "NotIn", "values": ["true"]}]

webhook.mutatingWebhookConfiguration.namespaceSelector

Селектор namespace для mutating webhook

{}

webhook.extraArgs

Дополнительные аргументы командной строки для webhook

[]

webhook.extraEnv

Дополнительные переменные окружения для webhook

[]

webhook.featureGates

Список функций через запятую для webhook

""

webhook.resources

Ресурсы для pod webhook

{}

webhook.livenessProbe.failureThreshold

Количество неудачных liveness проверок

3

webhook.livenessProbe.initialDelaySeconds

Задержка перед первой liveness проверкой

60

webhook.livenessProbe.periodSeconds

Период между liveness проверками

10

webhook.livenessProbe.successThreshold

Количество успешных liveness проверок

1

webhook.livenessProbe.timeoutSeconds

Время ожидания liveness проверки

1

webhook.readinessProbe.failureThreshold

Количество неудачных readiness проверок

3

webhook.readinessProbe.initialDelaySeconds

Задержка перед первой readiness проверкой

5

webhook.readinessProbe.periodSeconds

Период между readiness проверками

5

webhook.readinessProbe.successThreshold

Количество успешных readiness проверок

1

webhook.readinessProbe.timeoutSeconds

Время ожидания readiness проверки

1

webhook.nodeSelector.kubernetes.io/os

Селектор операционной системы для webhook

linux

webhook.affinity

Kubernetes Affinity для планирования pods webhook

{}

webhook.tolerations

Список Kubernetes Tolerations для pods webhook

[]

webhook.topologySpreadConstraints

Ограничения распределения топологии для webhook

[]

webhook.podLabels

Дополнительные метки для pods webhook

{}

webhook.serviceLabels

Дополнительные метки для Service webhook

{}

webhook.serviceIPFamilyPolicy

Политика IP-семейства для Service webhook

""

webhook.serviceIPFamilies

IP-семейства для Service webhook

[]

webhook.image.repository

Репозиторий образа webhook

"{{ .Values.global.image.registry }}/{{ .Values.global.image.repository }}/{{ .Values.global.dappVersion }}/dapp-cert-manager/cert-manager-webhook"

webhook.image.tag

Тег образа webhook

v1.16.4

webhook.image.pullPolicy

Политика получения образа webhook

IfNotPresent

webhook.serviceAccount.create

Создать сервисный аккаунт для webhook

true

webhook.serviceAccount.automountServiceAccountToken

Автоматически монтировать API credentials для webhook

true

webhook.securePort

Порт, на котором webhook слушает запросы

10250

webhook.hostNetwork

Запускать webhook в hostNetwork режиме

false

webhook.serviceType

Тип сервиса для webhook

ClusterIP

webhook.url

Переопределение URL для mutating и validating webhook

{}

webhook.networkPolicy.enabled

Создать сетевые политики для webhook

false

webhook.networkPolicy.ingress

Правила входящего трафика для сетевой политики

[{"from": [{"ipBlock": {"cidr": "0.0.0.0/0"}}]}]

webhook.networkPolicy.egress

Правила исходящего трафика для сетевой политики

[{"ports": [{"port": 80, "protocol": "TCP"}, {"port": 443, "protocol": "TCP"}, {"port": 53, "protocol": "TCP"}, {"port": 53, "protocol": "UDP"}, {"port": 6443, "protocol": "TCP"}], "to": [{"ipBlock": {"cidr": "0.0.0.0/0"}}]}]

webhook.volumes

Дополнительные тома для контроллера

[]

webhook.volumeMounts

Дополнительные монтирования томов для контроллера

[]

webhook.enableServiceLinks

Внедрять информацию о сервисах в переменные окружения webhook

false

cainjector - конфигурация компонента cainjector#

Параметр

Описание

Значение по умолчанию

cainjector.enabled

Создать deployment cainjector

true

cainjector.replicaCount

Количество реплик cainjector для высокой доступности

1

cainjector.config

Конфигурация для компонента cainjector через файл

{}

cainjector.strategy

Стратегия обновления для deployment cainjector

{}

cainjector.securityContext.runAsNonRoot

Запускать cainjector от имени непривилегированного пользователя

true

cainjector.securityContext.seccompProfile.type

Тип профиля seccomp для cainjector

RuntimeDefault

cainjector.containerSecurityContext.allowPrivilegeEscalation

Разрешить эскалацию привилегий для cainjector

false

cainjector.containerSecurityContext.capabilities.drop

Список capabilities для удаления в cainjector

["ALL"]

cainjector.containerSecurityContext.readOnlyRootFilesystem

Использовать read-only файловую систему в cainjector

true

cainjector.podDisruptionBudget.enabled

Включить PodDisruptionBudget для cainjector

false

cainjector.extraArgs

Дополнительные аргументы командной строки для cainjector

[]

cainjector.extraEnv

Дополнительные переменные окружения для cainjector

[]

cainjector.featureGates

Список функций через запятую для cainjector

""

cainjector.resources

Ресурсы для пода cainjector

{}

cainjector.nodeSelector.kubernetes.io/os

Селектор операционной системы для cainjector

linux

cainjector.affinity

Kubernetes Affinity для планирования подов cainjector

{}

cainjector.tolerations

Список Kubernetes Tolerations для подов cainjector

[]

cainjector.topologySpreadConstraints

Ограничения распределения топологии для cainjector

[]

cainjector.podLabels

Дополнительные метки для подов cainjector

{}

cainjector.serviceLabels

Дополнительные метки для метрик Service cainjector

{}

cainjector.image.repository

Репозиторий образа cainjector

"{{ .Values.global.image.registry }}/{{ .Values.global.image.repository }}/{{ .Values.global.dappVersion }}/dapp-cert-manager/cert-manager-cainjector"

cainjector.image.tag

Тег образа cainjector

v1.16.4

cainjector.image.pullPolicy

Политика получения образа cainjector

IfNotPresent

cainjector.serviceAccount.create

Создать сервисный аккаунт для cainjector

true

cainjector.serviceAccount.automountServiceAccountToken

Автоматически монтировать API credentials для cainjector

true

cainjector.volumes

Дополнительные тома для контроллера

[]

cainjector.volumeMounts

Дополнительные монтирования томов для контроллера

[]

cainjector.enableServiceLinks

Внедрять информацию о сервисах в переменные окружения cainjector

false

acmesolver - конфигурация ACME solver#

Параметр

Описание

Значение по умолчанию

acmesolver.image.repository

Репозиторий образа acmesolver

"{{ .Values.global.image.registry }}/{{ .Values.global.image.repository }}/{{ .Values.global.dappVersion }}/dapp-cert-manager/cert-manager-acmesolver"

acmesolver.image.tag

Тег образа acmesolver

v1.16.4

acmesolver.image.pullPolicy

Политика получения образа acmesolver

IfNotPresent

startupapicheck - проверка доступности API при запуске#

Параметр

Описание

Значение по умолчанию

startupapicheck.enabled

Включить проверку startup api

true

startupapicheck.securityContext.runAsNonRoot

Запускать startupapicheck от имени непривилегированного пользователя

true

startupapicheck.securityContext.seccompProfile.type

Тип профиля seccomp для startupapicheck

RuntimeDefault

startupapicheck.containerSecurityContext.allowPrivilegeEscalation

Разрешить эскалацию привилегий для startupapicheck

false

startupapicheck.containerSecurityContext.capabilities.drop

Список capabilities для удаления в startupapicheck

["ALL"]

startupapicheck.containerSecurityContext.readOnlyRootFilesystem

Использовать read-only файловую систему в startupapicheck

true

startupapicheck.timeout

Время ожидания для команды kubectl check api

1m

startupapicheck.backoffLimit

Лимит повторных попыток Job

4

startupapicheck.jobAnnotations.helm.sh/hook

Хук Helm для Job

post-install

startupapicheck.jobAnnotations.helm.sh/hook-weight

Вес хука Helm

"1"

startupapicheck.jobAnnotations.helm.sh/hook-delete-policy

Политика удаления хука

before-hook-creation,hook-succeeded

startupapicheck.extraArgs

Дополнительные аргументы командной строки для startupapicheck

["-v=1"]

startupapicheck.extraEnv

Дополнительные переменные окружения для startupapicheck

[]

startupapicheck.resources

Ресурсы для pod startupapicheck

{}

startupapicheck.nodeSelector.kubernetes.io/os

Селектор операционной системы для startupapicheck

linux

startupapicheck.affinity

Kubernetes Affinity для планирования pods startupapicheck

{}

startupapicheck.tolerations

Список Kubernetes Tolerations для pods startupapicheck

[]

startupapicheck.podLabels

Дополнительные метки для pods startupapicheck

{}

startupapicheck.image.repository

Репозиторий образа startupapicheck

"{{ .Values.global.image.registry }}/{{ .Values.global.image.repository }}/{{ .Values.global.dappVersion }}/dapp-cert-manager-ctl/cert-manager-ctl"

startupapicheck.image.tag

Тег образа startupapicheck

v2.1.1

startupapicheck.image.pullPolicy

Политика получения образа startupapicheck

IfNotPresent

startupapicheck.rbac.annotations.helm.sh/hook

Хук Helm для RBAC ресурсов

post-install

startupapicheck.rbac.annotations.helm.sh/hook-weight

Вес хука Helm для RBAC

"-5"

startupapicheck.rbac.annotations.helm.sh/hook-delete-policy

Политика удаления хука для RBAC

before-hook-creation,hook-succeeded

startupapicheck.serviceAccount.create

Создать сервисный аккаунт для startupapicheck

true

startupapicheck.serviceAccount.annotations.helm.sh/hook

Хук Helm для Service Account

post-install

startupapicheck.serviceAccount.annotations.helm.sh/hook-weight

Вес хука Helm для Service Account

"-5"

startupapicheck.serviceAccount.annotations.helm.sh/hook-delete-policy

Политика удаления хука для Service Account

before-hook-creation,hook-succeeded

startupapicheck.serviceAccount.automountServiceAccountToken

Автоматически монтировать API credentials для startupapicheck

true

startupapicheck.volumes

Дополнительные тома для контроллера

[]

startupapicheck.volumeMounts

Дополнительные монтирования томов для контроллера

[]

startupapicheck.enableServiceLinks

Внедрять информацию о сервисах в переменные окружения startupapicheck

false

extraObjects - дополнительные Kubernetes ресурсы#

Параметр

Описание

Значение по умолчанию

extraObjects

Создать дополнительные манифесты через значения

[]

creator - метка создателя#

Параметр

Описание

Значение по умолчанию

creator

Поле для обозначения способа создания (helm/static)

"helm"

enabled - состояние чарта#

Параметр

Описание

Значение по умолчанию

enabled

Поле для использования в качестве условия зависимости

true