External Secrets#

External Secrets - это инструмент, предназначенный для интеграции внешних систем управления секретами с кластером Kubernetes. Он позволяет безопасно извлекать секреты из сторонних хранилищ и автоматически создавать на их основе стандартные секреты в Kubernetes.

Основные задачи и возможности
  • Подключается к внешнему хранилищу, извлекает данные и создает или обновляет секреты Kubernetes, делая их доступными для приложений.

  • Секреты описываются в виде пользовательских ресурсов (SecretStore, ExternalSecret), что позволяет управлять ими через GitOps-процессы.

  • Поддерживает множество провайдеров, включая облака и локальные решения, обеспечивая унифицированный доступ к секретам.

  • Позволяет использовать зашифрованные значения (например, через SealedSecrets) и интегрируется с политиками безопасности.

  • Поддерживает преобразование формата секретов, выбор конкретных ключей, генерацию новых значений (например, паролей).

  • Полностью совместим с Argo CD, Flux и другими инструментами, позволяя централизованно управлять конфигурацией.

Примечание

External Secrets не является инструментом по умолчанию в компоненте Security. Его можно установить как инструмент (Tool) или явно включить в список spec.tools при установке компонента Security.

Настройка#

Создание service account#

  1. В настройке OpenBao создайте kubernetes auth.

  2. Создайте service account, чтобы External Secrets мог работать с OpenBao:

    export ESO_SA=external-secrets
    
    kubectl -n dapp-security exec -ti openbao-0 -- sh -lc "
    export BAO_ADDR=http://127.0.0.1:8200
    bao write auth/kubernetes/role/eso-sp01 \
      bound_service_account_names=$ESO_SA \
      bound_service_account_namespaces=dapp-security \
      policies=eso-sp01 \
      ttl=15m
    "
    

Создание SecretStore#

Создайте SecretStore для интеграции с OpenBao, если он находится в том же кластере, что и External Secrets:

apiVersion: external-secrets.io/v1
kind: SecretStore
metadata:
  name: openbao
  namespace: dapp-security
spec:
  provider:
    vault:
      server: "http://openbao.dapp-security.svc:8200"
      path: "kv"
      version: "v2"
      auth:
        kubernetes:
          mountPath: "kubernetes"
          role: "eso-sp01"
          serviceAccountRef:
            name: external-secrets

Также можно создать ClusterSecretStore на весь кластер, а не на отдельное пространство имен.

Создайте ClusterSecretStore для интеграции с OpenBao если он находится не в том же кластере, что и External Secrets:

apiVersion: external-secrets.io/v1
kind: SecretStore
metadata:
  name: openbao
  namespace: dapp-security
spec:
  provider:
    vault:
      server: "https://openbao...."
      path: "kv"
      version: "v2"
      auth:
        kubernetes:
          mountPath: "kubernetes"
          role: "eso-sp01"
          serviceAccountRef:
            name: external-secrets

В этом случае server будет удаленным - внешний адрес OpenBao, доступный через ingress OpenBao.

Создание ExternalSecret#

По примеру секрета, созданного с помощью инструмента OpenBao, создайте ExternalSecret:

apiVersion: external-secrets.io/v1
kind: ExternalSecret
metadata:
  name: demo-app-secret
  namespace: dapp-security
spec:
  refreshInterval: 1m
  secretStoreRef:
    name: openbao
    kind: SecretStore
  target:
    name: demo-app-secret
    creationPolicy: Owner
  data:
    - secretKey: username
      remoteRef:
        key: "sp-01/payments/api/db"
        property: "username"
    - secretKey: password
      remoteRef:
        key: "sp-01/payments/api/db"
        property: "password"

Пример приложения для чтения секретов#

Создайте приложение, которое читает секреты:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: demo-app
  namespace: dapp-security
  labels:
    app: demo-app
spec:
  replicas: 1
  selector:
    matchLabels:
      app: demo-app
  template:
    metadata:
      labels:
        app: demo-app
    spec:
      containers:
        - name: app
          image: busybox:1.36
          command: ["/bin/sh","-lc"]
          args:
            - |
              echo "Starting demo-app; will print credentials every 30s (DEMO ONLY)";
              while true; do
                echo "USERNAME=$DEMO_USERNAME PASSWORD=$DEMO_PASSWORD";
                sleep 30;
              done
          env:
            - name: DEMO_USERNAME
              valueFrom:
                secretKeyRef:
                  name: demo-app-secret
                  key: username
            - name: DEMO_PASSWORD
              valueFrom:
                secretKeyRef:
                  name: demo-app-secret
                  key: password
---
apiVersion: v1
kind: Service
metadata:
  name: demo-app
  namespace: dapp-security
spec:
  selector:
    app: demo-app
  ports:
    - name: http
      port: 8080
      targetPort: 8080

В логах pod demo-app появятся прочитанные значения.

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

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

global - глобальные настройки для всего чарта#

Параметр

Описание

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

global.nodeSelector

Глобальные nodeSelector-ограничения, позволяющие закрепить размещение pod на узлах с заданными метками (например, выделенный пул)

{}

global.tolerations

Глобальные tolerations для допуска pod на узлы с taints (например, узлы control-plane/infra или выделенные рабочие узлы)

[]

global.topologySpreadConstraints

Глобальные правила равномерного распределения pod по топологиям (зона/хост) для снижения риска деградации при отказах

[]

global.affinity

Глобальные правила affinity/anti-affinity, влияющие на колокацию pod и распределение по узлам

{}

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

Параметр

Описание

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

replicaCount

Количество реплик основного контроллера External Secrets Operator. При leader election может быть >1 для HA

1

