Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
С помощью кластеров Kubernetes с поддержкой Azure Arc вы можете создать пользовательское расположение с поддержкой контейнеров в локальном или облачном кластере Kubernetes для развертывания приложений контейнеров Azure, как и в любом другом регионе.
В этом руководстве показано, как включить приложения контейнеров Azure в кластере Kubernetes с поддержкой Azure Arc. Изучив это руководство, вы:
- Создайте подключенный кластер.
- Создадите рабочую область Log Analytics.
- Установите расширение "Приложения контейнеров".
- Создайте пользовательское расположение.
- Создайте подключенную среду для приложений контейнеров 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 (AKS) и подключить его к 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 или настраиваемую подсистему балансировки нагрузки , прежде чем пытаться установить расширение. Можно также использовать az containerapp arc setup-core-dns --distro AksAzureLocal для настройки основного DNS для локальных контекстов.
Задайте для следующих переменных среды требуемое имя расширения "Приложения контейнеров", пространство имен кластера, в котором должны быть подготовлены ресурсы, и имя подключенной среды для приложений контейнеров 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 "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.Для кластеров, использующих пользовательскую подсистему балансировки нагрузки вместо стандартной подсистемы балансировки нагрузки AKS, после настройки подсистемы балансировки нагрузки укажите следующий параметр:
--configuration-settings "loadBalancerIp=<LOAD_BALANCER_INGRESS_IP>"Замените <LOAD_BALANCER_INGRESS_IP> фактическим IP-адресом входящего трафика, назначенным подсистеме балансировки нагрузки.
В следующей таблице описаны разные параметры
--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. Этот параметр следует настроить в формате защищенного параметра.loadBalancerIpIP-адрес входящего трафика подсистемы балансировки нагрузки. Сохраните
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 для просмотра подов в кластере 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Примечание.
При возникновении проблем с созданием настраиваемого расположения в кластере может потребоваться включить функцию пользовательского расположения в кластере. Включите эту функцию при входе в CLI (Командный интерфейс) с помощью учетной записи службы или пользователя 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