DexAuthenticator
Scope: Namespaced
При появлении объекта DexAuthenticator
в пространстве имен будут созданы:
- Deployment с OAuth2-Proxy и Redis;
- Сервис (Service), ведущий на OAuth2-Proxy;
- Ingress-ресурс, который принимает запросы по адресу
https://<applicationDomain>/dex-authenticator
и отправляет их в сторону сервиса; - Секреты, необходимые для доступа к Dex.
Внимание. При перезапуске пода с OAuth2-Proxy, с помощью refresh-токена в память Redis будут получены и сохранены актуальные Access Token и ID Token.
Пример:
apiVersion: deckhouse.io/v1
kind: DexAuthenticator
metadata:
name: app-name
namespace: app-namespace
spec:
applicationDomain: app-name.kube.my-domain.com
sendAuthorizationHeader: false
applicationIngressCertificateSecretName: ingress-tls
applicationIngressClassName: nginx
keepUsersLoggedInFor: 720h
allowedGroups:
- everyone
- admins
whitelistSourceRanges:
- 1.1.1.1/32
- 192.168.0.0/24
additionalApplications:
- domain: additional-app-name.kube.my-domain.com
ingressSecretName: ingress-tls
ingressClassName: nginx
signOutURL: "/logout"
whitelistSourceRanges:
- 2.2.2.2/32
- spec
Обязательный параметр
- spec.additionalApplications
Список дополнительных приложений, для которых необходима аутентификация.
- spec.additionalApplications.domain
Обязательный параметр
Домен приложения (для использования в Ingress-ресурсе), запросы на который будут перенаправлены в Dex для аутентификации.
Внимание. Домен не должен содержать HTTP-схему.
Шаблон:
^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$
- spec.additionalApplications.ingressClassName
Обязательный параметр
Название Ingress-класса, которое будет использоваться в Ingress-ресурсе (должно совпадать с названием Ingress-класса для домена приложения).
Шаблон:
^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$
- spec.additionalApplications.ingressSecretName
Имя секрета (Secret) с TLS-сертификатом для домена приложения, который используется в Ingress-ресурсе приложения. Секрет должен обязательно находиться в том же пространстве имен, что и DexAuthenticator.
Шаблон:
^(|[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*)$
- spec.additionalApplications.signOutURL
URL для завершения сеанса аутентификации.
Используется в приложении для направления запросов на “Выход” (завершение сеанса). Для указанного URL будет создан отдельный Ingress-ресурс, запросы на который будут перенаправляться в
dex-authenticator
. - spec.additionalApplications.whitelistSourceRanges
Список адресов в формате CIDR, которым разрешено проходить аутентификацию. Если параметр не указан, аутентификацию разрешено проходить без ограничения по IP-адресу.
- Элемент массива
Шаблон:
^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}/[0-9]{1,2}$
- spec.allowedGroups
Группы, пользователям которых разрешено проходить аутентификацию.
По умолчанию разрешено всем группам.
По умолчанию:
All groups are allowed.
- spec.applicationDomain
Обязательный параметр
Адрес приложения (домен DNS для Ingress-ресурса), для которого необходима аутентификация.
Внимание. Адрес не должен содержать HTTP-схему.
Шаблон:
^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$
Пример:
applicationDomain: my-app.domain.com
- spec.applicationIngressCertificateSecretName
Имя секрета (Secret) с TLS-сертификатом для домена приложения, который используется в Ingress-ресурсе приложения. Секрет должен обязательно находиться в том же пространстве имен, что и DexAuthenticator.
Шаблон:
^(|[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*)$
Пример:
applicationIngressCertificateSecretName: ingress-tls
- spec.applicationIngressClassName
Обязательный параметр
Название Ingress-класса, которое будет использоваться в Ingress-ресурсе (должно совпадать с названием Ingress-класса для домена приложения).
Шаблон:
^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$
Пример:
applicationIngressClassName: nginx
- spec.highAvailability
Включает режим высокой доступности для экземляра dex-authenticator.
При включении этого режима будет развернуто несколько реплик pod’ов для обеспечения отказоустойчивости.
По умолчанию:
false
- spec.keepUsersLoggedInFor
Отвечает за то, как долго пользовательская сессия будет считаться активной, если пользователь бездействует (указывается с суффиксом
s
,m
илиh
).По умолчанию:
"168h"
Пример:
keepUsersLoggedInFor: 24h
- spec.nodeSelector
Определяет nodeSelector для подов
dex-authenticator
.Формат: стандартный список nodeSelector. Поды инстанса унаследуют это поле как есть.
- булевый
Флаг, который отвечает за отправку конечному приложению заголовка
Authorization: Bearer
.Внимание. Включайте, только если приложение умеет обрабатывать такой заголовок.
- spec.signOutURL
URL для завершения сеанса аутентификации.
Используется в приложении для направления запросов на “Выход” (завершение сеанса). Для указанного URL будет создан отдельный Ingress-ресурс, запросы на который будут перенаправляться в
dex-authenticator
. - spec.tolerations
Определяет tolerations для подов
dex-authenticator
.Формат: стандартный список toleration. Поды инстанса унаследуют это поле как есть.
- spec.tolerations.effect
Определяет, какому effect’у taint’а соответствует описываемый toleration. Пустой подразумевает соответствие любому effect.
Допустимые значения:
NoSchedule
,PreferNoSchedule
,NoExecute
- spec.tolerations.key
Определяет, какому ключу (key) taint’a соответствует описываемый toleration. Пустой подразумевает соответствие любому ключу.
Если ключ (key) не указан (пуст),
operator
должен бытьExists
, что подразумевает соответствие любымvalue
иkey
. - spec.tolerations.operator
Определяет отношение ключа (key) к значению (value) — должен ли ключ быть равен (
Equal
) значению или допустимо существование ключа с любым значением.Указание
Exists
равносильно допуску любого значения для value, чтобы под с указанным toleration удовлетворял соответствующему taint.По умолчанию:
"Equal"
Допустимые значения:
Exists
,Equal
- spec.tolerations.tolerationSeconds
Определяет период времени в секундах, в течение которого планировщик должен ждать, прежде чем выгнать (evict) под с узла, если toleration перестал удовлетворять taint’у (справедливо только для effect
NoExecute
, иначе игнорируется).Если не установлено, тогда под не будет выгнан с узла, если toleration перестал удовлетворять taint’у. Если установлен в ноль (или отрицателен), под будет выгнан с узла немедленно, если toleration перестал удовлетворять taint’у..
По умолчанию используется значение «не установлено».
- spec.tolerations.value
Значение, которому должен удовлетворять toleration.
Должно быть пустым, если operator имеет параметр
Exists
.
- spec.whitelistSourceRanges
Список адресов в формате CIDR, которым разрешено проходить аутентификацию. Если параметр не указан, аутентификацию разрешено проходить без ограничения по IP-адресу.
Пример:
whitelistSourceRanges: 192.168.42.0/24
- Элемент массива
Шаблон:
^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}/[0-9]{1,2}$
- spec
Обязательный параметр
- spec.allowedGroups
Группы, пользователям которых разрешено проходить аутентификацию.
По умолчанию разрешено всем группам.
По умолчанию:
All groups are allowed.
- spec.applications
Обязательный параметр
Список приложений, для которых необходима аутентификация.
- spec.applications.domain
Обязательный параметр
Домен приложения (для использования в Ingress-ресурсе), запросы на который будут перенаправлены в Dex для аутентификации.
Внимание. Домен не должен содержать HTTP-схему.
Шаблон:
^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$
- spec.applications.ingressClassName
Обязательный параметр
Название Ingress-класса, которое будет использоваться в Ingress-ресурсе (должно совпадать с названием Ingress-класса для домена приложения).
Шаблон:
^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$
- spec.applications.ingressSecretName
Имя секрета (Secret) с TLS-сертификатом для домена приложения, который используется в Ingress-ресурсе приложения. Секрет должен обязательно находиться в том же пространстве имен, что и DexAuthenticator.
Шаблон:
^(|[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*)$
- spec.applications.signOutURL
URL для завершения сеанса аутентификации.
Используется в приложении для направления запросов на “Выход” (завершение сеанса). Для указанного URL будет создан отдельный Ingress-ресурс, запросы на который будут перенаправляться в
dex-authenticator
. - spec.applications.whitelistSourceRanges
Список адресов в формате CIDR, которым разрешено проходить аутентификацию. Если параметр не указан, аутентификацию разрешено проходить без ограничения по IP-адресу.
- Элемент массива
Шаблон:
^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}/[0-9]{1,2}$
- spec.highAvailability
Enables high availability mode for dex-authenticator.
When this mode is enabled, multiple pod replicas will be deployed to ensure fault tolerance.
По умолчанию:
false
- spec.keepUsersLoggedInFor
Отвечает за то, как долго пользовательская сессия будет считаться активной, если пользователь бездействует (указывается с суффиксом
s
,m
илиh
).По умолчанию:
"168h"
- spec.nodeSelector
Определяет nodeSelector для подов dex-authenticator.
Формат: стандартный список nodeSelector. Поды инстанса унаследуют это поле как есть.
- булевый
Флаг, который отвечает за отправку конечному приложению заголовка
Authorization: Bearer
.Внимание. Включайте, только если приложение умеет обрабатывать такой заголовок.
- spec.tolerations
Определяет tolerations для подов
dex-authenticator
.Формат: стандартный список toleration. Поды инстанса унаследуют это поле как есть.
- spec.tolerations.effect
Определяет, какому effect’у taint’а соответствует описываемый toleration. Пустой подразумевает соответствие любому effect.
Допустимые значения:
NoSchedule
,PreferNoSchedule
,NoExecute
- spec.tolerations.key
Определяет, какому ключу (key) taint’a соответствует описываемый toleration. Пустой подразумевает соответствие любому ключу.
Если ключ (key) не указан (пуст),
operator
должен бытьExists
, что подразумевает соответствие любымvalue
иkey
. - spec.tolerations.operator
Определяет отношение ключа (key) к значению (value) — должен ли ключ быть равен (
Equal
) значению или допустимо существование ключа с любым значением.Указание
Exists
равносильно допуску любого значения для value, чтобы под с указанным toleration удовлетворял соответствующему taint.По умолчанию:
"Equal"
Допустимые значения:
Exists
,Equal
- spec.tolerations.tolerationSeconds
Определяет период времени в секундах, в течение которого планировщик должен ждать, прежде чем выгнать (evict) под с узла, если toleration перестал удовлетворять taint’у (справедливо только для effect
NoExecute
, иначе игнорируется).Если не установлено, тогда под не будет выгнан с узла, если toleration перестал удовлетворять taint’у. Если установлен в ноль (или отрицателен), под будет выгнан с узла немедленно, если toleration перестал удовлетворять taint’у..
По умолчанию используется значение «не установлено».
- spec.tolerations.value
Значение, которому должен удовлетворять toleration.
Должно быть пустым, если operator имеет параметр
Exists
.
Устаревший ресурс. Поддержка ресурса может быть исключена в следующих версиях.
При появлении объекта DexAuthenticator
в пространстве имен будут созданы:
- Deployment с OAuth2-Proxy и Redis;
- Сервис (Service), ведущий на OAuth2-Proxy;
- Ingress-ресурс, который принимает запросы по адресу
https://<applicationDomain>/dex-authenticator
и отправляет их в сторону сервиса; - Секреты, необходимые для доступа к Dex.
Внимание. При перезапуске пода с OAuth2-Proxy, с помощью refresh-токена в память Redis будут получены и сохранены актуальные Access Token и ID Token.
Пример:
apiVersion: deckhouse.io/v1
kind: DexAuthenticator
metadata:
name: app-name
namespace: app-namespace
spec:
applicationDomain: app-name.kube.my-domain.com
sendAuthorizationHeader: false
applicationIngressCertificateSecretName: ingress-tls
applicationIngressClassName: nginx
keepUsersLoggedInFor: 720h
allowedGroups:
- everyone
- admins
whitelistSourceRanges:
- 1.1.1.1/32
- 192.168.0.0/24
additionalApplications:
- domain: additional-app-name.kube.my-domain.com
ingressSecretName: ingress-tls
ingressClassName: nginx
signOutURL: "/logout"
whitelistSourceRanges:
- 2.2.2.2/32
- spec
Обязательный параметр
- spec.additionalApplications
Список дополнительных приложений, для которых необходима аутентификация.
- spec.additionalApplications.domain
Обязательный параметр
Домен приложения (для использования в Ingress-ресурсе), запросы на который будут перенаправлены в Dex для аутентификации.
Внимание. Домен не должен содержать HTTP-схему.
Шаблон:
^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$
- spec.additionalApplications.ingressClassName
Обязательный параметр
Название Ingress-класса, которое будет использоваться в Ingress-ресурсе (должно совпадать с названием Ingress-класса для домена приложения).
Шаблон:
^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$
- spec.additionalApplications.ingressSecretName
Имя секрета (Secret) с TLS-сертификатом для домена приложения, который используется в Ingress-ресурсе приложения. Секрет должен обязательно находиться в том же пространстве имен, что и DexAuthenticator.
Шаблон:
^(|[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*)$
- spec.additionalApplications.signOutURL
URL для завершения сеанса аутентификации.
Используется в приложении для направления запросов на “Выход” (завершение сеанса). Для указанного URL будет создан отдельный Ingress-ресурс, запросы на который будут перенаправляться в
dex-authenticator
. - spec.additionalApplications.whitelistSourceRanges
Список адресов в формате CIDR, которым разрешено проходить аутентификацию. Если параметр не указан, аутентификацию разрешено проходить без ограничения по IP-адресу.
- Элемент массива
Шаблон:
^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}/[0-9]{1,2}$
- spec.allowedGroups
Группы, пользователям которых разрешено проходить аутентификацию.
По умолчанию разрешено всем группам.
По умолчанию:
All groups are allowed.
- spec.applicationDomain
Обязательный параметр
Адрес приложения (домен DNS для Ingress-ресурса), для которого необходима аутентификация.
Внимание. Адрес не должен содержать HTTP-схему.
Шаблон:
^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$
Пример:
applicationDomain: my-app.domain.com
- spec.applicationIngressCertificateSecretName
Имя секрета (Secret) с TLS-сертификатом для домена приложения, который используется в Ingress-ресурсе приложения. Секрет должен обязательно находиться в том же пространстве имен, что и DexAuthenticator.
Шаблон:
^(|[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*)$
Пример:
applicationIngressCertificateSecretName: ingress-tls
- spec.applicationIngressClassName
Обязательный параметр
Название Ingress-класса, которое будет использоваться в Ingress-ресурсе (должно совпадать с названием Ingress-класса для домена приложения).
Шаблон:
^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$
Пример:
applicationIngressClassName: nginx
- spec.highAvailability
Включает режим высокой доступности для экземляра dex-authenticator.
При включении этого режима будет развернуто несколько реплик pod’ов для обеспечения отказоустойчивости.
По умолчанию:
false
- spec.keepUsersLoggedInFor
Отвечает за то, как долго пользовательская сессия будет считаться активной, если пользователь бездействует (указывается с суффиксом
s
,m
илиh
).По умолчанию:
"168h"
Пример:
keepUsersLoggedInFor: 24h
- spec.nodeSelector
Определяет nodeSelector для подов
dex-authenticator
.Формат: стандартный список nodeSelector. Поды инстанса унаследуют это поле как есть.
- булевый
Флаг, который отвечает за отправку конечному приложению заголовка
Authorization: Bearer
.Внимание. Включайте, только если приложение умеет обрабатывать такой заголовок.
- spec.signOutURL
URL для завершения сеанса аутентификации.
Используется в приложении для направления запросов на “Выход” (завершение сеанса). Для указанного URL будет создан отдельный Ingress-ресурс, запросы на который будут перенаправляться в
dex-authenticator
. - spec.tolerations
Определяет tolerations для подов
dex-authenticator
.Формат: стандартный список toleration. Поды инстанса унаследуют это поле как есть.
- spec.tolerations.effect
Определяет, какому effect’у taint’а соответствует описываемый toleration. Пустой подразумевает соответствие любому effect.
Допустимые значения:
NoSchedule
,PreferNoSchedule
,NoExecute
- spec.tolerations.key
Определяет, какому ключу (key) taint’a соответствует описываемый toleration. Пустой подразумевает соответствие любому ключу.
Если ключ (key) не указан (пуст),
operator
должен бытьExists
, что подразумевает соответствие любымvalue
иkey
. - spec.tolerations.operator
Определяет отношение ключа (key) к значению (value) — должен ли ключ быть равен (
Equal
) значению или допустимо существование ключа с любым значением.Указание
Exists
равносильно допуску любого значения для value, чтобы под с указанным toleration удовлетворял соответствующему taint.По умолчанию:
"Equal"
Допустимые значения:
Exists
,Equal
- spec.tolerations.tolerationSeconds
Определяет период времени в секундах, в течение которого планировщик должен ждать, прежде чем выгнать (evict) под с узла, если toleration перестал удовлетворять taint’у (справедливо только для effect
NoExecute
, иначе игнорируется).Если не установлено, тогда под не будет выгнан с узла, если toleration перестал удовлетворять taint’у. Если установлен в ноль (или отрицателен), под будет выгнан с узла немедленно, если toleration перестал удовлетворять taint’у..
По умолчанию используется значение «не установлено».
- spec.tolerations.value
Значение, которому должен удовлетворять toleration.
Должно быть пустым, если operator имеет параметр
Exists
.
- spec.whitelistSourceRanges
Список адресов в формате CIDR, которым разрешено проходить аутентификацию. Если параметр не указан, аутентификацию разрешено проходить без ограничения по IP-адресу.
Пример:
whitelistSourceRanges: 192.168.42.0/24
- Элемент массива
Шаблон:
^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}/[0-9]{1,2}$