bitwarden-sdk-server - настройки опционального bitwarden-sdk-server#

Параметр

Описание

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

bitwarden-sdk-server.enabled

Включает установку вспомогательного bitwarden-sdk-server (используется провайдерами/интеграциями, которым требуется Bitwarden SDK), если он предусмотрен чартом. Булевый флаг: установить компонент; не устанавливать компонент

false

bitwarden-sdk-server.namespaceOverride

Явно задает пространство имен для bitwarden-sdk-server, если требуется вынести его из пространства имен релиза

""

revisionHistoryLimit - лимит истории ReplicaSet для Deployment#

Параметр

Описание

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

revisionHistoryLimit

Количество ReplicaSet, сохраняемых в истории для Deployment. Уменьшение экономит Etcd и ускоряет очистку, увеличение облегчает откаты

10

image - настройки контейнерного образа External Secrets Operator#

Параметр

Описание

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

image.repository

Шаблон/строка полного имени контейнерного образа (включая registry/repository), который будет использован для соответствующего Deployment

{{ .Values.global.image.registry }}/{{ .Values.global.image.repository }}/{{ .Values.global.dappVersion }}/dapp-external-secrets/dev/external-secrets

image.pullPolicy

Политика скачивания образа Kubernetes (IfNotPresent/Always/Never) — влияет на поведение при обновлениях и на кластеры без доступа в интернет. Возможные значения: IfNotPresent, Always, Never

IfNotPresent

image.tag

Тег образа. Обычно фиксируется для воспроизводимости, либо наследуется от appVersion чарта

v0.19.2-master

image.flavour

Вариант (flavour) образа в рамках одного тега (например, distroless/ubi), если поставщик образов публикует такие сборки

""

installCRDs - управление установкой CRD через Helm#

Параметр

Описание

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

installCRDs

Управление Helm установкой/обновлением CRD. При GitOps может быть предпочтительнее устанавливать CRD отдельно, чтобы контролировать жизненный цикл

true

crds - детальная настройка создания CRD и конверсии#

Параметр

Описание

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

crds.createClusterExternalSecret

Создание ExternalSecret на уровне кластера при установке чарта. Выключайте, если CRD уже развернут централизованно или управляется другим релизом

true

crds.createClusterSecretStore

Создание SecretStore на уровне кластера при установке чарта. Выключайте, если CRD уже развернут централизованно или управляется другим релизом

true

crds.createClusterGenerator

Создание Generator на уровне кластера при установке чарта. Выключайте, если CRD уже развернут централизованно или управляется другим релизом

true

crds.createClusterPushSecret

Создание PushSecret на уровне кластера при установке чарта. Выключайте, если CRD уже развернут централизованно или управляется другим релизом

true

crds.createPushSecret

Создание PushSecret при установке чарта. Выключайте, если CRD уже развернут централизованно или управляется другим релизом

true

crds.annotations

Дополнительные аннотации, которые будут проставлены на CRD-объекты (например, для политики администрирования или инструментов безопасности)

{}

crds.conversion.enabled

Включает webhook-конверсию версий CRD. Обычно требуется при миграциях между версиями API; выключено, если v1alpha1 не поддерживается. Булевый флаг: включить конверсию; не использовать конверсию

false

imagePullSecrets - секреты для скачивания образов из приватного registry#

Параметр

Описание

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

imagePullSecrets

Список секретов типа docker-registry, которые будут добавлены в PodSpec для аутентификации при pull образов из приватного реестра

[]

nameOverride - переопределение имени релиза (name)#

Параметр

Описание

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

nameOverride

Переопределяет значение имени Helm-релиза (нужно для интеграции с существующими naming conventions)

""

fullnameOverride - переопределение полного имени ресурсов (fullname)#

Параметр

Описание

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

fullnameOverride

Переопределяет значение полного имени ресурсов Helm-релиза (нужно для интеграции с существующими naming conventions)

""

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

Параметр

Описание

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

namespaceOverride

Переопределяет значение пространства имен Helm-релиза (нужно для интеграции с существующими naming conventions)

""

commonLabels - дополнительные labels для всех ресурсов#

Параметр

Описание и возможные значения

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

commonLabels

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

""

leaderElect - настройка leader election для HA#

Параметр

Описание

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

leaderElect

Включает leader election между репликами контроллера, чтобы активной была только одна реплика. Важно для безопасного масштабирования. Булевый флаг: использовать leader election; каждая реплика работает независимо

false

controllerClass - класс контроллера для фильтрации ресурсов#

Параметр

Описание

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

controllerClass

Идентификатор класса контроллера. Используется для фильтрации SecretStore/ExternalSecret по метке/полю класса, чтобы несколько операторов могли сосуществовать в одном кластере

""

extendedMetricLabels - расширенные labels метрик#

Параметр

Описание

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

extendedMetricLabels

Добавить рекомендуемые Kubernetes-аннотации как метки метрик Prometheus. Упрощает агрегацию/фильтрацию, но при этом увеличивает кардинальность. Булевый флаг: расширить метки; оставить минимальные метки

false

scopedNamespace - ограничение оператора одним namespace#

Параметр

Описание

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

scopedNamespace

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

""

scopedRBAC - scoped RBAC при ограничении namespace#

Параметр

Описание

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

scopedRBAC

При scopedNamespace создает RBAC только внутри указанного пространства имен и отключает кластерные объекты (ClusterSecretStore/ClusterExternalSecret), снижая blast radius. Булевый флаг: создавать scoped RBAC; использовать кластерный RBAC

false

processClusterExternalSecret - обработка ClusterExternalSecret#

Параметр

Описание

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

processClusterExternalSecret

