Dex#

Dex — провайдер OpenID Connect (OIDC) для централизованной аутентификации и интеграции с внешними системами удостоверений в кластерах Dropapp. Dex выступает промежуточным сервисом аутентификации для использования DropApp существующих систем управления пользователями (например, LDAP, Active Directory) при проверке подлинности пользователей в кластере.

Dex не управляет пользователями напрямую, а делегирует аутентификацию другим поставщикам удостоверений.

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

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

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

Параметр

Описание

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

replicaCount

Количество реплик pod инструмента

1

commonLabels – общие метки для всех ресурсов#

Параметр

Описание

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

commonLabels

Метки для применения ко всем ресурсам и селекторам.
Пример конфигурации:

team_name: dev

{}

image – параметры контейнерного образа#

Параметр

Описание

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

image.repository

Имя репозитория образа для загрузки контейнера

'{{ .Values.global.image.registry }}/{{ .Values.global.image.repository }}/{{ .Values.global.dappVersion }}/dapp-dex/dex'

image.pullPolicy

Политика загрузки образа для обновления существующих образов на узле.
Возможные значения: Always, IfNotPresent, Never

IfNotPresent

image.tag

Тег образа контейнера

v2.45.1

image.digest

Дайджест (SHA-хеш) образа контейнера. При указании непустого значения образ загружается по дайджесту, независимо от тега

""

imagePullSecrets – Secret для загрузки образов#

Параметр

Описание

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

imagePullSecrets

Список Secret для загрузки образа контейнера из приватных реестров

[]

namespaceOverride - переопределение пространства имен#

Параметр

Описание

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

namespaceOverride

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

""

nameOverride – переопределение имени чарта#

Параметр

Описание

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

nameOverride

Переопределение базового имени ресурсов чарта для генерации имен

""

fullnameOverride – полное переопределение имени чарта#

Параметр

Описание

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

fullnameOverride

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

""

hostAliases — псевдонимы хостов#

Параметр

Описание

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

hostAliases

Список псевдонимов хостов для добавления в /etc/hosts

[]

https – настройки HTTPS#

Параметр

Описание

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

https.enabled

Включение HTTPS

false

grpc – настройки gRPC#

Параметр

Описание

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

grpc.enabled

Включить эндпоинт gRPC

false

configSecret – настройки Secret конфигурации#

Параметр

Описание

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

configSecret.create

Включить создание Secret из значений, переданных в config. Если установлено значение false, name должен указывать на существующий Secret

true

configSecret.name

Имя Secret для монтирования в качестве конфигурации в pod. Если не задано и create: true, имя генерируется через шаблон fullname. Должен указывать на Secret, содержащий как минимум ключ config.yaml

""

config – основная конфигурация инструмента#

Параметр

Описание

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

config.oauth2.skipApprovalScreen

Пропуск экрана подтверждения OAuth2

true

config.oauth2.responseTypes

Поддерживаемые типы ответов OAuth2

- code
- token
- id_token

config.oauth2.passwordConnector

Коннектор для аутентификации по логину и паролю

ldap

config.connectors

Список коннекторов к внешним провайдерам идентификации

[]

config.issuer

URL издателя OIDC-токенов

'https://auth.{{ include "ingress.domain" . }}'

config.logger.level

Уровень логирования

debug

config.logger.format

Формат логов.
Возможные значения: json, text

text

config.staticClients

Список статических клиентов OAuth2

- id: dapp
  name: dapp
  redirectURIs:
    - 'https://console.{{ include "ingress.domain" . }}/auth/callback'
    - http://127.0.0.1:9000/auth/callback
    - http://localhost:9000/auth/callback
    - http://localhost:8000
    - http://localhost:18000
    - 'https://loginapp.{{ include "ingress.domain" . }}/callback'
  # Значение secret по умолчанию скрыто и подставляется автоматически
  secret: `<base64-secret-for-oidc-authentication>`
- id: grafana
  name: grafana
  redirectURIs:
    - 'https://grafana.{{ include "ingress.domain" . }}/login/generic_oauth'
  # Значение secret по умолчанию скрыто и подставляется автоматически
  secret: `<base64-secret-for-grafana>`
- id: harbor
  name: harbor
  redirectURIs:
    - 'https://harbor.{{ include "ingress.domain" . }}/c/oidc/callback'
  # Значение secret по умолчанию скрыто и подставляется автоматически
  secret: `<base64-secret-for-harbor>`
      - id: argo
  name: argo
  redirectURIs:
    - 'https://argocd.{{ include "ingress.domain" . }}/auth/callback'
    - 'https://argowf.{{ include "ingress.domain" . }}/oauth2/callback'
  # Значение secret по умолчанию скрыто и подставляется автоматически
  secret: `<base64-secret-for-argo>`
- id: open-webui
  name: open-webui
  redirectURIs:
    - 'https://open-webui.{{ include "ingress.domain" . }}/oauth/oidc/callback'
  # Значение secret по умолчанию скрыто и подставляется автоматически
  secret: `<base64-secret-for-argo>`

