Внимание! Мы категорически не рекомендуем создавать поды и ReplicaSet’ы — эти объекты являются второстепенными и должны создаваться из других контроллеров. Доступ к созданию и изменению подов и ReplicaSet’ов полностью отсутствует.

Внимание! Режим multi-tenancy (авторизация по пространству имён) в данный момент реализован по временной схеме и не гарантирует безопасность! Если вебхук, который реализовывает систему авторизации, по какой-то причине будет недоступен, авторизация по пространству имён (опции allowAccessToSystemNamespaces, namespaceSelector и limitNamespaces в custom resource) перестанет работать и пользователи получат доступы во все пространства имён. После восстановления доступности вебхука всё вернётся на свои места.

Вся настройка прав доступа происходит с помощью custom resources.

Модуль включен по умолчанию в наборах модулей: Default, Managed. Модуль выключен по умолчанию в наборе модулей Minimal.

Как явно включить или отключить модуль…

Чтобы явно включить или выключить модуль user-authz, установите spec.enabled в true или false в ModuleConfig/user-authz (создайте, при необходимости), или воспользуйтесь командой deckhouse-controller module в поде d8-system/deckhouse.

Пример включения модуля:

  • с помощью ресурса ModuleConfig:

    apiVersion: deckhouse.io/v1alpha1
    kind: ModuleConfig
    metadata:
      name: user-authz
    spec:
      enabled: true
    
  • с помощью команды deckhouse-controller (требуется kubectl, настроенный на работу с кластером):

    kubectl -ti -n d8-system exec svc/deckhouse-leader -c deckhouse -- deckhouse-controller module enable user-authz
    

Пример выключения модуля:

  • с помощью ресурса ModuleConfig:

    apiVersion: deckhouse.io/v1alpha1
    kind: ModuleConfig
    metadata:
      name: user-authz
    spec:
      enabled: false
    
  • с помощью команды deckhouse-controller (требуется kubectl, настроенный на работу с кластером):

    kubectl -ti -n d8-system exec svc/deckhouse-leader -c deckhouse -- deckhouse-controller module disable user-authz
    

Чтобы настроить модуль, используйте ресурс ModuleConfig с именем user-authz (подробнее о настройке Deckhouse…).

Пример ресурса ModuleConfig/user-authz для настройки модуля:

apiVersion: deckhouse.io/v1alpha1
kind: ModuleConfig
metadata:
  name: user-authz
spec:
  version: 1
  enabled: true
  settings: # <-- Параметры модуля из раздела "Параметры" ниже.

Параметры

Версия схемы: 1

  • settings
    объект
    • settings.controlPlaneConfigurator
      объект

      Настройки параметров для модуля автоматической настройки kube-apiserver control-plane-manager.

      • settings.controlPlaneConfigurator.enabled
        булевый

        Передавать ли в control-plane-manager параметры для настройки authz-webhook (см. параметры control-plane-manager’а).

        При выключении этого параметра модуль control-plane-manager будет считать, что по умолчанию webhook-авторизация выключена, и, соответственно, если не будет дополнительных настроек, control-plane-manager будет стремиться вычеркнуть упоминания webhook-плагина из манифеста. Даже если вы настроите манифест вручную.

        По умолчанию: true

        Примеры:

        enabled: true
        
        enabled: false
        
    • settings.enableMultiTenancy
      булевый

      Включить авторизацию по namespace (режим multi-tenancy).

      Все настройки kube-apiserver, необходимые для работы авторизации по namespace, выполняются автоматически модулем control-plane-manager (подробнее).

      Доступно только в версии Enterprise Edition.

      По умолчанию: false

      Примеры:

      enableMultiTenancy: true
      
      enableMultiTenancy: false