Обработка оператором ресурса processClusterExternalSecret. Выключайте, если функционал не используется или делегирован другому инстансу

true

processClusterPushSecret - обработка ClusterPushSecret#

Параметр

Описание

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

processClusterPushSecret

Обработка оператором ресурса processClusterPushSecret. Выключайте, если функционал не используется или делегирован другому инстансу

true

processClusterStore - обработка ClusterSecretStore#

Параметр

Описание

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

processClusterStore

Обработка оператором ресурса processClusterStore. Выключайте, если функционал не используется или делегирован другому инстансу

true

processPushSecret - обработка PushSecret#

Параметр

Описание

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

processPushSecret

Обработка оператором ресурса processPushSecret. Выключайте, если функционал не используется или делегирован другому инстансу

true

createOperator - создание Deployment оператора#

Параметр

Описание

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

createOperator

Создание Helm оператора Deployment. Если выключено, Deployment не будет создан - подходит для сценариев, где оператор разворачивается отдельно, а этот релиз управляет только CRD / доп. объектами

true

concurrent - параллелизм reconcile#

Параметр

Описание

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

concurrent

Лимит параллельных reconcile-циклов ExternalSecret. Повышение увеличивает пропускную способность, но может нагружать API-сервер и провайдеров секретов

1

log - логирование оператора#

Параметр

Описание

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

log.level

Уровень логирования основного контроллера (debug/info/warn/error). Более подробные уровни упрощают диагностику, но увеличивают объем логов. Возможные значения: debug, info, warn, error

info

log.timeEncoding

Формат временных меток в логах (например, epoch/iso8601) для упрощения парсинга лог-агрегаторами и корреляции событий

epoch

service - настройки основного Service (в т.ч. dual-stack)#

Параметр

Описание

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

service.ipFamilyPolicy

Политика IP family для Service (SingleStack/PreferDualStack/RequireDualStack и др.), применима в кластерах dual-stack

""

service.ipFamilies

Порядок и набор IP family (IPv4/IPv6) для Service, влияет на выдачу ClusterIP и совместимость с dual-stack. Возможные значения: IPv4, IPv6

[]

serviceAccount - настройки оператора ServiceAccount#

Параметр

Описание

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

serviceAccount.create

Создание отдельного ServiceAccount для оператора. Выключайте, если ServiceAccount управляется отдельно (например, в рамках платформы). Булевый флаг: создать ServiceAccount; использовать существующий

true

serviceAccount.automount

Автомонтирование токена ServiceAccount в контейнеры pod. Отключение снижает риск утечки токена, но некоторые сценарии могут требовать токен. Булевый флаг: монтировать токен; не монтировать токен

true

serviceAccount.annotations

Дополнительные метаданные (аннотации) ServiceAccount для интеграции с IAM/политиками (например, IRSA, workload identity, аудит)

{}

serviceAccount.extraLabels

Дополнительные метаданные (метки) ServiceAccount для интеграции с IAM/политиками (например, IRSA, workload identity, аудит)

{}

serviceAccount.name

Имя существующего ServiceAccount (или явное имя создаваемого) для согласования права/политики с внешними процессами

""

rbac - настройки RBAC и агрегации прав#

Параметр

Описание

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

rbac.create

Создать RBAC-ресурсы (Role/ClusterRole и bindings), необходимые оператору. При выключении необходимо предоставить эквивалентные права вручную

true

rbac.servicebindings.create

Создать ClusterRole для чтения ресурсов ServiceBindings (если используется интеграция service binding), чтобы оператор мог извлекать нужные данные

true

rbac.aggregateToView

Агрегация права оператора в стандартный ClusterRole view, чтобы пользователи с view могли читать ресурсы External Secrets

true

rbac.aggregateToEdit

Агрегация права оператора в стандартный ClusterRole edit, упрощая делегирование управления External Secrets через Kubernetes RBAC

true

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

Параметр

Описание

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

extraEnv

Дополнительные переменные окружения для контейнера. Используется для тонкой настройки поведения/провайдеров без модификации образа

[]

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

Параметр

Описание и возможные значения

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

extraArgs

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

""

extraVolumes - дополнительные тома pod#

Параметр

Описание

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

extraVolumes

Дополнительные тома в спецификации pod (ConfigMap/Secret/emptyDir и др.) для предоставления файлов/сертификатов/конфигураций контейнеру

[]

extraObjects - дополнительные Kubernetes-объекты#

Параметр

Описание

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

extraObjects

Произвольные Kubernetes-объекты, которые Helm установит вместе с чартом (например, NetworkPolicy, PodMonitor, дополнительные RBAC)

[]

extraVolumeMounts - дополнительные volumeMounts#

Параметр

Описание

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

extraVolumeMounts

Дополнительные volumeMounts для подключения томов в контейнер (пути/режимы/readonly)

[]

extraInitContainers - дополнительные initContainers#

Параметр

Описание

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

extraInitContainers

Дополнительные initContainers, выполняемые до основного контейнера (например, подготовка файлов, ожидание зависимостей, миграции)

[]

extraContainers - дополнительные sidecar-контейнеры#

Параметр

Описание

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

extraContainers

Дополнительные sidecar-контейнеры (например, прокси, агенты логирования/метрик), разворачиваемые в одном pod с оператором

[]

deploymentAnnotations - аннотации на Deployment#

Параметр

Описание и возможные значения

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

deploymentAnnotations

Аннотации на Deployment

""

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

Параметр

Описание и возможные значения

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

strategy

Стратегия обновления pod при при развертывании новой версии Deployment (Recreate, RollingUpdate)

{}

podAnnotations - annotations на Pod#