config.enablePasswordDB

Включить локальную базу данных паролей

true

config.storage.config.inCluster

Использовать внутрикластерное хранилище

true

config.storage.type

Тип хранилища

kubernetes

config.web.tlsCert

Путь к TLS-сертификату

/etc/ingress-tls/tls.crt

config.web.tlsKey

Путь к TLS-ключу

/etc/ingress-tls/tls.key

config.web.issuer

Издатель токенов

dex

config.expiry.signingKeys

Срок действия ключей подписи

6h

config.expiry.idTokens

Срок действия ID-токенов

8h

volumes – дополнительные тома (Volume)#

Параметр

Описание

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

volumes

Дополнительные тома (Volume) для pod

[]

volumeMounts – дополнительные точки монтирования томов (VolumeMounts)#

Параметр

Описание

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

volumeMounts

Дополнительные точки монтирования томов (VolumeMount)

[]

envFrom – альтернативные источники переменных окружения#

Параметр

Описание

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

envFrom

Источники переменных окружения (Secret или ConfigMap) для pod

[]

env – параметры переменных окружения контейнера#

Параметр

Описание

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

env

Переменные окружения контейнера

{}

envVars – расширенные переменные окружения#

Параметр

Описание

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

envVars

Переменные окружения с поддержкой всех возможных конфигураций.
Пример конфигурации:

- name: SOME_ENV_VAR
  value: value
- name: SOME_ENV_VAR2
  valueFrom:
    secretKeyRef:
      name: secret-name
      key: secret-key
- name: SOME_ENV_VAR3
  valueFrom:
    configMapKeyRef:
      name: config-map-name
      key: config-map-key

[]

serviceAccount – настройки сервисного аккаунта#

Параметр

Описание

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

serviceAccount.create

Включить создание ServiceAccount

true

serviceAccount.annotations

Аннотации для добавления к ServiceAccount

{}

serviceAccount.name

Имя ServiceAccount для использования. Если не задано и serviceAccount.create: true, имя генерируется через шаблон fullname

""

rbac – настройки RBAC (управление доступом на основе ролей)#

Параметр

Описание

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

rbac.create

Активация автоматического создания ресурсов RBAC

true

rbac.createClusterScoped

Создание ресурсов RBAC на уровне кластера. При отключении параметра оператор создает необходимые ресурсы (ClusterRole, RoleBinding или CRD)

true

deploymentAnnotations – аннотации для Deployment#

Параметр

Описание

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

deploymentAnnotations

Аннотации для добавления к Deployment

{}

deploymentLabels – метки для Deployment#

Параметр

Описание

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

deploymentLabels

Метки для добавления к Deployment

{}

podAnnotations – аннотации для pod#

Параметр

Описание

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

podAnnotations

Аннотации для добавления к pod

{}

podLabels – метки для pod#

Параметр

Описание

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

podLabels

Метки для добавления к pod

{}

podDisruptionBudget – ограничение одновременной недоступности pod#

Параметр

Описание

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

podDisruptionBudget.enabled

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

false

podDisruptionBudget.minAvailable

Количество или процент pod, которые должны оставаться доступными

~

podDisruptionBudget.maxUnavailable

Количество или процент pod, которые могут быть недоступны

~

priorityClassName – имя класса приоритета pod#

Параметр

Описание

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

priorityClassName

Имя PriorityClass для pod

""

podSecurityContext – параметры контекста безопасности pod#

Параметр

Описание

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

podSecurityContext.runAsUser

Пользователь для запуска контейнера

10001

podSecurityContext.runAsGroup

Группа для запуска контейнера

10001

podSecurityContext.runAsNonRoot

Запуск от имени пользователя без административных полномочий

true

podSecurityContext.seccompProfile.type

Тип профиля Seccomp

RuntimeDefault

revisionHistoryLimit – количество сохраняемых ресурсов для отката#

Параметр

Описание

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

revisionHistoryLimit

Количество предыдущих версий ресурса, сохраняемых для отката

10

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

Параметр

Описание

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

securityContext.capabilities.drop

Список возможностей (capabilities), отзываемых у контейнера

- ALL

securityContext.runAsNonRoot

Запуск от имени пользователя без административных полномочий

true

securityContext.runAsGroup

Группа для запуска контейнера

10001

securityContext.runAsUser

Пользователь для запуска контейнера

10001

securityContext.allowPrivilegeEscalation

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

false

service – настройки Service#

Параметр

Описание

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

service.annotations

Аннотации для добавления к Service

{}

service.type

Тип Service Dropapp.
Возможные значения: ClusterIP, LoadBalancer, NodePort

ClusterIP

service.clusterIP

IP-адрес внутреннего кластерного Service

""

service.loadBalancerIP

IP-адрес Service типа LoadBalancer

""

service.ports.http.port

HTTP-порт для Service

