Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Отвечая на вопрос «Как настроить Kubernetes для работы в режиме мультитенантности?», архитекторы должны сначала понять концептуальные границы и доступные модели изоляции. Многотенантность в AKS — это практика выполнения нескольких изолированных рабочих нагрузок, принадлежащих разным командам, приложениям или клиентам в общем кластере Kubernetes. В этой статье подробно описаны основные понятия и архитектурные модели для многотенантности на Azure Kubernetes Service (AKS).
Tip
Каковы три модели многотенантности в AKS? Многопользовательская архитектура AKS использует спектр вариантов изоляции с тремя распространёнными моделями: изоляция пространств имён, изоляция пулов узлов и отдельный кластер для каждого арендатора. Изоляция на уровне пространств имен лучше всего подходит для доверенных внутренних команд и обеспечивает максимальную экономическую эффективность, изоляция на уровне пулов узлов обеспечивает более строгое разделение рабочих нагрузок при умеренных накладных расходах, а отдельный кластер для каждого клиента обеспечивает самую надежную изоляцию для сценариев с недоверенной средой или строгими нормативными требованиями.
Пошаговые инструкции по реализации и манифесты YAML см. в сопутствующем руководстве: Рекомендации по мультитенантности в AKS.
Почему многотенантность в AKS?
Мультитенантность позволяет нескольким командам, приложениям или клиентам совместно использовать один кластер Kubernetes. Основное обоснование многотенантности в AKS — это экономичность и операционный масштаб.
Использование выделенного кластера для каждого приложения или команды приводит к значительной фрагментации ресурсов, простоям вычислительных ресурсов и кратному увеличению накладных расходов на плоскость управления. Объединение рабочих нагрузок в кластеры с несколькими клиентами позволяет организациям максимизировать использование ресурсов и сократить расходы на облако. С операционной точки зрения мультитенантная архитектура сокращает количество кластеров, находящихся в эксплуатации, а значит, платформенным командам приходится устанавливать исправления, обновлять, отслеживать и защищать меньше кластеров, что упрощает управление их жизненным циклом.
Какова разница между мягкой и жесткой многотенантностью?
Kubernetes по сути не является многотенантной системой. Чтобы обеспечить многотенантность, необходимо предусмотреть либо «мягкую», либо «жесткую» модель изоляции в зависимости от уровня доверия между арендаторами.
Разница между мягкой и жёсткой мультитенантностью в Kubernetes заключается прежде всего в модели доверия и вытекающих из неё требованиях к изоляции. Мягкая мультитенантность предполагает доверенных внутренних тенантов и сосредоточена на предотвращении случайного взаимного влияния с помощью логических механизмов контроля, таких как пространства имён, RBAC и квоты. Строгая многотенантность предполагает низкий или нулевой уровень доверия между арендаторами и требует более строгих мер изоляции, чтобы снизить риск несанкционированного доступа, латерального перемещения и раскрытия данных.
| Модель | Уровень доверия | Цель | Сценарий использования | Пример сценариев |
|---|---|---|---|---|
| Мягкая мультитенантность | Высокий уровень доверия между внутренними клиентами | Предотвратить случайное вмешательство, нехватку ресурсов и конфликты конфигураций | Внутренние среды платформы, в которых команды совместно используют инфраструктуру | Несколько продуктовых команд в одной организации совместно используют кластер AKS для разработки, тестирования и внутренних сервисов |
| Жесткая многотенантность | Низкое или нулевое доверие между клиентами | Предотвращение вредоносных атак, бокового перемещения и кражи данных | Размещение внешних клиентов и регулируемые рабочие нагрузки | Поставщик SaaS, размещающий рабочие нагрузки, специфичные для каждого клиента, для которого изоляция арендаторов является обязательным требованием безопасности и соответствия нормативным требованиям |
Спектр изоляции
Многотенантность в AKS — это не выбор между двумя вариантами; она представляет собой спектр. По мере продвижения по спектру уровень изоляции возрастает, но также растут операционная сложность и затраты. Этот спектр служит организационной основой для проектирования многопользовательского кластера:
- Изоляция пространства имен (Логическая): клиенты используют одни и те же пулы узлов и плоскость управления, но разделяются логически пространствами имен Kubernetes. Это основа нестрогой мультитенантности.
- Изоляция пула узлов (физические вычислительные ресурсы): арендаторы совместно используют плоскость управления, но им выделяются отдельные рабочие узлы. Это улучшает разделение рабочих нагрузок и снижает эффект «шумного соседа», но не обеспечивает полной изоляции арендатора, поскольку компоненты управляющей плоскости и уровня кластера по-прежнему остаются общими.
- Отдельный кластер для каждого клиента (полная физическая изоляция): Клиенты полностью изолированы и имеют собственную плоскость управления AKS и собственную плоскость данных. Это предельная форма жёсткой мультитенантности, фактически отказывающаяся от совместного использования на уровне Kubernetes в пользу изоляции на уровне Azure.
Базовые компоненты AKS для мультитенантной архитектуры
AKS предоставляет набор встроенных и интегрированных с Azure примитивов для обеспечения всего спектра изоляции.
- Microsoft Entra ID. Обеспечивает централизованное управление удостоверениями и доступом для проверки подлинности пользователей и автоматизированных систем в API Kubernetes.
- Azure RBAC: сопоставляет удостоверения Microsoft Entra ID с разрешениями Kubernetes, гарантируя, что клиенты могут получать доступ только к авторизованным ресурсам.
- Управляемые пространства имён: обеспечивают логические границы внутри кластера для группировки ресурсов арендатора, применения квот и разграничения доступа.
- Политика Azure / Gatekeeper: применяет централизованные правила соответствия и управления в кластере, чтобы предотвратить развертывание небезопасных или несанкционированных конфигураций клиентов.
- Azure CNI: обеспечивает встроенную интеграцию виртуальной сети для сети AKS и поддерживает сегментацию трафика клиента с помощью элементов управления политикой сети. Поведение IP-адреса пода зависит от выбранного режима CNI (например, Overlay или Pod Subnet).
- Службы сетевого взаимодействия контейнеров Azure (ACNS) Cilium L7: обеспечивают высокопроизводительные сетевые политики на основе eBPF и фильтрацию трафика уровня 7 для строгой изоляции сетевого трафика арендатора.
- Удостоверение рабочей нагрузки: позволяет отдельным подам безопасно аутентифицироваться во внешних службах Azure с помощью федеративной идентичности, устраняя общие секреты между арендаторами.
Сопоставление уровней изоляции между плоскостями
Чтобы создать безопасную мультитенантную архитектуру, необходимо применить примитивы AKS в трех разных плоскостях среды кластера.
| самолёт | Description | Примененные примитивы AKS |
|---|---|---|
| Контрольная плоскость | Защита доступа к серверу API Kubernetes и логическим границам. | Microsoft Entra ID, Azure RBAC, управляемые пространства имен |
| Плоскость данных | Защита сетевого трафика, выполнения вычислений и границ на уровне узла. | Azure CNI, ACNS Cilium L7, пулы узлов |
| Уровень ресурсов | Управление потреблением вычислительных ресурсов, внешним доступом и соответствием конфигурации. | Политика Azure, идентификатор рабочей нагрузки |
Какую модель изоляции следует выбрать?
Используйте следующую матрицу, чтобы определить, какая точка в спектре изоляции лучше всего соответствует вашим требованиям организации.
| Модель изоляции | Уровень безопасности | Рентабельность | Сложность эксплуатации | Лучше всего подходит для |
|---|---|---|---|---|
| Пространство имён для каждого арендатора | Низкий до среднего (логический) | Высокий (максимальный общий доступ) | Низкий (управление одним кластером) | Внутренние команды, среды разработки и тестирования, нестрогая многотенантность. |
| Пул узлов для каждого арендатора | Высокий (с изолированными вычислительными ресурсами) | Средний (общий уровень управления) | Средний (управление оттенками и терпимостями) | Внутренние и внешние рабочие нагрузки, которым требуется более строгая изоляция вычислительных ресурсов при совместном использовании плоскости управления; не лучший вариант для многоарендности zero-trust с потенциально враждебными арендаторами. |
| Кластер на клиент | Наивысший (физический) | Низкая (высокие накладные расходы) | Высокий (требуется управление флотом) | Враждебная многотенантная среда, внешние корпоративные заказчики, модель нулевого доверия. |
Когда следует использовать каждую модель
- Используйте отдельное пространство имён для каждого арендатора, если арендаторы являются внутренними или доверенными, приоритетом является экономическая эффективность, а средств логической изоляции достаточно.
- Используйте отдельный пул узлов для каждого арендатора, если требуется более строгое разделение вычислительных ресурсов и снижение влияния «шумных соседей», при этом используя общую плоскость управления AKS.
- Используйте кластер для каждого клиента, если клиенты ненадежны, нормативные границы являются строгими, или модель риска требует минимальной общей инфраструктуры.
Дальнейшие действия
Теперь, когда вы понимаете концептуальные модели и примитивы для мультитенантности, перейдите к руководству по реализации, чтобы применить эти понятия к кластеру.
Итог
- Многотенантность в Azure Kubernetes Service (AKS) — это практика выполнения нескольких изолированных рабочих нагрузок клиента в общей инфраструктуре Kubernetes для снижения затрат и упрощения операций.
- Модель «одно пространство имён на арендатора» — наиболее экономически эффективный вариант для доверенных внутренних нагрузок, поскольку она обеспечивает максимальное совместное использование инфраструктуры, сохраняя при этом логические границы.
- Подход node-pool-per-tenant улучшает изоляцию вычислительных ресурсов и контроль влияния «шумных соседей», но по-прежнему использует общую плоскость управления AKS и другие общие компоненты уровня кластера.
- Кластер для каждого клиента обеспечивает самую надежную изоляцию клиентов для сценариев нулевого доверия и строго регулируемых сценариев, но для этого требуется более высокая стоимость и больше операционных затрат.