Параметр

Описание и возможные значения

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

podAnnotations

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

{}

podLabels - labels на Pod#

Параметр

Описание и возможные значения

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

podLabels

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

{}

podSecurityContext - контекст безопасности pod#

Параметр

Описание

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

podSecurityContext.enabled

Включает применение podSecurityContext (контекст безопасности на уровне pod), например fsGroup. В DropApp может адаптироваться совместно с compatibility-настройками

true

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

Параметр

Описание

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

securityContext.allowPrivilegeEscalation

Запрет эскалации привилегий внутри контейнера (setuid, file capabilities) для снижения риска компрометации. Булевый флаг: разрешить эскалацию; запретить эскалацию

false

securityContext.capabilities.drop

Список элементов конфигурации; структура элементов зависит от конкретного параметра

- ALL

securityContext.enabled

Включает применение securityContext на уровне контейнера (права/пользователь/системные вызовы) для соответствия требованиям безопасности

true

securityContext.readOnlyRootFilesystem

Монтирует корневую файловую систему контейнера только для чтения. Улучшает безопасность, но требует выноса записей в writable-тома. Булевый флаг: rootfs read-only; rootfs writable

true

securityContext.runAsNonRoot

Требует запуск процесса не от root. Совместно с runAsUser обеспечивает выполнение в непривилегированном контексте. Булевый флаг: требовать non-root; разрешить root

true

securityContext.runAsUser

UID, под которым будет запущен процесс в контейнере. Должен соответствовать правам на смонтированные тома и требованиям платформы

1000

securityContext.seccompProfile.type

Тип seccomp-профиля для ограничения системных вызовов контейнера: RuntimeDefault (профиль runtime), Localhost (кастомный профиль), Unconfined (без ограничений)

RuntimeDefault

resources - requests/limits ресурсов#

Параметр

Описание и возможные значения

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

resources

Ограничения ресурсов для pod

{}

serviceMonitor - настройка ServiceMonitor для Prometheus Operator#

Параметр

Описание

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

serviceMonitor.enabled

Создание ServiceMonitor (Prometheus Operator) для сбора метрик. Включите, если используется Prometheus Operator/VictoriaMetrics Operator. Булевый флаг: создать ServiceMonitor; не создавать

false

serviceMonitor.namespace

Пространство имен, в котором будет создан ServiceMonitor. Полезно, если мониторинг централизован и ожидает ресурсы в своем пространстве имен

""

serviceMonitor.additionalLabels

Дополнительные метки ServiceMonitor (например, для Prometheus selector или multi-tenant мониторинга)

{}

serviceMonitor.interval

Тайминг scrape-метрик: интервал опроса. Согласуйте с нагрузкой и SLA-мониторинг. Ожидается длительность в формате Go duration (например, 30s, 5m, 1h) либо строка, поддерживаемая компонентом

30s

serviceMonitor.scrapeTimeout

Тайминг scrape-метрик: таймаут. Согласуйте с нагрузкой и SLA-мониторингом. Ожидается длительность в формате Go duration (например, 30s, 5m, 1h) либо строка, поддерживаемая компонентом

25s

serviceMonitor.honorLabels

Сохранение Prometheus пришедших из экспортеров меток при конфликтах (может влиять на кардинальность и правила relabel). Булевый флаг: honor labels; разрешить перезапись

false

serviceMonitor.metricRelabelings

Правило metricRelabel для нормализации и обогащения метрик до инжеста. Используется для снижения кардинальности и унификации меток

[]

serviceMonitor.relabelings

Правила relabel для нормализации и обогащения метрик до инжеста. Используется для снижения кардинальности и унификации меток

[]

metrics - параметры экспонирования метрик#

Параметр

Описание

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

metrics.listen.port

Числовой параметр, влияющий на лимиты/параллелизм/размеры или количество реплик/ресурсов в соответствующей секции

8080

metrics.service.enabled

Булевый параметр, влияющий на включение/поведение соответствующей функции или ресурса

false

metrics.service.port

Числовой параметр, влияющий на лимиты/параллелизм/размеры или количество реплик/ресурсов в соответствующей секции

8080

metrics.service.annotations

Набор вложенных параметров для соответствующей секции. Пустое значение означает использование стандартных настроек чарта чарта

{}

grafanaDashboard - создание Grafana dashboard#

Параметр

Описание

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

grafanaDashboard.enabled

Создание ConfigMap с панелями Grafana. Включите, если используется sidecar Grafana, который подхватывает панели из ConfigMap. Булевый флаг: создать панель; не создавать

false

grafanaDashboard.sidecarLabel

Ключ метки, по которому sidecar Grafana определяет ConfigMap с панелями. Должен совпадать с конфигурацией sidecar

grafana_dashboard

grafanaDashboard.sidecarLabelValue

Значение метки, по которому sidecar Grafana определяет ConfigMap с панелями. Должен совпадать с конфигурацией sidecar

1

grafanaDashboard.annotations

Аннотации для ConfigMap с панелью (например, указание папки, контроля доступа или поведения sidecar)

{}

nodeSelector - выбор узлов для размещения pod#

Параметр

Описание и возможные значения

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

nodeSelector

Селектор узлов для размещения pod. Позволяет ограничить узлы для развертывания

{}

tolerations - tolerations для размещения pod#

Параметр

Описание

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

tolerations

tolerations для соответствующего Deployment на корневом уровне (если задан, переопределяет/дополняет глобальный)

[]

topologySpreadConstraints - топологические ограничения распределения pod#

Параметр

Описание

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

topologySpreadConstraints

