Краткое руководство. Развертывание автоматического кластера Служба Azure Kubernetes (AKS) (предварительная версия)

Область применения: ✔️ AKS Automatic (предварительная версия)

Служба Azure Kubernetes (AKS) Automatic (предварительная версия) предоставляет самый простой управляемый интерфейс Kubernetes для разработчиков, инженеров DevOps и инженеров платформы. Идеально подходит для современных приложений ИИ, AKS Automatic автоматизирует настройку и операции кластера AKS и внедряет конфигурации рекомендаций. Пользователи любого уровня навыков могут воспользоваться преимуществами безопасности, производительности и зависимости AKS Automatic для своих приложений.

Из этого краткого руководства вы узнаете:

  • Развертывание автоматического кластера AKS.
  • Запустите пример мультиконтейнерного приложения с группой микрослужб и веб-интерфейсов с имитацией сценария розничной торговли.

Подготовка к работе

В этом руководстве предполагается, что у вас есть некоторое представление о функциях Kubernetes. Дополнительные сведения см. в статье Ключевые концепции Kubernetes для службы Azure Kubernetes (AKS).

  • Используйте среду Bash в Azure Cloud Shell. Дополнительные сведения см . в кратком руководстве по Bash в Azure Cloud Shell.

  • Если вы предпочитаете выполнять справочные команды CLI локально, установите Azure CLI. Если вы работаете в Windows или macOS, Azure CLI можно запустить в контейнере Docker. Дополнительные сведения см. в статье Как запустить Azure CLI в контейнере Docker.

    • Если вы используете локальную установку, выполните вход в Azure CLI с помощью команды az login. Чтобы выполнить аутентификацию, следуйте инструкциям в окне терминала. Сведения о других возможностях, доступных при входе, см. в статье Вход с помощью Azure CLI.

    • Установите расширение Azure CLI при первом использовании, когда появится соответствующий запрос. Дополнительные сведения о расширениях см. в статье Использование расширений с Azure CLI.

    • Выполните команду az version, чтобы узнать установленную версию и зависимые библиотеки. Чтобы обновиться до последней версии, выполните команду az upgrade.

  • Для этой статьи требуется версия 2.57.0 или более поздняя версия Azure CLI. Если вы используете Azure Cloud Shell, последняя версия уже установлена там.

  • Для этой статьи требуется aks-preview расширение Azure CLI версии 3.0.0b13 или более поздней.

  • Если у вас несколько подписок Azure, выберите соответствующий идентификатор подписки, в котором необходимо выставлять счета за ресурсы с помощью команды az account set .

  • Зарегистрируйте функцию в подписке AutomaticSKUPreview Azure.

  • Удостоверение, создающего кластер, также должно иметь следующие разрешения для подписки:

    • Microsoft.Authorization/policyAssignments/write
    • Microsoft.Authorization/policyAssignments/read

Внимание

