Руководство. Включение приложений контейнеров Azure в Kubernetes с поддержкой Azure Arc (предварительная версия)
С помощью кластеров Kubernetes с поддержкой Azure Arc вы можете создать пользовательское расположение с поддержкой контейнеров в локальном или облачном кластере Kubernetes для развертывания приложений контейнеров Azure, как и в любом другом регионе.
В этом руководстве показано, как включить приложения контейнеров Azure в кластере Kubernetes с поддержкой Arc. Изучив данный учебник, вы научитесь:
- Создайте подключенный кластер.
- Создадите рабочую область Log Analytics.
- Установите расширение "Приложения контейнеров".
- Создайте пользовательское расположение.
- Создайте подключенную среду для приложений контейнеров Azure.
Примечание.
Во время предварительной версии приложения контейнеров Azure в Arc не поддерживаются в рабочих конфигурациях. В этой статье приведен пример конфигурации только для целей оценки.
В этом учебнике используется Служба Azure Kubernetes (AKS) для предоставления конкретных инструкций по настройке среды с нуля. Однако для рабочей нагрузки может не потребоваться включить Azure Arc в кластере AKS, так как он уже управляется в Azure.
Необходимые компоненты
- Учетная запись Azure с активной подпиской.
- Если у вас нет учетной записи, вы можете создать ее бесплатно.
- Установите интерфейс командной строки Azure.
- Доступ к общедоступному или частному реестру контейнеров, например к Реестр контейнеров Azure.
- Просмотрите требования и ограничения общедоступной предварительной версии. Особое значение имеют требования к кластеру.
Настройка
Установите следующие расширения Azure CLI.
az extension add --name connectedk8s --upgrade --yes
az extension add --name k8s-extension --upgrade --yes
az extension add --name customlocation --upgrade --yes
az extension add --name containerapp --upgrade --yes
Зарегистрируйте необходимые пространства имен.
az provider register --namespace Microsoft.ExtendedLocation --wait
az provider register --namespace Microsoft.KubernetesConfiguration --wait
az provider register --namespace Microsoft.App --wait
az provider register --namespace Microsoft.OperationalInsights --wait
Задайте переменные среды на основе развертывания кластера Kubernetes.
GROUP_NAME="my-arc-cluster-group"
AKS_CLUSTER_GROUP_NAME="my-aks-cluster-group"
AKS_NAME="my-aks-cluster"
LOCATION="eastus"
Создание подключенного кластера
Следующие шаги помогут вам приступить к работе со службой, но для рабочих развертываний они должны рассматриваться как иллюстрирующие, а не предписательные. Общие инструкции по созданию кластера Kubernetes с поддержкой Azure Arc см. в разделе Краткое руководство. Подключение существующего кластера Kubernetes к Azure Arc.
Создайте кластер в Служба Azure Kubernetes.
az group create --name $AKS_CLUSTER_GROUP_NAME --location $LOCATION az aks create \ --resource-group $AKS_CLUSTER_GROUP_NAME \ --name $AKS_NAME \ --enable-aad \ --generate-ssh-keys
Получите файл kubeconfig и проверьте подключение к кластеру. По умолчанию файл kubeconfig сохраняется в каталог
~/.kube/config
.az aks get-credentials --resource-group $AKS_CLUSTER_GROUP_NAME --name $AKS_NAME --admin kubectl get ns
Создайте группу ресурсов для размещения ресурсов Azure Arc.
az group create --name $GROUP_NAME --location $LOCATION
Подключите созданный кластер к службе Azure Arc.
CLUSTER_NAME="${GROUP_NAME}-cluster" # Name of the connected cluster resource az connectedk8s connect --resource-group $GROUP_NAME --name $CLUSTER_NAME
Проверьте подключение с помощью следующей команды. Она должна отобразить для свойства
provisioningState
значениеSucceeded
. Если это не так, через минуту выполните эту же команду еще раз.az connectedk8s show --resource-group $GROUP_NAME --name $CLUSTER_NAME
Создание рабочей области Log Analytics
Рабочая область Log Analytics предоставляет доступ к журналам для приложений контейнеров, работающих в кластере Kubernetes с поддержкой Azure Arc. Рабочая область Log Analytics является необязательной, но рекомендуется.
Создадите рабочую область Log Analytics.
WORKSPACE_NAME="$GROUP_NAME-workspace" # Name of the Log Analytics workspace az monitor log-analytics workspace create \ --resource-group $GROUP_NAME \ --workspace-name $WORKSPACE_NAME
Выполните следующие команды, чтобы получить закодированные значения ИД рабочей области и общего ключа для существующей рабочей области Log Analytics. Они потребуются на следующем шаге.
LOG_ANALYTICS_WORKSPACE_ID=$(az monitor log-analytics workspace show \ --resource-group $GROUP_NAME \ --workspace-name $WORKSPACE_NAME \ --query customerId \ --output tsv) LOG_ANALYTICS_WORKSPACE_ID_ENC=$(printf %s $LOG_ANALYTICS_WORKSPACE_ID | base64 -w0) # Needed for the next step LOG_ANALYTICS_KEY=$(az monitor log-analytics workspace get-shared-keys \ --resource-group $GROUP_NAME \ --workspace-name $WORKSPACE_NAME \ --query primarySharedKey \ --output tsv) LOG_ANALYTICS_KEY_ENC=$(printf %s $LOG_ANALYTICS_KEY | base64 -w0) # Needed for the next step
Установка расширения "Приложения контейнеров"
Внимание
При развертывании в AKS в Azure Local убедитесь, что вы настроили HAProxy или настраиваемую подсистему балансировки нагрузки перед попыткой установить расширение.
Задайте для следующих переменных среды требуемое имя расширения "Приложения контейнеров", пространство имен кластера, в котором должны быть подготовлены ресурсы, и имя подключенной среды для приложений контейнеров Azure. Выберите уникальное имя.
<connected-environment-name>
Имя подключенной среды будет частью доменного имени приложения, которое вы создадите в подключенной среде для приложений контейнеров Azure.EXTENSION_NAME="appenv-ext" NAMESPACE="appplat-ns" CONNECTED_ENVIRONMENT_NAME="<connected-environment-name>"
Установите расширение "Приложения контейнеров" в кластер, подключенный к Azure Arc, с включенным Log Analytics. Log Analytics нельзя добавить в расширение позже.
az k8s-extension create \ --resource-group $GROUP_NAME \ --name $EXTENSION_NAME \ --cluster-type connectedClusters \ --cluster-name $CLUSTER_NAME \ --extension-type 'Microsoft.App.Environment' \ --release-train stable \ --auto-upgrade-minor-version true \ --scope cluster \ --release-namespace $NAMESPACE \ --configuration-settings "Microsoft.CustomLocation.ServiceAccount=default" \ --configuration-settings "appsNamespace=${NAMESPACE}" \ --configuration-settings "clusterName=${CONNECTED_ENVIRONMENT_NAME}" \ --configuration-settings "envoy.annotations.service.beta.kubernetes.io/azure-load-balancer-resource-group=${AKS_CLUSTER_GROUP_NAME}" \ --configuration-settings "logProcessor.appLogs.destination=log-analytics" \ --configuration-protected-settings "logProcessor.appLogs.logAnalyticsConfig.customerId=${LOG_ANALYTICS_WORKSPACE_ID_ENC}" \ --configuration-protected-settings "logProcessor.appLogs.logAnalyticsConfig.sharedKey=${LOG_ANALYTICS_KEY_ENC}"
Примечание.
Чтобы установить расширение без интеграции с Log Analytics, удалите из команды последние три параметра
--configuration-settings
.В следующей таблице описаны разные параметры
--configuration-settings
, которые можно указать при выполнении команды:Параметр Описание Microsoft.CustomLocation.ServiceAccount
Учетная запись службы, созданная для пользовательского расположения. Рекомендуется задать значение default
.appsNamespace
Пространство имен, используемое для создания определений и редакций приложения. Он должен соответствовать пространству имен выпуска расширения. clusterName
Имя среды Kubernetes расширения "Приложения контейнеров", которое будет создано для этого расширения. logProcessor.appLogs.destination
Необязательно. Назначение для журналов приложений. Принимает значение log-analytics
илиnone
. Если выбрано значение «Нет», журналы платформы отключаются.logProcessor.appLogs.logAnalyticsConfig.customerId
Является обязательным, если logProcessor.appLogs.destination
имеет значениеlog-analytics
. ИД рабочей области Log Analytics в кодировке Base64. Этот параметр следует настроить в формате защищенного параметра.logProcessor.appLogs.logAnalyticsConfig.sharedKey
Является обязательным, если logProcessor.appLogs.destination
имеет значениеlog-analytics
. Общий ключ рабочей области Log Analytics в кодировке Base64. Этот параметр следует настроить в формате защищенного параметра.envoy.annotations.service.beta.kubernetes.io/azure-load-balancer-resource-group
Имя группы ресурсов, в которой размещается кластер Службы Azure Kubernetes. Является допустимым и обязательным только в том случае, если базовый кластер относится к Службе Azure Kubernetes. Сохраните
id
свойство расширения "Приложения контейнеров" для дальнейшего использования.EXTENSION_ID=$(az k8s-extension show \ --cluster-type connectedClusters \ --cluster-name $CLUSTER_NAME \ --resource-group $GROUP_NAME \ --name $EXTENSION_NAME \ --query id \ --output tsv)
Дождитесь полного завершения установки расширения, прежде чем продолжать работу. Вы можете дождаться сеанса терминала, пока он не завершится, выполнив следующую команду:
az resource wait --ids $EXTENSION_ID --custom "properties.provisioningState!='Pending'" --api-version "2020-07-01-preview"
С помощью kubectl
вы можете получить список pod, созданных в кластере Kubernetes:
kubectl get pods -n $NAMESPACE
Дополнительные сведения об этих модулях pod и их роли в системе см. в обзоре Azure Arc.
Создание пользовательского расположения
Настраиваемое расположение — это расположение Azure, которое назначается подключенной среде приложений контейнеров Azure.
Задайте для следующих переменных среды требуемое имя настраиваемого расположения и идентификатор кластера, подключенного к Azure Arc.
CUSTOM_LOCATION_NAME="my-custom-location" # Name of the custom location CONNECTED_CLUSTER_ID=$(az connectedk8s show --resource-group $GROUP_NAME --name $CLUSTER_NAME --query id --output tsv)
Создайте пользовательское расположение:
az customlocation create \ --resource-group $GROUP_NAME \ --name $CUSTOM_LOCATION_NAME \ --host-resource-id $CONNECTED_CLUSTER_ID \ --namespace $NAMESPACE \ --cluster-extension-ids $EXTENSION_ID
Примечание.
При возникновении проблем с созданием настраиваемого расположения в кластере может потребоваться включить функцию пользовательского расположения в кластере. Это необходимо, если войдите в ИНТЕРФЕЙС командной строки с помощью субъекта-службы или если вы вошли с помощью пользователя Microsoft Entra с ограниченными разрешениями на ресурс кластера.
Убедитесь, что пользовательское расположение успешно создано, выполнив следующую команду. В ее выходных данных свойство
provisioningState
должно иметь значениеSucceeded
. Если нет, повторите команду через минуту.az customlocation show --resource-group $GROUP_NAME --name $CUSTOM_LOCATION_NAME
Сохраните ИД настраиваемого расположения, которое нам потребуется на следующем шаге.
CUSTOM_LOCATION_ID=$(az customlocation show \ --resource-group $GROUP_NAME \ --name $CUSTOM_LOCATION_NAME \ --query id \ --output tsv)
Создание подключенной среды для приложений контейнеров Azure
Прежде чем приступить к созданию приложений в пользовательском расположении, вам потребуется подключенная среда для приложений контейнеров Azure.
Создайте подключенную среду для приложений контейнеров:
az containerapp connected-env create \ --resource-group $GROUP_NAME \ --name $CONNECTED_ENVIRONMENT_NAME \ --custom-location $CUSTOM_LOCATION_ID \ --location $LOCATION
Убедитесь, что подключенная среда "Приложения контейнеров" успешно создана с помощью следующей команды. В ее выходных данных свойство
provisioningState
должно иметь значениеSucceeded
. Если это не так, через минуту снова выполните эту команду.az containerapp connected-env show --resource-group $GROUP_NAME --name $CONNECTED_ENVIRONMENT_NAME