5556

service.ports.http.nodePort

HTTP-порт узла (когда применимо)

~

service.ports.https.port

HTTPS-порт для Service

5554

service.ports.https.nodePort

HTTPS-порт узла (когда применимо)

~

service.ports.grpc.port

gRPC-порт для Service

5557

service.ports.grpc.nodePort

gRPC-порт узла (когда применимо)

~

ingress – настройки Ingress для маршрутизации внешнего трафика#

Параметр

Описание

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

ingress.backendProtocol

Протокол (HTTP/HTTPS) взаимодействия Ingress-контроллера с бэкенд-сервисом Dex внутри кластера

http

ingress.enabled

Включить Ingress

true

ingress.className

Имя класса Ingress

"nginx"

ingress.annotations

Аннотации для добавления к Ingress.
Пример конфигурации:

kubernetes.io/ingress.class: nginx
kubernetes.io/tls-acme: "true"

{}

ingress.hosts

Конфигурация хостов Ingress

- host: 'auth.{{ include "ingress.domain" . }}'
  paths:
    - path: /
      pathType: Prefix

ingress.tls

Конфигурация TLS для Ingress

- secretName: ingress-tls
  hosts:
    - 'auth.{{ include "ingress.domain" . }}'

serviceMonitor – параметры ServiceMonitor#

Параметр

Описание

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

serviceMonitor.enabled

Включить ServiceMonitor Prometheus

true

serviceMonitor.namespace

Пространство имен для развертывания ресурса ServiceMonitor. По умолчанию — пространство имен Helm-чарта

""

serviceMonitor.interval

Интервал сбора метрик (длительность)

~

serviceMonitor.scrapeTimeout

Настройка тайм-аута сбора метрик

~

serviceMonitor.labels

Метки для добавления к ServiceMonitor

{}

serviceMonitor.annotations

Аннотации для добавления к ServiceMonitor

{}

serviceMonitor.scheme

HTTP-схема для сбора метрик. Может использоваться с tlsConfig, например при использовании Istio mTLS

""

serviceMonitor.path

HTTP-путь для сбора метрик

/metrics

serviceMonitor.tlsConfig

Конфигурация TLS для сбора метрик. Например, при использовании Istio mTLS

{}

serviceMonitor.bearerTokenFile

Файл bearer-токена для авторизации сбора метрик

~

serviceMonitor.honorLabels

Сохранение исходных метрик, вместо замены метками Prometheus

false

serviceMonitor.metricRelabelings

Правила фильтрации и преобразования меток, применяемые к собранным метрикам.
Пример конфигурации:

- action: keep
  regex: 'kube_(daemonset|deployment|pod|namespace|node|statefulset).+'
  sourceLabels: [__name__]

[]

serviceMonitor.relabelings

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

- sourceLabels: [__meta_kubernetes_pod_node_name]
  separator: ;
  regex: ^(.*)$
  targetLabel: nodename
  replacement: $1
  action: replace

[]

resources – запросы и лимиты ресурсов контейнера#

Параметр

Описание

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

resources.requests.cpu

Запрашиваемые ресурсы CPU для контейнера

50m

resources.requests.memory

Запрашиваемые ресурсы памяти для контейнера

128Mi

resources.limits.cpu

Ограничение ресурсов CPU для контейнера

100m

resources.limits.memory

Ограничение ресурсов памяти для контейнера

128Mi

autoscaling – настройки автомасштабирования#

Параметр

Описание

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

autoscaling.enabled

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

false

autoscaling.minReplicas

Минимальное количество реплик при автоматическом масштабировании

1

autoscaling.maxReplicas

Максимальное количество реплик при автоматическом масштабировании

100

autoscaling.targetCPUUtilizationPercentage

Целевой процент использования CPU

80

nodeSelector – селектор узлов для планирования pod#

Параметр

Описание

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

nodeSelector

Селектор узлов для планирования pod

{}

tolerations – параметры Toleration для pod#

Параметр

Описание

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

tolerations

Toleration для размещения pod на узлах с ограничениями (taints)

[]

affinity – правила привязки (affinity и anti-affinity) pod к узлам#

Параметр

Описание

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

affinity

Настройки правила привязки (affinity и anti-affinity) pod к узлам

{}

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

Параметр

Описание

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

topologySpreadConstraints

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

[]

strategy – стратегия развертывания#

Параметр

Описание

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

strategy

Конфигурация стратегии развертывания.
Пример конфигурации:

rollingUpdate:
  maxUnavailable: 1
type: RollingUpdate

{}

networkPolicy – настройки NetworkPolicy для ограничения сетевого доступа#

Параметр

Описание

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

networkPolicy.enabled

Создание NetworkPolicy для ограничения сетевого доступа

false

networkPolicy.egressRules

Список правил egress-трафика сетевой политики.
Пример конфигурации:

- ports:
    - port: 53
      protocol: UDP
    - port: 53
      protocol: TCP

[]