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. Поды инстанса унаследуют это поле как есть.

    • spec.sendAuthorizationHeader
      булевый

      Флаг, который отвечает за отправку конечному приложению заголовка 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. Поды инстанса унаследуют это поле как есть.

    • spec.sendAuthorizationHeader
      булевый

      Флаг, который отвечает за отправку конечному приложению заголовка 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. Поды инстанса унаследуют это поле как есть.

    • spec.sendAuthorizationHeader
      булевый

      Флаг, который отвечает за отправку конечному приложению заголовка 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}$