Гибридное управление и развертывание Azure Arc для кластеров Kubernetes

Azure Arc
Служба Azure Kubernetes (AKS)
Azure Monitor
Политика Azure
Управление доступом на основе ролей в Azure

В этой эталонной архитектуре показано, как Azure Arc расширяет управление кластерами Kubernetes и конфигурацию между центрами обработки данных клиентов, пограничными расположениями и несколькими облачными средами.

Архитектура

Схема архитектуры показывает топологию Azure Arc для Kubernetes.

Скачайте файл Visio для этой архитектуры.

Рабочий процесс

Архитектура состоит из следующих аспектов:

  • Kubernetes с поддержкой Azure Arc. Подключите и настройте кластеры Kubernetes внутри или за пределами Azure с помощью Kubernetes с поддержкой Azure Arc. При присоединении кластера Kubernetes к Azure Arc он назначает идентификатор Azure Resource Manager и управляемое удостоверение.
  • Служба Azure Kubernetes. Кластеры Kubernetes в Azure позволяют снизить сложность и эксплуатационные расходы на управление кластерами Kubernetes.
  • Локальный кластер Kubernetes. Присоединение кластеров Kubernetes с сертификацией Cloud Native Computing Foundation (CNCF), размещенных в локальных или сторонних облачных средах.
  • Политика Azure. Развертывание политик и управление ими для кластеров Kubernetes с поддержкой Arc.
  • Azure Monitor. Наблюдайте и отслеживайте кластеры Kubernetes с поддержкой Arc.

Компоненты

  • Azure Arc — это мост, который расширяет платформу Azure, что позволяет создавать приложения и службы, которые могут выполняться в центрах обработки данных, в пограничных средах и в многооблачных средах.
  • Служба Azure Kubernetes (AKS) — это управляемая служба для развертывания и масштабирования кластеров Kubernetes.
  • Политика Azure позволяет достичь соответствия облачным решениям в режиме реального времени в масштабе с согласованным управлением ресурсами.
  • Azure Monitor обеспечивает сквозную наблюдаемость для приложений, инфраструктуры и сети.

Подробности сценария

Azure Arc можно использовать для регистрации кластеров Kubernetes, размещенных за пределами Microsoft Azure. Затем вы можете использовать средства Azure для управления этими кластерами вместе с кластерами, размещенными в Служба Azure Kubernetes (AKS).

Потенциальные варианты использования

Типичные способы использования этой архитектуры:

  • Управление локальными кластерами и кластерами Kubernetes, размещенными в AKS, для инвентаризации, группировки и тегов.
  • Использование Azure Monitor для мониторинга кластеров Kubernetes в гибридных средах.
  • Использование Политика Azure для развертывания и применения политик для кластеров Kubernetes в гибридных средах.
  • Использование Политика Azure для развертывания и применения GitOps.

Рекомендации

В следующих разделах представлены рекомендации, которые применяются к большинству сценариев. Корпорация Майкрософт рекомендует следовать за ними, если у вас нет необходимости переопределить их.

Регистрация кластера

Вы можете зарегистрировать любой активный кластер CNCF Kubernetes. Для доступа к кластеру и роли администратора кластера в кластере требуется файл kubeconfig , чтобы развернуть агенты Kubernetes с поддержкой Arc. Интерфейс командной строки Azure используется для выполнения задач регистрации кластера. Пользователь или субъект-служба, используемые для команды az login и az connectedk8s connect , требуют разрешения на чтение и запись для типа ресурса Microsoft.Kubernetes/connectedClusters. Кластер Kubernetes — роль подключения Azure Arc имеет эти разрешения и может использоваться для назначений ролей в субъекте-пользователе или субъекте-службе. Helm 3 требуется для подключения кластера, использующего расширение connectedk8s. Для установки расширений интерфейса командной строки Kubernetes с поддержкой Azure Arc требуется azure CLI версии 2.3 или более поздней.

Агенты Azure Arc для Kubernetes

