Dex#

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

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

Основные задачи и возможности
  • Поддержка OIDC (OpenID Connect):

    Выдает ID-токены, которые могут использоваться Kubernetes API Server для аутентификации пользователей.

  • Интеграция с внешними провайдерами:

    Может подключаться к:

    • LDAP/Active Directory;

    • GitHub;

    • GitLab;

    • Google;

    • SAML-провайдерам;

    • Внутренним сервисам OAuth2.

  • Многофакторная аутентификация (MFA):

    Поддерживает MFA через поддерживаемые провайдеры.

  • Работа с группами пользователей:

    Передает информацию о принадлежности пользователей к группам, что позволяет управлять правами через Kubernetes RoleBinding/ClusterRoleBinding.

  • Легкая интеграция с DropApp:

    Настройка выполняется через флаги Kube-apiserver (--oidc-\*), без необходимости изменения клиентских инструментов (Kubectl и т.д.).

Примечание

По умолчанию Dex интегрирован со всеми инструментами DropApp, имеющими UI: Console, Grafana, Argocd, Argo-workflow.

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

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

replicaCount - количество реплик для запуска#

Параметр

Описание

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

replicaCount

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

1

commonLabels - общие метки#

Параметр

Описание

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

commonLabels

Метки для применения ко всем ресурсам и селекторам

{}

image - настройки Docker образа#

Параметр

Описание

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

image.repository

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

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

image.pullPolicy

Политика загрузки образа для обновления существующих образов на узле

IfNotPresent

image.tag

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

"v2.42.1-master"

imagePullSecrets - секреты для загрузки образов#

Параметр

Описание

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

imagePullSecrets

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

[]

namespaceOverride - переопределение namespace#

Параметр

Описание

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

namespaceOverride

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

""

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

Параметр

Описание

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

nameOverride

Имя вместо имени чарта для меток app

""

fullnameOverride - полное переопределение имени#

Параметр

Описание

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

fullnameOverride

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

""

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

Параметр

Описание

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

hostAliases

Список хостов и IP-адресов для внедрения в файл hosts pod

[]

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

Параметр

Описание

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

https.enabled

Включить HTTPS endpoint

false

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

Параметр

Описание

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

grpc.enabled

Включить gRPC endpoint для взаимодействия API

false

configSecret - настройки секрета конфигурации#

Параметр

Описание

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

configSecret.create

Включить создание секрета из значений, переданных в config

true

configSecret.name

Имя секрета для монтирования в качестве конфигурации в pod

""

config - конфигурация приложения#

Параметр

Описание

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

config.connectors

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

[]

config.oauth2.skipApprovalScreen

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

true

config.issuer

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

'https://auth.{{ .Values.global.publicDomain | default "dapp.test" }}'

config.logger.level

Уровень логирования (debug, info, warn, error)

"debug"

config.logger.format

Формат логов (text или json)

"text"

config.staticClients

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

[массив клиентов]

config.enablePasswordDB

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

true

config.storage.config.inCluster

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

true

config.storage.config.type

Тип хранилища для данных Dex

kubernetes

config.web.tlsCert

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

/etc/ingress-tls/tls.crt

config.web.tlsKey

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

/etc/ingress-tls/tls.key

config.issuer

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

dex

config.expiry.signingKeys

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

"6h"

config.expiry.idTokens

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

"8h"

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

Параметр

Описание

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

volumes

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

[]

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

Параметр

Описание

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

volumeMounts

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

[]

envFrom - переменные окружения из секретов или ConfigMap#

Параметр

Описание

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

envFrom

Дополнительные переменные окружения, смонтированные из секретов или configmap

[]

env - переменные окружения#

Параметр

Описание

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

env

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

{}

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

Параметр

Описание

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

envVars

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

[]

configMap - настройки ConfigMap#

Параметр

Описание

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

configMap.create

Создать ConfigMap

false

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

Параметр

Описание

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

serviceAccount.create

Включить создание сервисного аккаунта

true

serviceAccount.annotations

Аннотации для добавления к сервисному аккаунту

{}

serviceAccount.name

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

""

rbac - управление доступом на основе ролей#

Параметр

Описание

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

rbac.create

Указывает, должны ли быть созданы ресурсы RBAC

true

rbac.createClusterScoped

Указывает, какие ресурсы RBAC должны быть созданы на уровне кластера

