Выбор службы контейнеров Azure
Azure предлагает ряд служб размещения контейнеров, предназначенных для удовлетворения различных рабочих нагрузок, архитектур и бизнес-требований. Это руководство по выбору службы контейнеров поможет вам понять, какую службу контейнеров Azure лучше всего подходит для сценариев и требований к рабочей нагрузке.
Заметка
В этом руководстве термин рабочая нагрузка относится к совокупности ресурсов приложений, которые поддерживают бизнес-цель или выполнение бизнес-процесса. Рабочая нагрузка использует несколько служб, таких как API и хранилища данных, которые работают вместе для обеспечения конкретных комплексных функций.
Как использовать это руководство
В этом руководстве содержатся две статьи: эта введение и другая статья о рекомендации, которые являются общими для всех типов рабочих нагрузок.
Заметка
Если вы еще не привержены контейнеризации, ознакомьтесь с Выбор службы вычислений Azure для получения сведений о других вариантах вычислений, которые можно использовать для размещения рабочей нагрузки.
В этой вводной статье описываются службы контейнеров Azure, охватываемые данным руководством, и рассматривается, как модели служб сравниваются с учетом компромиссов между настраиваемостью и ориентированными на мнение решениями, такими как подходы, управляемые клиентом, и подходы, управляемые Microsoft. После определения кандидатов сервисов на основе ваших предпочтений модели сервиса следующим шагом является оценка параметров в соответствии с требованиями рабочей нагрузки путем просмотра статьи о общих рекомендациях в области сети, безопасности, операций и надежности.
В этом руководстве учитываются компромиссы, которые могут потребоваться сделать на основе технических требований, размера и сложности рабочей нагрузки и опыта команды рабочей нагрузки.
Службы контейнеров Azure в области действия этого руководства
В этом руководстве рассматривается подмножество служб контейнеров, которые в настоящее время предлагает Azure. Это подмножество предоставляет зрелый набор функций для веб-приложений и API, сети, наблюдаемости, средств разработчика и операций. Эти службы контейнеров сравниваются:
Azure Container Apps — это полностью управляемая платформа, которая позволяет запускать контейнерные приложения без забот об оркестрации и инфраструктуре. Дополнительные сведения см. в документации по приложениям контейнеров Azure.
служба Azure Kubernetes (AKS) — это управляемая служба Kubernetes для запуска контейнерных приложений. С помощью AKS вы можете воспользоваться преимуществами управляемых надстроек и расширений для получения дополнительных возможностей, сохраняя при этом наибольшую гибкость в настройке. Дополнительные сведения см. в документации по AKS .
логотип службы приложений
веб-приложение для контейнеров — это функция Службы приложений Azure, полностью управляемая служба для размещения веб-приложений на основе HTTP с встроенным обслуживанием инфраструктуры, исправлением безопасности, масштабированием и средствами диагностики. Дополнительные сведения см. в документации по службе приложений .
Полный список всех служб контейнеров Azure см. на странице категории продуктов служб контейнеров.
Рекомендации по модели службы
Модель службы предоставляет самые широкие сведения о уровне гибкости и контроле над тем, что любая служба контейнеров Azure предоставляет в обмен на общую простоту и простоту использования.
Общие сведения о терминологии и концепциях моделей служб, включая инфраструктуру как службу (IaaS) и платформу как услугу (PaaS), см. в статье Общая ответственность в облачной.
Сравнение моделей служб решений контейнеров Azure
АКС
Как гибрид IaaS и PaaS, AKS ставит приоритет контроля над простотой, используя де-факто стандарт для оркестрации контейнеров: Kubernetes. Хотя AKS упрощает управление базовой базовой инфраструктурой, эта платформа на основе виртуальных машин по-прежнему предоставляется вашим приложениям и требует соответствующих параметров защиты и процессов, таких как исправление, для обеспечения безопасности и непрерывности бизнес-процессов. Инфраструктура вычислений поддерживается дополнительными ресурсами Azure, размещенными непосредственно в подписке, например подсистемами балансировки нагрузки Azure.
AKS также предоставляет доступ к серверу API Kubernetes, что позволяет настраивать оркестрацию контейнеров и развертывать проекты из Cloud Native Computing Foundation (CNCF). Следовательно, существует значительная кривая обучения для команд, которые впервые работают с Kubernetes. Если вы не знакомы с контейнерными решениями, необходимо учитывать эту кривую обучения. Следующие решения PaaS предлагают более низкий барьер для входа. Вы можете перейти в Kubernetes, когда требования диктуют этот шаг.
AKS Automatic
AKS Automatic упрощает освоение Kubernetes путем автоматизации сложных задач управления кластерами, что снижает потребность в глубоких знаниях Kubernetes. Он предлагает более упрощенный интерфейс PaaS, сохраняя гибкость и расширяемость Kubernetes. Azure обрабатывает настройку кластера, подготовку узлов, масштабирование, исправление безопасности и применяет некоторые конфигурации, которые рекомендуется использовать по умолчанию. Это снижает операционные усилия, но поставляется с ограниченным набором доступных параметров топологии.
Заметка
В этом руководстве будут различаться AKS Standard и AKS Automatic, где это применимо. В противном случае можно предположить, что функциональные возможности эквивалентны как в стандартной, так и в автоматической версиях.
Приложения контейнеров Azure
Приложения контейнеров Azure — это уровень абстракции на вершине Kubernetes, который позволяет приложениям запускать и масштабироваться без необходимости напрямую управлять базовой инфраструктурой. Контейнерные приложения предлагают бессерверные и выделенные вычислительные параметры, что обеспечивает полный контроль над типом и объемом вычислительных ресурсов, доступных для приложений. Абстрагируя API оркестрации контейнеров, Container Apps по-прежнему предоставляют вам готовый доступ к ключевым функциям, таким как ингресс уровня 7, разделение трафика, A/B тестирование и управление жизненным циклом приложений.
Веб-приложение для контейнеров
Веб-приложение для контейнеров также является предложением PaaS, но обеспечивает большую простоту и меньше контроля, чем контейнерные приложения. Он упрощает оркестрацию контейнеров, но по-прежнему обеспечивает соответствующее масштабирование, управление жизненным циклом приложений, разделение трафика, интеграцию сети и мониторинг.
Рекомендации по модели размещения
Ресурсы Azure, такие как кластеры AKS, можно использовать для размещения нескольких рабочих нагрузок. Это позволяет оптимизировать операции и тем самым снизить общую стоимость. Если вы выберете этот путь, ниже приведены некоторые важные аспекты.
AKS обычно используется для размещения нескольких рабочих нагрузок или разрозненных компонентов рабочей нагрузки. Эти рабочие нагрузки и компоненты можно изолировать с помощью собственных функций Kubernetes, таких как пространства имен, элементы управления доступом и сетевые элементы управления, чтобы соответствовать требованиям безопасности.
Вы также можете использовать AKS в сценариях с одной рабочей нагрузкой, если требуется дополнительная функциональность, которую предоставляет API Kubernetes, и ваша группа рабочей нагрузки имеет достаточно опыта работы с кластером Kubernetes. Команды с меньшим опытом работы с Kubernetes по-прежнему могут успешно управлять собственными кластерами, используя управляемые надстройки Azure и функции, такие как автоматическое обновление кластера, чтобы сократить операционные усилия.
Контейнерные приложения следует использовать для размещения одной рабочей нагрузки с общей границей безопасности. Контейнерные приложения имеют одну логическую границу верхнего уровня, называемую средыконтейнерных приложений, которая также выступает в качестве границы повышенной безопасности. Нет механизмов для дополнительного детального контроля доступа. Например, взаимодействие между средами неограниченно, а все приложения совместно используют одну рабочую область Log Analytics.
Если рабочая нагрузка имеет несколько компонентов и несколько границ безопасности, разверните несколько сред для контейнерных приложений или рассмотрите использование AKS.
веб-приложение для контейнеров — это функция службы приложений. Служба приложений группирует приложения в так называемую границу выставления счетов, которая называется планом службы приложений . Так как вы можете ограничить управление доступом на основе ролей (RBAC) на уровне приложения, это может оказаться заманчивым для размещения нескольких рабочих нагрузок в одном плане. Однако мы рекомендуем вам размещать одну рабочую нагрузку на план, чтобы избежать проблемы с "шумным соседом". Все приложения в одном плане службы приложений используют одинаковые выделенные вычислительные ресурсы, память и хранилище.
При рассмотрении аппаратной изоляции необходимо учитывать, что планы службы приложений обычно выполняются в инфраструктуре, которая предоставляется другим клиентам Azure. Вы можете выбрать выделенные уровни для выделенных виртуальных машин или изолированных уровней для выделенных виртуальных машин в выделенной виртуальной сети.
Как правило, все службы контейнеров Azure могут размещать несколько приложений с несколькими компонентами. Однако контейнерные приложения и веб-приложение для контейнеров лучше подходят для одного компонента рабочей нагрузки или нескольких компонентов рабочей нагрузки с высоким уровнем связи, использующих аналогичный жизненный цикл, где одна команда владеет и запускает приложения.
Если необходимо разместить разрозненные компоненты приложения или рабочие нагрузки на одном узле, рассмотрите возможность использования AKS.
Компромисс между контролем и простотой использования
AKS обеспечивает наиболее настраиваемую возможность, но эта возможность требует больше рабочих усилий по сравнению с другими службами. Хотя контейнерные приложения и веб-приложение для контейнеров являются службами PaaS, которые имеют аналогичные уровни функций, управляемых Корпорацией Майкрософт, веб-приложение для контейнеров подчеркивает простоту для удовлетворения целевой аудитории: существующих клиентов Azure PaaS, которые находят интерфейс знакомым.
Общее правило
Как правило, службы, которые предлагают большую простоту, обычно подходят для клиентов, которые предпочитают сосредоточиться на разработке функций, а не на управлении инфраструктурой. Службы, которые предлагают больше контроля, как правило, подходят для клиентов, которым нужна более настраиваемая возможность и имеют навыки, ресурсы и бизнес-обоснование, необходимые для управления собственной инфраструктурой.
Общие рекомендации для всех рабочих нагрузок
Хотя команда рабочей нагрузки может предпочесть определенную модель службы, эта модель может не соответствовать требованиям организации в целом. Например, разработчики могут предпочесть меньше операционных усилий, но группы безопасности могут рассмотреть этот тип накладных расходов, необходимых для удовлетворения требований соответствия требованиям. Команды должны сотрудничать, чтобы принимать соответствующие компромиссы.
Помните, что общественные соображения имеют широкий характер. Только подмножество может иметь отношение к вам, в зависимости от типа рабочей нагрузки, а также от вашей роли в организации.
В следующей таблице представлен общий обзор рекомендаций, включая сравнение функций службы. Просмотрите рекомендации в каждой категории и сравните их с требованиями рабочей нагрузки.
Категория | Обзор |
---|---|
Рекомендации по работе с сетями | Сеть в службах контейнеров Azure зависит от вашего предпочтения простоты и настройки. AKS очень настраивается, обеспечивая широкий контроль над сетевым потоком, но требует более оперативной работы. Контейнерные приложения предлагают функции сети, управляемые Azure. Это средний уровень между AKS и веб-приложением для контейнеров, который предназначен для клиентов, знакомых со службой приложений. Важно, что решения по проектированию сети могут иметь долгосрочные последствия из-за проблем, возникающих при их изменении без повторного развертывания рабочих нагрузок. Несколько факторов, таких как планирование IP-адресов, балансировка нагрузки, методы обнаружения служб и возможности частной сети, отличаются между этими службами. Необходимо тщательно проверить, как службы соответствуют конкретным требованиям к сети. |
вопросы безопасности | Контейнерные приложения, AKS и веб-приложение для контейнеров обеспечивают интеграцию с ключевыми предложениями безопасности Azure, такими как Azure Key Vault и управляемые удостоверения. AKS предлагает дополнительные функции, такие как защита от угроз среды выполнения и политики сети. Хотя может показаться, что службы PaaS, такие как контейнерные приложения, предлагают меньше функций безопасности, это частично связано с тем, что больше базовых компонентов инфраструктуры управляются Azure и не подвержены клиентам, что снижает риск. |
операционные вопросы | AKS предлагает большую возможность настройки, но требует больше операционных ресурсов. В отличие от этого, решения PaaS, такие как контейнерные приложения и веб-приложение для контейнеров, позволяют Azure обрабатывать такие задачи, как обновления ОС. Важны гибкость в масштабируемости и возможности адаптации аппаратных SKU. AKS предоставляет гибкие возможности оборудования, в то время как контейнерные приложения и веб-приложение для контейнеров предоставляют меньше возможностей. Масштабируемость приложений в AKS является ответственностью клиента, что означает, что вы можете применить любое решение, совместимое с Kubernetes. AKS Automatic, Container Apps и Web App for Containers ориентированы на более простые подходы. |
рекомендации по надежности | Конфигурации проб работоспособности веб-приложений для контейнеров и контейнерных приложений ограничены по сравнению с AKS, но проще настроить, учитывая, что они используют знакомый API Azure Resource Manager. AKS требует использования API Kubernetes. Кроме того, необходимо взять на себя дополнительную ответственность за управление масштабируемостью пула узлов Kubernetes и доступностью, чтобы правильно запланировать экземпляры приложений. Эти требования приводят к дополнительным операционным усилиям для AKS. Кроме того, соглашения об уровне обслуживания для приложений на контейнерах и веб-приложений для контейнеров проще вычислить, чем для AKS, для которых плоскость управления и пулы узлов имеют собственные соглашения об уровне обслуживания и должны быть учтены соответственно. Все службы обеспечивают избыточность зон в тех центрах обработки данных, где это предусмотрено. |
После просмотра предыдущих рекомендаций, возможно, вы еще не нашли идеальное соответствие. Это совершенно нормально.
Оценка компромиссов
Выбор облачной службы не является простым упражнением. Учитывая сложность облачных вычислений, совместная работа между многими командами и ограничениями ресурсов с участием людей, бюджетов и времени, каждое решение имеет компромиссы.
Помните, что для любой конкретной рабочей нагрузки некоторые требования могут быть более важными, чем другие. Например, команда приложений может предпочесть решение PaaS, такое как Контейнерные приложения, но выбрать AKS, так как их команда безопасности требует запрета сетевого взаимодействия по умолчанию между совместно размещенными компонентами рабочей нагрузки. Эта функция есть только в AKS и реализуется с использованием сетевых политик Kubernetes.
Наконец, обратите внимание, что предыдущие общие рекомендации включают наиболее распространенные требования, но не являются исчерпывающими. Перед подтверждением решения команда, отвечающая за нагрузку, несет ответственность за изучение каждого требования в отношении набора функций предпочитаемой службы.
Заключение
В этом руководстве описаны наиболее распространенные аспекты, с которыми вы сталкиваетесь при выборе службы контейнеров Azure. Она предназначена для руководства командам рабочей нагрузки в принятии обоснованных решений. Процесс начинается с выбора модели облачной службы, которая включает определение требуемого уровня управления. Контроль достигается за счет простоты. Другими словами, это процесс поиска правильного баланса между самоуправляемой инфраструктурой и управляемой корпорацией Майкрософт.
Многие команды рабочей нагрузки могут выбирать службу контейнеров Azure исключительно на основе предпочтительной модели службы: PaaS и IaaS. Другие команды должны изучить дополнительные сведения о том, как функции, относящиеся к службам, относятся к рабочей нагрузке или требованиям организации.
Все команды, занимающиеся рабочей нагрузкой, должны использовать это руководство в дополнение к проведению должной осмотрительности, чтобы избежать труднопоправимых решений. Помните, однако, что решение не считается подтвержденным, пока разработчики не протестируют службу и не примут решение на основе опыта, а не теории.
Участники
Эта статья поддерживается корпорацией Майкрософт. Первоначально он был написан следующими участниками.
Основные авторы:
- Андре Dewes | Старший инженер клиента
- Маркос Мартинес | Старший инженер службы
- Джули Нг | Старший инженер
Другие участники:
- Мик Альбертс | Технический писатель
- Мартин Gjoшевски | Старший инженер клиента
- Дон Хай | Главный инженер по работе с клиентами
- Nelly Kiboi | Инженер службы
- Сухонг Лю | Старший инженер службы
- Фейсал Мустафа | Старший инженер клиента
- Уолтер Майерс | Главный менеджер по проектированию клиентов
- Соналика Рой | Старший инженер клиента
- Паоло Сальватори | Главный инженер клиента
- Виктор Сантана | Главный инженер клиента
Следующий шаг
Узнайте больше об общих архитектурных соображениях для служб, упомянутых в этой статье.