Kubernetes с поддержкой Azure Arc состоит из нескольких агентов (также называемых операторами), которые выполняются в кластере, развернутом в пространстве имен Azure-arc :

  • deployment.apps/config-agent. Просматривает подключенный кластер для ресурсов конфигурации системы управления версиями, применяемых к кластеру, и обновляет состояние соответствия.
  • deployment.apps/controller-manager. Является оператором для операторов, т. е. управляет взаимодействием между компонентами Azure Arc.
  • deployment.apps/metrics-agent. Собирает метрики из других агентов Arc, чтобы обеспечить оптимальную производительность этих агентов.
  • deployment.apps/cluster-metadata-operator. Собирает метаданные кластера, версию кластера, количество узлов и версию агента Azure Arc.
  • deployment.apps/resource-sync-agent. Синхронизирует ранее упомянутые метаданные кластера с Azure.
  • deployment.apps/clusteridentityoperator. Поддерживает сертификат управляемого удостоверения службы (MSI), используемый другими агентами для взаимодействия с Azure.
  • deployment.apps/flux-logs-agent. Собирает журналы из операторов flux, развернутых в рамках конфигурации системы управления версиями.
  • deployment.apps/extension-manager. Устанавливает и управляет жизненным циклом диаграмм расширения Helm.
  • deployment.apps/kube-azure-ad-proxy. Используется для проверки подлинности запросов, отправляемых в кластер с помощью Cluster Connect.
  • deployment.apps/clusterconnect-agent. Обратный прокси-агент, который позволяет функции подключения кластера предоставлять доступ к серверу API кластера. Это необязательный компонент, развернутый только в том случае, если функция подключения кластера включена в кластере.
  • deployment.apps/guard. Сервер веб-перехватчика проверки подлинности и авторизации, используемый для управления доступом на основе ролей Microsoft Entra (RBAC). Это необязательный компонент, развернутый только в том случае, если функция azure-rbac включена в кластере.

Дополнительные сведения см. в статье "Подключение кластера Kubernetes с поддержкой Azure Arc".

Мониторинг кластеров с помощью аналитики контейнеров Azure Monitor

Мониторинг контейнеров является критически важной задачей. Аналитика контейнеров Azure Monitor предоставляет широкий интерфейс мониторинга для кластеров ядра AKS и AKS. Вы также можете настроить аналитику контейнеров Azure Monitor для мониторинга кластеров Kubernetes с поддержкой Azure Arc, размещенных за пределами Azure. Это обеспечивает комплексный мониторинг кластеров Kubernetes в azure, локальных и сторонних облачных средах.

Аналитика контейнеров Azure Monitor обеспечивает видимость производительности, собирая метрики памяти и процессора из контроллеров, узлов и контейнеров, метрик, доступных в Kubernetes с помощью интерфейса программирования приложений метрик (API). Также собираются журналы контейнеров. После включения мониторинга из кластеров Kubernetes метрики и журналы автоматически собираются для вас контейнерной версией агента Log Analytics. Метрики записываются в хранилище метрик, а данные журнала записываются в хранилище журналов, связанном с рабочей областью Log Analytics. Дополнительные сведения о аналитике контейнеров Azure Monitor см. в обзоре аналитики контейнеров Azure Monitor.

Вы можете включить аналитику контейнеров Azure Monitor для одного или нескольких развертываний Kubernetes с помощью скрипта PowerShell или скрипта Bash.

Чтобы включить мониторинг кластеров Kubernetes с поддержкой Arc, см. статью "Включение мониторинга кластера Kubernetes с поддержкой Azure Arc"

Использование Политика Azure для включения развертывания приложений на основе GitOps

Используйте Политика Azure для принудительного применения каждого ресурса Microsoft.Kubernetes/connectedclusters или ресурса Microsoft.ContainerService/managedClusters с определенными ресурсами Microsoft.KubernetesConfiguration/fluxConfiguration. Например, можно применить базовую конфигурацию к одному или нескольким кластерам или развернуть определенные приложения в нескольких кластерах. Чтобы использовать Политика Azure, выберите определение из встроенных определений Политика Azure для Kubernetes с поддержкой Azure Arc, а затем создайте назначение политики.