true

deploymentAnnotations - аннотации для развертывания#

Параметр

Описание

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

deploymentAnnotations

Аннотации для добавления к развертыванию

{}

deploymentLabels - метки для развертывания#

Параметр

Описание

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

deploymentLabels

Метки для добавления к развертыванию

{}

podAnnotations - аннотации для pods#

Параметр

Описание

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

podAnnotations

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

{}

podLabels - метки для pods#

Параметр

Описание

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

podLabels

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

{}

podDisruptionBudget - бюджет прерываний pods#

Параметр

Описание

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

podDisruptionBudget.enabled

Включить бюджет прерываний pods для обработки сбоев

false

podDisruptionBudget.minAvailable

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

nil

podDisruptionBudget.maxUnavailable

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

nil

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

Параметр

Описание

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

priorityClassName

Указать имя класса приоритета для установки приоритета pods

""

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

Параметр

Описание

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

podSecurityContext

Контекст безопасности pods для настройки параметров безопасности

{}

podSecurityContext.runAsUser

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

10001

podSecurityContext.runAsGroup

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

10001

podSecurityContext.runAsNonRoot

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

true

podSecurityContext.seccompProfile.type

Тип профиля seccomp

RuntimeDefault

revisionHistoryLimit - лимит истории ревизий#

Параметр

Описание

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

revisionHistoryLimit

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

10

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

Параметр

Описание

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

securityContext

Контекст безопасности контейнера для настройки параметров безопасности контейнера

{}

securityContext.capabilities.drop

Список возможностей для удаления

[ALL]

securityContext.runAsNonRoot

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

true

securityContext.runAsGroup

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

10001

securityContext.runAsUser

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

10001

securityContext.allowPrivilegeEscalation

Разрешить повышение привилегий

false

service - настройки сервиса Kubernetes#

Параметр

Описание

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

service.annotations

Аннотации для добавления к сервису

{}

service.type

Тип сервиса Kubernetes (ClusterIP, NodePort, LoadBalancer)

"ClusterIP"

service.clusterIP

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

""

service.ports.http.port

Порт сервиса HTTP

5556

service.ports.http.nodePort

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

nil

service.ports.https.port

Порт сервиса HTTPS

5554

service.ports.https.nodePort

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

nil

service.ports.grpc.port

Порт сервиса gRPC

5557

service.ports.grpc.nodePort

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

nil

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

Параметр

Описание

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

ingress.enabled

Включить Ingress для внешнего доступа

true

ingress.className

Имя класса Ingress

"nginx"

ingress.annotations

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

{}

ingress.hosts

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

[массив хостов]

ingress.tls

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

[массив TLS]

serviceMonitor - настройки мониторинга Prometheus#

Параметр

Описание

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

serviceMonitor.enabled

Включить ServiceMonitor Prometheus

false

serviceMonitor.namespace

Namespace для развертывания ServiceMonitor

""

serviceMonitor.interval

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

nil

serviceMonitor.scrapeTimeout

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

nil

serviceMonitor.labels

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

{}

serviceMonitor.annotations

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

{}

serviceMonitor.scheme

HTTP-схема для сбора метрик

""

serviceMonitor.path

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

"/metrics"

serviceMonitor.tlsConfig

Конфигурация TLS для сбора метрик

{}

serviceMonitor.bearerTokenFile

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

nil

serviceMonitor.honorLabels

Выбор меток метрик при коллизиях с целевыми метками

false

serviceMonitor.metricRelabelings

Конфигурации метрик relabel перед приемом

[]

serviceMonitor.relabelings

Конфигурации relabel для применения к образцам

[]

resources - ресурсы контейнера#

Параметр

Описание

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

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 - селектор узлов#

Параметр

Описание

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

nodeSelector

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

{}

tolerations - tolerations для узлов с taint#

Параметр

Описание

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

tolerations

Tolerations для размещения на узлах с taint

[]

affinity - правила привязки#

Параметр

Описание

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

affinity

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

{}

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

Параметр

Описание

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

topologySpreadConstraints

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

[]

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

Параметр

Описание

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

strategy

Конфигурация стратегии развертывания (RollingUpdate, Recreate)

{}

networkPolicy - сетевые политики#

Параметр

Описание

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

networkPolicy.enabled

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

false

networkPolicy.egressRules

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

[]