Мультитенантность — это возможность создавать в кластере Kubernetes изолированные окружения (проекты). Проекты похожи на пространства имен (Namespace), но имеют больше возможностей. Пространства имен используются только для логического разделения ресурсов в Kubernetes, и, например, не ограничивают сетевое взаимодействие, потребление ресурсов подами и возможности монтирования директории хоста. Такие особенности пространств имен не полностью соответствуют современным требованиям к разработке. По умолчанию для пространств имен также не включена сборка логов, аудит и сканирование на уязвимости.
Использование проектов позволяет решить эти проблемы и имеет следующие преимущества:
- для администраторов платформы:
- единообразие — администраторы могут создавать проекты, используя один и тот же шаблон, что обеспечивает единообразие и упрощает управление;
- безопасность — проекты обеспечивают изоляцию ресурсов и политик доступа между различными проектами, что поддерживает безопасное многотенантное окружение;
- потребление ресурсов — администраторы могут легко устанавливать квоты на ресурсы и ограничения для каждого проекта, предотвращая избыточное использование ресурсов.
- для пользователей платформы:
- быстрый старт — разработчики могут запрашивать у администраторов проекты, созданные по готовым шаблонам, что позволяет быстро начать разработку нового приложения;
- изоляция — каждый проект обеспечивает изолированное окружение, где разработчики могут развертывать и тестировать свои приложения без влияния на другие проекты.
Копирование секретов во все пространства имён не может использоваться совместно с проектами режима мультитенантности.
В этом режиме создаются изолированные окружения для пользователей в их проектах, а secret-copier автоматически раздаёт секреты во все пространства имён.
Если в закрытом окружении пользователя окажутся чувствительные данные, это может привести к утечке данных и нарушению модели безопасности.
Ограничения
Проекты имеют ряд ограничений:
- Создание более одного пространства имён внутри проекта не предусматривается. Если требуется несколько пространств имён, создайте отдельный проект для каждого из них.
- Ресурсы шаблона применяются только к одному пространству имён, имя которого совпадает с именем проекта.