При создании назначения политики задайте область для группы ресурсов Или подписки Azure. Также задайте параметры созданной функции fluxConfiguration . При создании назначения подсистема политик определит все подключенные ресурсыCluster или managedCluster, расположенные в пределах области, а затем примените к каждому элементу fluxConfiguration.

Если вы используете несколько репозиториев источников для каждого кластера (например, один репозиторий для центрального оператора ИТ/кластера и других репозиториев для команд приложений), активируйте это с помощью нескольких назначений политик и настройте каждое назначение политики для использования другого исходного репозитория.

Дополнительные сведения см. в статье "Развертывание приложений в масштабе с помощью конфигураций Flux версии 2 и Политика Azure".

Развертывание приложений с помощью GitOps

GitOps — это практика объявления требуемого состояния конфигурации Kubernetes (развертываний, пространств имен и т. д.) в исходном репозитории, таких как репозиторий Git или Helm, контейнеры или Хранилище BLOB-объектов Azure. За этим следует опрос и развертывание этих конфигураций на основе извлечения в кластер с помощью оператора.

Подключение между кластером и одним или несколькими исходными репозиториями включается путем развертывания расширения microsoft.flux в кластере. Свойства ресурса fluxConfiguration представляют, где и как ресурсы Kubernetes должны передаваться из исходного репозитория в кластер. Данные fluxConfiguration хранятся в неактивных данных в базе данных Azure Cosmos DB, чтобы обеспечить конфиденциальность данных.

Агент flux-config, работающий в кластере, отвечает за просмотр новых или обновленных ресурсов расширения fluxConfiguration в ресурсе Kubernetes с поддержкой Azure Arc, для развертывания приложений из исходного репозитория и распространения обновлений, внесенных в fluxConfiguration. Вы даже можете создать несколько ресурсов fluxConfiguration с помощью области пространства имен в одном кластере Kubernetes с поддержкой Azure Arc для достижения многотенантности.

Исходный репозиторий может содержать любые допустимые ресурсы Kubernetes, включая пространства имен, ConfigMaps, deployments и DaemonSets. Он также может содержать диаграммы Helm для развертывания приложений. Распространенные сценарии репозитория источников включают определение базовой конфигурации для организации, которая может включать общие роли и привязки RBAC, агенты мониторинга, агенты ведения журнала и службы на уровне кластера.

Кроме того, можно управлять более крупной коллекцией кластеров, развернутых в разнородных средах. Например, можно использовать один репозиторий, определяющий базовую конфигурацию для организации, а затем применить его к нескольким кластерам Kubernetes одновременно. Вы также можете развернуть приложения в кластере из нескольких исходных репозиториев.

Дополнительные сведения см. в статье "Развертывание приложений с помощью GitOps с Flux версии 2".

Топология, сеть и маршрутизация

Для работы агентов Azure Arc требуются следующие протоколы, порты и исходящие URL-адреса:

Конечная точка (DNS) Description
https://management.azure.com:443 Требуется для подключения агента к Azure и регистрации кластера.
https://[region].dp.kubernetesconfiguration.azure.com:443 Конечная точка плоскости данных для агента для отправки сведений о состоянии и получения сведений о конфигурации, где [регион] представляет регион Azure, на котором размещен экземпляр AKS.
https://docker.io:443 Требуется для извлечения образов контейнеров.
https://github.com:443, git://github.com:9418 Примеры репозиториев GitOps размещаются на сайте GitHub. Агент конфигурации требует подключения к указанной конечной точке Git.
https://login.microsoftonline.com:443 Требуется для извлечения и обновления маркеров Azure Resource Manager.
https://azurearcfork8s.azurecr.io:443 Требуется агентам Azure Arc для извлечения образов контейнеров.

Полный список URL-адресов в службах Azure Arc см. в статье о требованиях к сети Azure Arc.

