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

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

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

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

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

Обратите внимание, что при установке Deckhouse для явного включения/отключения и настройки модуля используется параметр configOverrides ресурса InitConfiguration, а не ModuleConfig.

Чтобы явно включить или выключить модуль user-authz при установке Deckhouse, укажите userAuthzEnabled: true или userAuthzEnabled: false в секции configOverrides.

Чтобы задать настройки модуля при установке Deckhouse, используйте секцию userAuthz параметра configOverrides.

Чтобы явно включить или выключить модуль user-authz, установите spec.enabled в true или false в ModuleConfig/user-authz.

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

apiVersion: deckhouse.io/v1alpha1
kind: ModuleConfig
metadata:
  name: user-authz
spec:
  enabled: true

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

apiVersion: deckhouse.io/v1alpha1
kind: ModuleConfig
metadata:
  name: user-authz
spec:
  enabled: false

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

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

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

Параметры

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

  • controlPlaneConfiguratorобъект

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

    • controlPlaneConfigurator.enabledбулевый

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

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

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

      Примеры:

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

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

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

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

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

    Примеры:

    enableMultiTenancy: true
    
    enableMultiTenancy: false