Ограничения для равномерного распределения pod по топологиям (зоны, узлы и т.д.) для соответствующего Deployment на корневом уровне (если задан, переопределяет/дополняет глобальный)

[]

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

Параметр

Описание и возможные значения

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

affinity

Правила привязки для размещения pod

{}

priorityClassName - класс приоритета для pod#

Параметр

Описание

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

priorityClassName

Имя PriorityClass для pod. Используется для задания приоритета вытеснения и планирования в условиях дефицита ресурсов

""

podDisruptionBudget - настройки доступности pod при disruption#

Параметр

Описание

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

podDisruptionBudget.enabled

Создание PodDisruptionBudget для сохранения доступности pod при добровольных disruption (drain/upgrade)

false

podDisruptionBudget.minAvailable

Минимальное количество/доля доступных pod при disruption. Настройте с учетом replicaCount и требований HA

1

podDisruptionBudget.nameOverride

Переопределение автоматически генерируемого имени PodDisruptionBudget Helm-релиза (нужно для интеграции с существующими naming conventions)

Не определено

hostNetwork - запуск на hostNetwork#

Параметр

Описание

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

hostNetwork

Запуск pod оператора в hostNetwork. Может потребоваться в специфических сетевых условиях, но усложняет безопасность и порты. Булевый флаг: использовать hostNetwork; использовать pod network

false

webhook - настройка validating webhook и его сертификатов#

Параметр

Описание

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

webhook.annotations

Набор вложенных параметров для соответствующей секции. Пустое значение означает использование стандартных настроек чарта чарта

{}

webhook.create

Булевый параметр, влияющий на включение/поведение соответствующей функции или ресурса

true

webhook.certCheckInterval

Строковая настройка времени/интервала в формате, поддерживаемом компонентом. Ожидается длительность в формате Go duration (например, 30s, 5m, 1h) либо строка, поддерживаемая компонентом

5m

webhook.lookaheadInterval

Строковая настройка времени/интервала в формате, поддерживаемом компонентом. Ожидается длительность в формате Go duration (например, 30s, 5m, 1h) либо строка, поддерживаемая компонентом

""

webhook.replicaCount

Числовой параметр, влияющий на лимиты/параллелизм/размеры или количество реплик/ресурсов в соответствующей секции

1

webhook.log.level

Строковый параметр для конфигурации соответствующей секции; ожидаемый формат зависит от конкретной настройки (имя, путь, режим, класс, и т.п.)

info

webhook.log.timeEncoding

Строковый параметр для конфигурации соответствующей секции; ожидаемый формат зависит от конкретной настройки (имя, путь, режим, класс, и т.п.)

epoch

webhook.revisionHistoryLimit

Числовой параметр, влияющий на лимиты/параллелизм/размеры или количество реплик/ресурсов в соответствующей секции

10

webhook.certDir

Строковый параметр для конфигурации соответствующей секции; ожидаемый формат зависит от конкретной настройки (имя, путь, режим, класс, и т.п.)

/tmp/certs

webhook.failurePolicy

Строковый параметр для конфигурации соответствующей секции; ожидаемый формат зависит от конкретной настройки (имя, путь, режим, класс, и т.п.)

Fail

webhook.hostNetwork

Булевый параметр, влияющий на включение/поведение соответствующей функции или ресурса

false

webhook.image.repository

Шаблон/строка полного имени контейнерного образа (включая registry/repository), который будет использован для соответствующего Deployment

{{ .Values.global.image.registry }}/{{ .Values.global.image.repository }}/{{ .Values.global.dappVersion }}/dapp-external-secrets/dev/external-secrets

webhook.image.pullPolicy

Политика скачивания образа Kubernetes (IfNotPresent/Always/Never) — влияет на поведение при обновлениях и на кластеры без доступа в интернет. Возможные значения: IfNotPresent, Always, Never

IfNotPresent

webhook.image.tag

Тег образа. Обычно фиксируется для воспроизводимости, либо наследуется от appVersion чарта

v0.19.2-master

webhook.image.flavour

Вариант (flavour) образа в рамках одного тега (например, distroless/ubi), если поставщик образов публикует такие сборки

""

webhook.imagePullSecrets

Список секретов типа docker-registry, которые будут добавлены в спецификацию pod для аутентификации при pull образов из приватного реестра

[]

webhook.nameOverride

Переопределяет значение nameOverride генерации имен/пространств имен Helm-релиза (нужно для интеграции с существующими naming conventions)

""

webhook.fullnameOverride

Переопределяет значение nameOverride генерации имен/пространств имен Helm-релиза (нужно для интеграции с существующими naming conventions)

""

webhook.port

Числовой параметр, влияющий на лимиты/параллелизм/размеры или количество реплик/ресурсов в соответствующей секции

10250

webhook.rbac.create

Создание RBAC-ресурсов, необходимых webhook-компоненту

true

webhook.serviceAccount.create

Создать отдельный ServiceAccount для webhook pod

true

webhook.serviceAccount.automount

Булевый параметр, влияющий на включение/поведение соответствующей функции или ресурса

true

webhook.serviceAccount.annotations

Набор вложенных параметров для соответствующей секции. Пустое значение означает использование стандартных настроек чарта чарта

{}

webhook.serviceAccount.extraLabels

Набор вложенных параметров для соответствующей секции. Пустое значение означает использование стандартных настроек чарта чарта

{}

webhook.serviceAccount.name

Строковый параметр для конфигурации соответствующей секции; ожидаемый формат зависит от конкретной настройки (имя, путь, режим, класс, и т.п.)

""

webhook.nodeSelector

nodeSelector для соответствующего Deployment на корневом уровне (если задан, переопределяет/дополняет глобальный)

{}