Рекомендации

Эти рекомендации реализуют основные принципы платформы Azure Well-Architected Framework, которая является набором руководящих принципов, которые можно использовать для улучшения качества рабочей нагрузки. Дополнительные сведения см. в статье Microsoft Azure Well-Architected Framework.

Надежность

Надежность гарантирует, что ваше приложение позволит вам выполнить ваши обязательства перед клиентами. Дополнительные сведения см. в разделе "Обзор основы надежности".

  • В большинстве случаев расположение, выбранное при создании скрипта установки, должно быть регионом Azure, географически ближайшим к локальным ресурсам. Остальные данные хранятся в географическом регионе Azure, который содержит указанный регион, факт, который может повлиять на выбор региона, если у вас есть требования к месту расположения данных. Если сбой влияет на регион Azure, к которому подключен ваш компьютер, сбой не влияет на подключенный компьютер, но операции управления, использующие Azure, могут не завершиться. Для обеспечения устойчивости при региональном сбое лучше всего, если у вас несколько расположений, которые предоставляют географически избыточные службы, чтобы подключить компьютеры в каждом расположении к другому региону Azure. Сведения о доступных регионах см. в поддерживаемых регионах Для Kubernetes с поддержкой Azure Arc.
  • Необходимо убедиться, что службы, на которые ссылаются в разделе "Архитектура ", поддерживаются в регионе, в котором развертывается Azure Arc.

Безопасность

Безопасность обеспечивает гарантии от преднамеренного нападения и злоупотребления ценными данными и системами. Дополнительные сведения см. в разделе "Общие сведения о компоненте безопасности".

  • С помощью Azure RBAC можно управлять доступом к Kubernetes с поддержкой Azure Arc в azure и локальных средах, использующих удостоверения Microsoft Entra. Дополнительные сведения см. в статье "Использование Azure RBAC для авторизации Kubernetes".
  • Корпорация Майкрософт рекомендует использовать субъект-службу с ограниченными привилегиями для подключения кластеров Kubernetes к Azure Arc. Эта практика полезна в конвейерах CI/CD, таких как Azure Pipelines и GitHub Actions. Дополнительные сведения см. в статье Создание подключения субъекта-службы с поддержкой Azure Arc.
  • Чтобы упростить управление субъектом-службой, можно использовать управляемые удостоверения в AKS. Однако кластеры должны создаваться с помощью управляемого удостоверения, а существующие кластеры (включая Azure и локальные кластеры) нельзя перенести на управляемые удостоверения. Дополнительные сведения см. в статье Использование управляемых удостоверений в службе Kubernetes Azure.

Оптимизация затрат

Оптимизация затрат заключается в поиске способов уменьшения ненужных расходов и повышения эффективности работы. Дополнительные сведения см. в разделе Обзор критерия "Оптимизация затрат".

Общие рекомендации по затратам описаны в разделе "Принципы оптимизации затрат" в Microsoft Azure Well-Architected Framework.

Эффективность работы

Оперативное превосходство охватывает процессы операций, которые развертывают приложение и продолжают работать в рабочей среде. Дополнительные сведения см. в разделе "Общие сведения о принципах эффективности работы".

  • Перед настройкой кластеров Kubernetes с поддержкой Azure Arc просмотрите ограничения подписки Azure Resource Manager и ограничения группы ресурсов, чтобы спланировать количество кластеров.
  • Используйте Helm, средство упаковки с открытым кодом, чтобы установить жизненный цикл приложений Kubernetes и управлять ими. Как и диспетчеры пакетов Linux, такие как APT и Yum, используют Helm для управления диаграммами Kubernetes, которые являются пакетами предварительно настроенных ресурсов Kubernetes.

Соавторы

Эта статья поддерживается корпорацией Майкрософт. Первоначально он был написан следующими участниками.

Автор субъекта:

Чтобы просмотреть недоступные профили LinkedIn, войдите в LinkedIn.

Следующие шаги

Связанные гибридные рекомендации:

Связанные архитектуры: