Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Это важно
Служба приложений Azure в Kubernetes с поддержкой Arc будет прекращена 31 марта 2026 г. С 30 сентября 2025 г. клиенты больше не смогут установить расширение. Мы просим вас перейти на другие решения, такие как Azure Container Apps, в Kubernetes с поддержкой Arc, и миграция также позволяет воспользоваться преимуществами Logic Apps Гибрид для интеграционных рабочих нагрузок.
Если у вас есть кластер Kubernetes с поддержкой Azure Arc, вы можете на его основе создать пользовательское расположение с поддержкой Службы приложений и развернуть в нем веб-приложения, приложения-функции и приложения логики.
Кластер Kubernetes с поддержкой Azure Arc позволяет сделать ваш локальный или облачный кластер Kubernetes видимым для Службы приложений, Функций и Logic Apps в Azure. Вы можете создать приложение и выполнить его развертывание, как в обычном регионе Azure.
Предварительные условия
- Если у вас нет учетной записи Azure, зарегистрируйтесь прямо сейчас, чтобы получить бесплатную пробную учетную запись.
- Просмотрите требования и ограничения общедоступной предварительной версии. Особое значение имеют требования к кластеру.
Добавление расширений Azure CLI
Откройте среду Bash в Azure Cloud Shell.
Так как эти команды интерфейса командной строки пока не входят в основной набор, добавьте их с помощью следующих команд.
az extension add --upgrade --yes --name connectedk8s
az extension add --upgrade --yes --name k8s-extension
az extension add --upgrade --yes --name customlocation
az provider register --namespace Microsoft.ExtendedLocation --wait
az provider register --namespace Microsoft.Web --wait
az provider register --namespace Microsoft.KubernetesConfiguration --wait
az extension remove --name appservice-kube
az extension add --upgrade --yes --name appservice-kube
Создание подключенного кластера
Примечание.
В этом учебнике используется Служба Azure Kubernetes (AKS) для предоставления конкретных инструкций по настройке среды с нуля. Однако для рабочей нагрузки в рабочей среде вы, скорее всего, не захотите включать Azure Arc в кластере AKS, так как он уже управляется в Azure. Шаги помогут вам приступить к пониманию службы, но для рабочих развертываний они должны рассматриваться как иллюстрирующие, а не предписательные. Общие инструкции по созданию кластера Kubernetes с поддержкой Azure Arc см. в разделе Краткое руководство. Подключение существующего кластера Kubernetes к Azure Arc.
Чтобы создать подключенный кластер, выполните приведенные действия.
Создайте в Службе Azure Kubernetes кластер с общедоступным IP-адресом. Замените
<group-name>произвольным именем для группы ресурсов.AKS_CLUSTER_GROUP_NAME="<group-name>" # Name of resource group for the AKS cluster AKS_NAME="${aksClusterGroupName}-aks" # Name of the AKS cluster RESOURCE_LOCATION="eastus" # "eastus" or "westeurope" az group create -g $AKS_CLUSTER_GROUP_NAME -l $RESOURCE_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. Замените
<group-name>произвольным именем для группы ресурсов.GROUP_NAME="<group-name>" # Name of resource group for the connected cluster az group create -g $GROUP_NAME -l $RESOURCE_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
Хотя для запуска Службы приложений в Azure Arc не требуется рабочая область Log Analytics, разработчики только через нее могут получать журналы приложений для своих приложений, работающих в кластере Kubernetes с поддержкой Azure Arc.
Для упрощения процесса создайте рабочую область прямо сейчас.
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
Установка расширения Службы приложений
Чтобы установить расширение службы приложений, выполните следующие действия.
Задайте в следующих переменных среды желаемые значения параметров: имя расширения Службы приложений, пространство имен кластера для размещения подготовленных ресурсов и имя среды Kubernetes для Службы приложений. Выберите уникальное имя
<kube-environment-name>, так как оно является частью доменного имени для приложения, созданного в среде Служба приложений Kubernetes.EXTENSION_NAME="appservice-ext" # Name of the App Service extension NAMESPACE="appservice-ns" # Namespace in your cluster to install the extension and provision resources KUBE_ENVIRONMENT_NAME="<kube-environment-name>" # Name of the App Service Kubernetes environment resourceУстановите расширение Службы приложений в подключенном кластере 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.Web.Appservice' \ --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=${KUBE_ENVIRONMENT_NAME}" \ --configuration-settings "keda.enabled=true" \ --configuration-settings "buildService.storageClassName=default" \ --configuration-settings "buildService.storageAccessMode=ReadWriteOnce" \ --configuration-settings "customConfigMap=${NAMESPACE}/kube-environment-config" \ --configuration-settings "envoy.annotations.service.beta.kubernetes.io/azure-load-balancer-resource-group=${aksClusterGroupName}" \ --configuration-settings "logProcessor.appLogs.destination=log-analytics" \ --config-protected-settings "logProcessor.appLogs.logAnalyticsConfig.customerId=${LOG_ANALYTICS_WORKSPACE_ID_ENC}" \ --config-protected-settings "logProcessor.appLogs.logAnalyticsConfig.sharedKey=${LOG_ANALYTICS_KEY_ENC}"Примечание.
Чтобы установить расширение без интеграции с Log Analytics, удалите из команды последние три параметра
--configuration-settings.В следующей таблице описаны разные параметры
--configuration-settings, которые можно указать при выполнении команды:Параметр Описание Microsoft.CustomLocation.ServiceAccountУчетная запись службы, которая должна быть создана для созданного пользовательского расположения. Мы рекомендуем указать здесь значение default.appsNamespaceПространство имен, в котором будут предоставляться определения приложений и pod. Оно должно совпадать с пространством имен для выпуска расширения. clusterNameНазвание среды Kubernetes службы приложений, созданной в связи с этим расширением. keda.enabledУказывает, нужно ли устанавливать KEDA в кластере Kubernetes. Принимает trueилиfalse.buildService.storageClassNameИмя класса хранилища для службы сборки, где будут храниться артефакты сборки. Значение defaultобозначает класс с именемdefault, а не любой класс, помеченный как default (по умолчанию). По умолчанию используется допустимый класс хранения для AKS и AKS в локальной среде Azure, но он не может быть для других дистрибутивов и платформ.buildService.storageAccessModeРежим доступа, используемый с именованным классом хранилища. Принимает ReadWriteOnceилиReadWriteMany.customConfigMapИмя карты конфигурации, которое будет установлено средой Kubernetes службы приложений. В настоящее время это должно быть <namespace>/kube-environment-config, заменяя<namespace>значениемappsNamespace.envoy.annotations.service.beta.kubernetes.io/azure-load-balancer-resource-groupИмя группы ресурсов, в которой размещается кластер Службы Azure Kubernetes. Является допустимым и обязательным только в том случае, если базовый кластер относится к Службе Azure 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. Этот параметр следует настроить в формате защищенного параметра.Сохраните свойство
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.installState!='Pending'" --api-version "2020-07-01-preview"
Вы можете использовать kubectl для просмотра подов, созданных в кластере Kubernetes.
kubectl get pods -n $NAMESPACE
Дополнительные сведения о pod и их роли в системе можно узнать в статье Pod, создаваемые расширением Службы приложений.
Создание пользовательского расположения
Пользовательское расположение в Azure позволяет назначить среду Kubernetes для Службы приложений.
Установите следующие переменные среды для нужного имени пользовательского расположения и ID подключенного кластера 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)
Создание среды Kubernetes для Службы приложений
Прежде чем приступить к созданию приложений в пользовательском расположении, вам нужно создать среду Kubernetes для Службы приложений.
Создайте среду Kubernetes для Службы приложений:
az appservice kube create \ --resource-group $GROUP_NAME \ --name $KUBE_ENVIRONMENT_NAME \ --custom-location $CUSTOM_LOCATION_IDУбедитесь, что среда Kubernetes для Службы приложений успешно создана, выполнив следующую команду. В ее выходных данных свойство
provisioningStateдолжно иметь значениеSucceeded. Если нет, выполните его снова через минуту.az appservice kube show --resource-group $GROUP_NAME --name $KUBE_ENVIRONMENT_NAME