webhook.certManager.enabled

Переключает выпуск/ротацию TLS-сертификата webhook на Cert-manager. При включении встроенная генерация секретов отключается. Булевый флаг: использовать cert-manager; использовать встроенный механизм

false

webhook.certManager.addInjectorAnnotations

Добавляет аннотации для CA Injector Cert-manager, чтобы автоматически инжектировать CA в webhook/CRD и избежать ручного управления CA

true

webhook.certManager.cert.create

Булевый параметр, влияющий на включение/поведение соответствующей функции или ресурса

true

webhook.certManager.cert.issuerRef.group

Строковый параметр для конфигурации соответствующей секции; ожидаемый формат зависит от конкретной настройки (имя, путь, режим, класс, и т.п.)

cert-manager.io

webhook.certManager.cert.issuerRef.kind

Строковый параметр для конфигурации соответствующей секции; ожидаемый формат зависит от конкретной настройки (имя, путь, режим, класс, и т.п.)

Issuer

webhook.certManager.cert.issuerRef.name

Строковый параметр для конфигурации соответствующей секции; ожидаемый формат зависит от конкретной настройки (имя, путь, режим, класс, и т.п.)

my-issuer

webhook.certManager.cert.duration

Строковая настройка времени/интервала в формате, поддерживаемом компонентом. Ожидается длительность в формате Go duration (например, 30s, 5m, 1h) либо строка, поддерживаемая компонентом

8760h

webhook.certManager.cert.revisionHistoryLimit

Числовой параметр, влияющий на лимиты/параллелизм/размеры или количество реплик/ресурсов в соответствующей секции

0

webhook.certManager.cert.renewBefore

Строковый параметр для конфигурации соответствующей секции; ожидаемый формат зависит от конкретной настройки (имя, путь, режим, класс, и т.п.)

""

webhook.certManager.cert.annotations

Набор вложенных параметров для соответствующей секции. Пустое значение означает использование стандартных настроек чарта чарта

{}

webhook.tolerations

tolerations для соответствующего Deployment на корневом уровне (если задан, переопределяет/дополняет глобальный)

[]

webhook.topologySpreadConstraints

topologySpreadConstraints для соответствующего Deployment на корневом уровне (если задан, переопределяет/дополняет глобальный)

[]

webhook.affinity

affinity/anti-affinity для соответствующего Deployment на корневом уровне (если задан, переопределяет/дополняет глобальный)

{}

webhook.strategy

Стратегия обновления Deployment (RollingUpdate/Recreate и параметры), влияющая на доступность и скорость обновлений

{}

webhook.priorityClassName

Строковый параметр для конфигурации соответствующей секции; ожидаемый формат зависит от конкретной настройки (имя, путь, режим, класс, и т.п.)

""

webhook.podDisruptionBudget.enabled

Создать PDB для webhook, чтобы избежать одновременного вывода всех реплик при drain/upgrade

false

webhook.podDisruptionBudget.minAvailable

Числовой параметр, влияющий на лимиты/параллелизм/размеры или количество реплик/ресурсов в соответствующей секции

1

webhook.podDisruptionBudget.nameOverride

Переопределяет значение nameOverride генерации имен/пространств имен Helm-релиза (нужно для интеграции с существующими naming conventions)

""

webhook.metrics.listen.port

Числовой параметр, влияющий на лимиты/параллелизм/размеры или количество реплик/ресурсов в соответствующей секции

8080

webhook.metrics.service.enabled

Булевый параметр, влияющий на включение/поведение соответствующей функции или ресурса

false

webhook.metrics.service.port

Числовой параметр, влияющий на лимиты/параллелизм/размеры или количество реплик/ресурсов в соответствующей секции

8080

webhook.metrics.service.annotations

Набор вложенных параметров для соответствующей секции. Пустое значение означает использование стандартных настроек чарта чарта

{}

webhook.readinessProbe.address

Адрес для readiness probe, обычно IP или hostname. Если пусто, то используется IP контейнера

""

webhook.readinessProbe.port

Порт readiness probe (используется Kubelet для проверки готовности webhook pod)

8081

webhook.extraEnv

Дополнительные переменные окружения для контейнера. Используется для тонкой настройки поведения/провайдеров без модификации образа

[]

webhook.extraArgs

Дополнительные аргументы командной строки для контейнера. Применяется для экспериментальных флагов или переопределения стандартных настроек чарта

{}

webhook.extraInitContainers

Дополнительные initContainers, выполняемые до основного контейнера (например, подготовка файлов, ожидание зависимостей, миграции)

[]

webhook.extraVolumes

Дополнительные тома в спецификации pod (ConfigMap/Secret/emptyDir и др.) для предоставления файлов/сертификатов/конфигураций контейнеров

[]

webhook.extraVolumeMounts

Дополнительные монтирования для подключения томов в контейнер (пути/режимы/readonly)

[]

webhook.secretAnnotations

Аннотации для Secret с TLS-материалами webhook (например, для политики бекапа или исключений сканеров)

{}

webhook.deploymentAnnotations

Аннотации на Deployment (например, для Argo CD sync waves, политики рестартов, аудит/ownership)

{}

webhook.podAnnotations

Аннотации на Pod (например, для service mesh injection, политики мониторинга, checksum конфигураций для авто-рестарта)

{}

webhook.podLabels

Дополнительные метки для pod, которые облегчают селекторы, политики и наблюдаемость

{}

webhook.podSecurityContext.enabled

Булевый параметр, влияющий на включение/поведение соответствующей функции или ресурса

true

webhook.securityContext.allowPrivilegeEscalation