Убедитесь, что у вашей подписки есть квота на 24 виртуальных ЦП Standard_DS4_v2 виртуальной машины для региона, в котором выполняется развертывание кластера. Вы можете просматривать квоты для определенных семейств виртуальных машин и отправлять запросы на увеличение квоты с помощью портал Azure. PNG

  • Чтобы развернуть Bicep-файл, необходимо написать доступ к ресурсам, создаваемым и доступом ко всем операциям с типом Microsoft.Resources/deployments ресурса. Например, для создания виртуальной машины требуются Microsoft.Compute/virtualMachines/write и Microsoft.Resources/deployments/* разрешения. Список ролей и разрешений см. в статье Встроенные роли Azure.

Установка расширения Azure CLI для aks-preview

Внимание

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

Чтобы установить расширение aks-preview, выполните следующую команду:

az extension add --name aks-preview

Выполните следующую команду, чтобы обновить до последней версии выпущенного расширения:

az extension update --name aks-preview

Регистрация флагов компонентов

Чтобы использовать AKS Automatic в предварительной версии, необходимо зарегистрировать флаги компонентов для других необходимых функций. Зарегистрируйте следующие флаги с помощью команды az feature register .

az feature register --namespace Microsoft.ContainerService --name EnableAPIServerVnetIntegrationPreview
az feature register --namespace Microsoft.ContainerService --name NRGLockdownPreview
az feature register --namespace Microsoft.ContainerService --name SafeguardsPreview
az feature register --namespace Microsoft.ContainerService --name NodeAutoProvisioningPreview
az feature register --namespace Microsoft.ContainerService --name DisableSSHPreview
az feature register --namespace Microsoft.ContainerService --name AutomaticSKUPreview

Проверьте состояние регистрации с помощью команды az feature show . Для отображения состояния зарегистрировано несколько минут:

az feature show --namespace Microsoft.ContainerService --name AutomaticSKUPreview

Когда состояние отражает зарегистрировано, обновите регистрацию поставщика ресурсов Microsoft.ContainerService с помощью команды az provider register:

az provider register --namespace Microsoft.ContainerService

Создание или изменение группы ресурсов

Группа ресурсов Azure — это логическая группа, в которой развертываются и управляются ресурсы Azure.

В следующем примере создается группа ресурсов с именем myResourceGroup в расположении eastus.

Создайте группу ресурсов с помощью команды az group create.

az group create --name myResourceGroup --location eastus

Следующий пример выходных данных напоминает успешное создание группы ресурсов:

{
  "id": "/subscriptions/<guid>/resourceGroups/myResourceGroup",
  "location": "eastus",
  "managedBy": null,
  "name": "myResourceGroup",
  "properties": {
    "provisioningState": "Succeeded"
  },
  "tags": null
}

Создание автоматического кластера AKS

Чтобы создать автоматический кластер AKS, используйте команду az aks create . В следующем примере создается кластер с именем myAKSAutomaticCluster с включенной интеграцией Managed Prometheus и Container Insights.

az aks create \
    --resource-group myResourceGroup \
    --name myAKSAutomaticCluster \
    --sku automatic

Через несколько минут выполнение команды завершается и отображаются сведения о кластере в формате JSON.

Подключение к кластеру

Кластером Kubernetes можно управлять при помощи kubectl клиента командной строки Kubernetes. Если вы используете Azure Cloud Shell, kubectl уже установлен. Чтобы установить kubectl локально, выполните команду az aks install-cli . Автоматические кластеры AKS настраиваются с идентификатором Microsoft Entra для управления доступом на основе ролей Kubernetes (RBAC). При создании кластера с помощью Azure CLI пользователь назначает встроенные роли.Azure Kubernetes Service RBAC Cluster Admin

Настройте в kubectl подключение к кластеру Kubernetes, выполнив команду az aks get-credentials. Эта команда скачивает учетные данные и настраивает интерфейс командной строки Kubernetes для их использования.

az aks get-credentials --resource-group myResourceGroup --name myAKSAutomaticCluster

Проверьте подключение к кластеру, выполнив команду kubectl get. Эта команда возвращает список узлов кластера.

kubectl get nodes

В следующем примере выходных данных показано, как вам будет предложено войти в систему.

To sign in, use a web browser to open the page https://microsoft.com/devicelogin and enter the code AAAAAAAAA to authenticate.

После входа в систему в следующем примере выходных данных отображаются пулы управляемых узлов, созданные на предыдущих шагах. Убедитесь, что состояние узла готово.

NAME                                STATUS   ROLES   AGE     VERSION
aks-default-f8vj2                   Ready    agent   2m26s   v1.28.5
aks-nodepool1-13213685-vmss000000   Ready    agent   2m26s   v1.28.5
aks-nodepool1-13213685-vmss000001   Ready    agent   2m26s   v1.28.5
aks-nodepool1-13213685-vmss000002   Ready    agent   2m26s   v1.28.5

Создание автоматического кластера Kubernetes

  1. Чтобы создать автоматический кластер AKS, найдите службы Kubernetes и выберите кластер Automatic Kubernetes в раскрывающемся списке.

    Снимок экрана: точка входа для создания автоматического кластера AKS в портал Azure.

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

    Снимок экрана: вкладка

    Если предварительные требования не выполнены, и для подписки требуется регистрация флагов предварительной версии, в поле "Подписка" появится ошибка:

    Снимок экрана: ошибка, показанная, если у подписки нет флагов предварительной версии, зарегистрированных при создании автоматического кластера AKS в портал Azure.

  3. На вкладке "Мониторинг" выберите конфигурации мониторинга из Azure Monitor, Managed Prometheus, Managed Grafana и (или) настройте оповещения. Добавьте теги (необязательно) и перейдите к созданию кластера.

    Снимок экрана: вкладка

  4. Начните с настройки первого приложения из GitHub и настройте конвейер автоматического развертывания.

    Снимок экрана: вкладка

Подключение к кластеру

Кластером Kubernetes можно управлять при помощи kubectl клиента командной строки Kubernetes. Если вы используете Azure Cloud Shell, kubectl уже установлен. Чтобы установить kubectl локально, выполните команду az aks install-cli . Автоматические кластеры AKS настраиваются с идентификатором Microsoft Entra для управления доступом на основе ролей Kubernetes (RBAC). При создании кластера с помощью портал Azure пользователь назначает встроенные роли.Azure Kubernetes Service RBAC Cluster Admin

Настройте в kubectl подключение к кластеру Kubernetes, выполнив команду az aks get-credentials. Эта команда скачивает учетные данные и настраивает интерфейс командной строки Kubernetes для их использования.

az aks get-credentials --resource-group myResourceGroup --name myAKSAutomaticCluster

Проверьте подключение к кластеру, выполнив команду kubectl get. Эта команда возвращает список узлов кластера.

kubectl get nodes

В следующем примере выходных данных показано, как вам будет предложено войти в систему.

To sign in, use a web browser to open the page https://microsoft.com/devicelogin and enter the code AAAAAAAAA to authenticate.

После входа в систему в следующем примере выходных данных отображаются пулы управляемых узлов, созданные на предыдущих шагах. Убедитесь, что состояние узла готово.

NAME                                STATUS   ROLES   AGE     VERSION
aks-default-f8vj2                   Ready    agent   2m26s   v1.28.5
aks-nodepool1-13213685-vmss000000   Ready    agent   2m26s   v1.28.5
aks-nodepool1-13213685-vmss000001   Ready    agent   2m26s   v1.28.5
aks-nodepool1-13213685-vmss000002   Ready    agent   2m26s   v1.28.5

Создание или изменение группы ресурсов

Группа ресурсов Azure — это логическая группа, в которой развертываются и управляются ресурсы Azure. При создании группы ресурсов вам будет предложено указать расположение. Это расположение хранилища метаданных группы ресурсов и место, где ресурсы выполняются в Azure, если вы не указываете другой регион во время создания ресурса.

В следующем примере создается группа ресурсов с именем myResourceGroup в расположении eastus.

Создайте группу ресурсов с помощью команды az group create.

az group create --name myResourceGroup --location eastus

Следующий пример выходных данных напоминает успешное создание группы ресурсов:

{
  "id": "/subscriptions/<guid>/resourceGroups/myResourceGroup",
  "location": "eastus",
  "managedBy": null,
  "name": "myResourceGroup",
  "properties": {
    "provisioningState": "Succeeded"
  },
  "tags": null
}

Проверка BICEP-файла

Этот файл Bicep определяет автоматический кластер AKS. Хотя в предварительной версии необходимо указать профиль пула агентов nodepool системы.

@description('The name of the managed cluster resource.')
param clusterName string = 'myAKSAutomaticCluster'

@description('The location of the managed cluster resource.')
param location string = resourceGroup().location

resource aks 'Microsoft.ContainerService/managedClusters@2024-03-02-preview' = {
  name: clusterName
  location: location  
  sku: {
		name: 'Automatic'
  		tier: 'Standard'
  }
  properties: {
    agentPoolProfiles: [
      {
        name: 'systempool'
        count: 3
        vmSize: 'Standard_DS4_v2'
        osType: 'Linux'
        mode: 'System'
      }
    ]
  }
  identity: {
    type: 'SystemAssigned'
  }
}

Дополнительные сведения о ресурсе, определенном в файле Bicep, см. в справочнике по Microsoft.ContainerService/managedClusters .

Развертывание BICEP-файла

  1. Сохраните файл Bicep с именем main.bicep на локальном компьютере.

    Внимание

    Файл Bicep задает clusterName параметр строке myAKSAutomaticCluster. Если вы хотите использовать другое имя кластера, обязательно обновите строку до предпочтительного имени кластера перед сохранением файла на компьютере.

  2. Разверните Bicep-файл с помощью Azure CLI.

    az deployment group create --resource-group myResourceGroup --template-file main.bicep
    

    Создание кластера AKS займет несколько минут. Дождитесь успешного развертывания кластера, прежде чем перейти к следующему шагу.

Подключение к кластеру

Кластером Kubernetes можно управлять при помощи kubectl клиента командной строки Kubernetes. Если вы используете Azure Cloud Shell, kubectl уже установлен. Чтобы установить kubectl локально, выполните команду az aks install-cli . Автоматические кластеры AKS настраиваются с идентификатором Microsoft Entra для управления доступом на основе ролей Kubernetes (RBAC). При создании кластера с помощью Bicep необходимо назначить одну из встроенных ролей, таких как Azure Kubernetes Service RBAC Reader, или Azure Kubernetes Service RBAC WriterAzure Kubernetes Service RBAC AdminAzure Kubernetes Service RBAC Cluster Admin пользователям, в пределах кластера или определенного пространства имен. Кроме того, убедитесь, что у пользователей есть Azure Kubernetes Service Cluster User встроенная роль для выполнения az aks get-credentials, а затем получите kubeconfig кластера AKS с помощью az aks get-credentials команды.

Настройте в kubectl подключение к кластеру Kubernetes, выполнив команду az aks get-credentials. Эта команда скачивает учетные данные и настраивает интерфейс командной строки Kubernetes для их использования.

az aks get-credentials --resource-group myResourceGroup --name

Проверьте подключение к кластеру, выполнив команду kubectl get. Эта команда возвращает список узлов кластера.

kubectl get nodes

В следующем примере выходных данных показано, как вам будет предложено войти в систему.

To sign in, use a web browser to open the page https://microsoft.com/devicelogin and enter the code AAAAAAAAA to authenticate.

После входа в систему в следующем примере выходных данных отображаются пулы управляемых узлов, созданные на предыдущих шагах. Убедитесь, что состояние узла готово.

NAME                                STATUS   ROLES   AGE     VERSION
aks-default-f8vj2                   Ready    agent   2m26s   v1.28.5
aks-nodepool1-13213685-vmss000000   Ready    agent   2m26s   v1.28.5
aks-nodepool1-13213685-vmss000001   Ready    agent   2m26s   v1.28.5
aks-nodepool1-13213685-vmss000002   Ready    agent   2m26s   v1.28.5

Развертывание приложения

Чтобы развернуть приложение, используйте файл манифеста для создания всех объектов, необходимых для запуска приложения AKS Store. Файл манифеста Kubernetes используется для определения требуемого состояния кластера, например выполняемых в нем образов контейнеров. Манифест включает следующие развертывания и службы Kubernetes:

Снимок экрана: пример архитектуры Магазина Azure.

  • Интерфейс магазина: веб-приложение для пользователей для просмотра продуктов и размещения заказов.
  • Служба продуктов: отображает сведения о продукте.
  • Служба заказов: помещает заказы.
  • Rabbit MQ: очередь сообщений для очереди заказов.

Примечание.

Не рекомендуется запускать контейнеры с отслеживанием состояния, такие как Rabbit MQ, без постоянного хранения для рабочей среды. Они используются здесь для простоты, но мы рекомендуем использовать управляемые службы, такие как Azure Cosmos DB или Служебная шина Azure.

  1. Создайте пространство aks-store-demo имен для развертывания ресурсов Kubernetes в.

    kubectl create ns aks-store-demo
    
  2. Разверните приложение с помощью команды kubectl применить команду в aks-store-demo пространстве имен. Файл YAML, определяющий развертывание, находится на сайте GitHub.

    kubectl apply -n aks-store-demo -f https://raw.githubusercontent.com/Azure-Samples/aks-store-demo/main/aks-store-ingress-quickstart.yaml
    

    В следующем примере выходных данных показаны развертывания и службы:

    statefulset.apps/rabbitmq created
    configmap/rabbitmq-enabled-plugins created
    service/rabbitmq created
    deployment.apps/order-service created
    service/order-service created
    deployment.apps/product-service created
    service/product-service created
    deployment.apps/store-front created
    service/store-front created
    ingress/store-front created
    

Тестирование приложения

При запуске приложения Служба Kubernetes предоставляет внешний интерфейс приложения в Интернете. Процесс создания может занять несколько минут.

  1. Проверьте состояние развернутых модулей pod с помощью команды kubectl get pods . Прежде чем продолжить, убедитесь, что все модули pod находятся Running в процессе. Если это первая развернутая рабочая нагрузка, может потребоваться несколько минут для автоматической подготовки узла для создания пула узлов для запуска модулей pod.

    kubectl get pods -n aks-store-demo
    
  2. Проверьте общедоступный IP-адрес для приложения store-front. Ход выполнения можно отслеживать с помощью команды kubectl get service с аргументом --watch.

    kubectl get ingress store-front -n aks-store-demo --watch
    

    Выходные данные ADDRESS для store-front службы изначально отображаются пустыми:

    NAME          CLASS                                HOSTS   ADDRESS        PORTS   AGE
    store-front   webapprouting.kubernetes.azure.com   *                      80      12m
    
  3. После изменения АДРЕСА с пустого на фактический общедоступный IP-адрес используйте CTRL-C для остановки kubectl процесса наблюдения.

    В следующем примере выходных данных показан допустимый общедоступный IP-адрес, назначенный службе:

    NAME          CLASS                                HOSTS   ADDRESS        PORTS   AGE
    store-front   webapprouting.kubernetes.azure.com   *       4.255.22.196   80      12m
    
  4. Откройте веб-браузер на внешний IP-адрес входящего трафика, чтобы увидеть приложение Магазина Azure в действии.

    Снимок экрана: пример приложения AKS Store.

Удаление кластера

Если вы не планируете использовать учебник AKS, очистите ненужные ресурсы, чтобы избежать расходов Azure. Выполните команду az group delete, чтобы удалить группу ресурсов, службу контейнеров и все связанные ресурсы.

az group delete --name myResourceGroup --yes --no-wait

Примечание.

Кластер AKS был создан с управляемым удостоверением, назначенным системой, который является параметром удостоверения по умолчанию, используемым в этом кратком руководстве. Платформа управляет этим удостоверением, поэтому удалить его вручную не нужно.

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

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

Чтобы узнать больше об AKS Automatic, перейдите к обзору.