Модуль позволяет настраивать изолированные окружения в кластере Kubernetes.
По подготовленному шаблону с помощью Custom Resource Project в кластере Kubernetes можно получить одинаковые, изолированные друг от друга окружения с настроенными доступами пользователей (подробнее в разделе Примеры).
Создание изолированных окружений с помощью модуля multitenancy-manager
может быть удобно, например, в следующих случаях:
- В рамках процесса CI/CD — для создания окружений разработчика при тестировании или демонстрации работы кода.
- При развертывании приложений, с предоставлением разработчику ограниченного доступа в кластер.
- При предоставлении услуг по аренде ресурсов кластера.
Возможности модуля
- Управление доступом пользователей и групп на базе механизма RBAC Kubernetes (на основе модуля user-authz).
- Управление уровнем изоляции конкретных окружений.
- Создание шаблонов для нескольких окружений и кастомизация параметрами по OpenAPI-спецификации.
- Полная совместимость с
Helm
в темплейтах ресурсов.
Принцип работы
При создании ресурса Project происходит следующее:
- Создается
Namespace
с именем из ресурса Project. - Создается AuthorizationRule из приведенных данных в поле subjects ресурса ProjectType.
- Выполняется рендеринг шаблонов (параметр resourcesTemplate ресурса ProjectType) с помощью Helm. Значения для рендеринга берутся из параметра template ресурса Project. При рендеринге выполняется валидация значений согласно OpenAPI-спецификации (параметр openAPI ресурса ProjectType).
Так как рендеринг шаблонов выполняется с помощью Helm
, в шаблоне можно описать любые необходимые объекты Kubernetes, например NetworkPolicy
, LimitRange
, ResourceQuota
и т.п.