Запрещает эскалацию привилегий внутри контейнера (setuid, file capabilities), снижая риск компрометации. Булевый флаг: разрешить эскалацию; запретить эскалацию

false

webhook.securityContext.capabilities.drop

Список элементов конфигурации; структура элементов зависит от конкретного параметра (см. документацию чарта/компонента)

- ALL

webhook.securityContext.enabled

Булевый параметр, влияющий на включение/поведение соответствующей функции или ресурса

true

webhook.securityContext.readOnlyRootFilesystem

Монтирует корневую ФС контейнера только для чтения. Улучшает безопасность, но требует выноса записей в writable volumes. Булевый флаг: rootfs read-only; rootfs writable

true

webhook.securityContext.runAsNonRoot

Требует запуск процесса не от root. Совместно с runAsUser обеспечивает выполнение в непривилегированном контексте. Булевый флаг: требовать NonRoot; разрешить root

true

webhook.securityContext.runAsUser

UID, под которым будет запущен процесс в контейнере. Должен соответствовать правам на смонтированные тома и требованиям платформы

1000

webhook.securityContext.seccompProfile.type

Строковый параметр для конфигурации соответствующей секции; ожидаемый формат зависит от конкретной настройки (имя, путь, режим, класс, и т.п.)

RuntimeDefault

webhook.resources

Набор вложенных параметров для соответствующей секции. Пустое значение означает использование стандартных настроек чарта чарта

{}

webhook.service.enabled

Управление Service, через который API-сервер достигает webhook. Если отключено, Service должен существовать заранее

true

webhook.service.annotations

Набор вложенных параметров для соответствующей секции. Пустое значение означает использование стандартных настроек чарта чарта

{}

webhook.service.labels

Набор вложенных параметров для соответствующей секции. Пустое значение означает использование стандартных настроек чарта чарта

{}

webhook.service.type

Тип service для webhook. Возможные значения: ClusterIP, NodePort, LoadBalancer

ClusterIP

webhook.service.loadBalancerIP

Статический IP для Service типа LoadBalancer (если провайдер балансировщика поддерживает фиксирование IP)

""

certController - настройка контроллера сертификатов#

Параметр

Описание

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

certController.create

Булевый параметр, влияющий на включение/поведение соответствующей функции или ресурса

true

certController.requeueInterval

Строковая настройка времени/интервала в формате, поддерживаемом компонентом. Ожидается длительность в формате Go duration (например, 30s, 5m, 1h) либо строка, поддерживаемая компонентом

5m

certController.replicaCount

Числовой параметр, влияющий на лимиты/параллелизм/размеры или количество реплик/ресурсов в соответствующей секции

1

certController.log.level

Строковый параметр для конфигурации соответствующей секции; ожидаемый формат зависит от конкретной настройки (имя, путь, режим, класс, и т.п.)

info

certController.log.timeEncoding

Строковый параметр для конфигурации соответствующей секции; ожидаемый формат зависит от конкретной настройки (имя, путь, режим, класс, и т.п.)

epoch

certController.revisionHistoryLimit

Числовой параметр, влияющий на лимиты/параллелизм/размеры или количество реплик/ресурсов в соответствующей секции

10

certController.image.repository

Шаблон/строка полного имени контейнерного образа (включая registry/repository), который будет использован для соответствующего Deployment

{{ .Values.global.image.registry }}/{{ .Values.global.image.repository }}/{{ .Values.global.dappVersion }}/dapp-external-secrets/dev/external-secrets

certController.image.pullPolicy

Политика скачивания образа Kubernetes (IfNotPresent/Always/Never) — влияет на поведение при обновлениях и на кластеры без доступа в интернет. Возможные значения: IfNotPresent, Always, Never

IfNotPresent

certController.image.tag

Тег образа. Обычно фиксируется для воспроизводимости, либо наследуется от appVersion чарта

v0.19.2-master

certController.image.flavour

Вариант (flavour) образа в рамках одного тега (например, distroless/ubi), если поставщик образов публикует такие сборки

""

certController.imagePullSecrets

Список секретов типа docker-registry, которые будут добавлены в PodSpec для аутентификации при pull образов из приватного реестра

[]

certController.nameOverride

Переопределение значения имен Helm-релиза (нужно для интеграции с существующими naming conventions)

""

certController.fullnameOverride

Переопределение значения полных имен Helm-релиза (нужно для интеграции с существующими naming conventions)

""

certController.rbac.create

Булевый параметр, влияющий на включение/поведение соответствующей функции или ресурса

true

certController.serviceAccount.create

Булевый параметр, влияющий на включение/поведение соответствующей функции или ресурса

true

certController.serviceAccount.automount

Булевый параметр, влияющий на включение/поведение соответствующей функции или ресурса

true

certController.serviceAccount.annotations

Набор вложенных параметров для соответствующей секции. Пустое значение означает использование стандартных настроек чарта чарта

{}

certController.serviceAccount.extraLabels

Набор вложенных параметров для соответствующей секции. Пустое значение означает использование стандартных настроек чарта чарта

{}

certController.serviceAccount.name

Строковый параметр для конфигурации соответствующей секции; ожидаемый формат зависит от конкретной настройки (имя, путь, режим, класс, и т.п.)

""

certController.nodeSelector

nodeSelector для соответствующего Deployment на корневом уровне (если задан, переопределяет/дополняет глобальный)

{}

certController.tolerations

tolerations для соответствующего Deployment на корневом уровне (если задан, переопределяет/дополняет глобальный)

[]

certController.topologySpreadConstraints

topologySpreadConstraints для соответствующего Deployment на корневом уровне (если задан, переопределяет/дополняет глобальный)

[]

certController.affinity

affinity/anti-affinity для соответствующего Deployment на корневом уровне (если задан, переопределяет/дополняет глобальный)

{}

certController.strategy

Стратегия обновления Deployment (RollingUpdate/Recreate и параметры), влияющая на доступность и скорость обновлений

{}

certController.hostNetwork

Булевый параметр, влияющий на включение/поведение соответствующей функции или ресурса

false

certController.priorityClassName

Строковый параметр для конфигурации соответствующей секции; ожидаемый формат зависит от конкретной настройки (имя, путь, режим, класс, и т.п.)

""

certController.podDisruptionBudget.enabled

Булевый параметр, влияющий на включение/поведение соответствующей функции или ресурса

false

certController.podDisruptionBudget.minAvailable

Числовой параметр, влияющий на лимиты/параллелизм/размеры или количество реплик/ресурсов в соответствующей секции

1

certController.podDisruptionBudget.nameOverride

Переопределение значения имен Helm-релиза (нужно для интеграции с существующими naming conventions)

""

certController.metrics.listen.port

Числовой параметр, влияющий на лимиты/параллелизм/размеры или количество реплик/ресурсов в соответствующей секции

8080

certController.metrics.service.enabled

Булевый параметр, влияющий на включение/поведение соответствующей функции или ресурса

false

certController.metrics.service.port

Числовой параметр, влияющий на лимиты/параллелизм/размеры или количество реплик/ресурсов в соответствующей секции

8080

certController.metrics.service.annotations

Набор вложенных параметров для соответствующей секции. Пустое значение означает использование стандартных настроек чарта чарта

{}

certController.readinessProbe.address

Строковый параметр для конфигурации соответствующей секции; ожидаемый формат зависит от конкретной настройки (имя, путь, режим, класс, и т.п.)

""

certController.readinessProbe.port

Числовой параметр, влияющий на лимиты/параллелизм/размеры или количество реплик/ресурсов в соответствующей секции

8081

certController.extraEnv

Дополнительные переменные окружения для контейнера. Используется для тонкой настройки поведения/провайдеров без модификации образа

[]

certController.extraArgs

Дополнительные аргументы командной строки для контейнера. Применяется для экспериментальных флагов или переопределения стандартных настроек чарта

{}

certController.extraInitContainers

Дополнительные initContainers, выполняемые до основного контейнера (например, подготовка файлов, ожидание зависимостей, миграции)

[]

certController.extraVolumes

Дополнительные тома в PodSpec (ConfigMap/Secret/emptyDir и др.) для предоставления файлов/сертификатов/конфигураций контейнеру

[]

certController.extraVolumeMounts

Дополнительные монтирования для подключения томов в контейнер (пути/режимы/readonly)

[]

certController.deploymentAnnotations

Аннотации на Deployment (например, для Argo CD sync waves, политики рестартов, аудит/ownership)

{}

certController.podAnnotations

Аннотации на pod (например, для service mesh injection, политики мониторинга, checksum конфигураций для авто-рестарта)

{}

certController.podLabels

Дополнительные метки для pod, которые облегчают селекторы, политики и наблюдаемость

{}

certController.podSecurityContext.enabled

Булевый параметр, влияющий на включение/поведение соответствующей функции или ресурса

true

certController.securityContext.allowPrivilegeEscalation

Запрет эскалации привилегий внутри контейнера (setuid, file capabilities), снижает риск компрометации. Булевый флаг: разрешить эскалацию; запретить эскалацию

false

certController.securityContext.capabilities.drop

Список элементов конфигурации; структура элементов зависит от конкретного параметра (см. документацию чарта/компонента)

- ALL

certController.securityContext.enabled

Булевый параметр, влияющий на включение/поведение соответствующей функции или ресурса

true

certController.securityContext.readOnlyRootFilesystem

Монтирование корневой ФС контейнера только для чтения. Улучшает безопасность, но требует выноса записей в writable-тома. Булевый флаг: rootfs read-only; rootfs writable

true

certController.securityContext.runAsNonRoot

Требование запуска процесса не от root. Совместно с runAsUser обеспечивает выполнение в непривилегированном контексте. Булевый флаг: требовать NonRoot; разрешить root

true

certController.securityContext.runAsUser

UID, под которым будет запущен процесс в контейнере. Должен соответствовать правам на смонтированные тома и требованиям платформы

1000

certController.securityContext.seccompProfile.type

Строковый параметр для конфигурации соответствующей секции; ожидаемый формат зависит от конкретной настройки (имя, путь, режим, класс, и т.п.)

RuntimeDefault

certController.resources

Набор вложенных параметров для соответствующей секции. Пустое значение означает использование стандартных настроек чарта чарта

{}

dnsPolicy - политика разрешения DNS для pod#

Параметр

Описание

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

dnsPolicy

Политика разрешения DNS: ClusterFirst (использовать DNS кластера), Default (DNS узла), None (без DNS), ClusterFirstWithHostNet (DNS кластера при hostNetwork=true). Влияeт на выполнение DNS и совместимость с hostNetwork

ClusterFirst

dnsConfig - дополнительная конфигурация DNS для pod#

Параметр

Описание

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

dnsConfig

Спецификации pod (spec.dnsConfig), позволяющее пользователям настраивать параметры DNS-resolver (файла /etc/resolv.conf) внутри контейнеров. Поле позволяет переопределить настройки по умолчанию, добавляя собственные DNS-серверы (nameservers), пути поиска доменов (searches) и настройки опций (например, ndots)

{}

podSpecExtra - дополнительные поля PodSpec#

Параметр

Описание

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

podSpecExtra

Дополнительные поля для Spec pod

{}