Поделиться через


Руководство. Включение приложений контейнеров Azure в Kubernetes с поддержкой Azure Arc

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

В этом руководстве показано, как включить приложения контейнеров Azure в кластере Kubernetes с поддержкой Azure Arc. Изучив это руководство, вы:

  • Создайте подключенный кластер.
  • Создадите рабочую область Log Analytics.
  • Установите расширение "Приложения контейнеров".
  • Создайте пользовательское расположение.
  • Создайте подключенную среду для приложений контейнеров 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:

  1. Создайте кластер в Служба 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
    
  2. Получите файл kubeconfig и проверьте подключение к кластеру. По умолчанию файл kubeconfig сохраняется в каталог ~/.kube/config.

    az aks get-credentials --resource-group $AKS_CLUSTER_GROUP_NAME --name $AKS_NAME --admin
    
    kubectl get ns
    
  3. Создайте группу ресурсов для размещения ресурсов Azure Arc.

    az group create --name $GROUP_NAME --location $LOCATION
    
  4. Подключите созданный кластер к службе Azure Arc.

    CLUSTER_NAME="${GROUP_NAME}-cluster" # Name of the connected cluster resource
    
    az connectedk8s connect --resource-group $GROUP_NAME --name $CLUSTER_NAME
    
  5. Проверьте подключение с помощью следующей команды. Она должна отобразить для свойства provisioningState значение Succeeded. Если это не так, через минуту выполните эту же команду еще раз.

    az connectedk8s show --resource-group $GROUP_NAME --name $CLUSTER_NAME
    

Создание рабочей области Log Analytics

Рабочая область Log Analytics предоставляет доступ к журналам для приложений контейнеров, работающих в кластере Kubernetes с поддержкой Azure Arc. Рабочая область Log Analytics является необязательной, но рекомендуется.

  1. Создадите рабочую область 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
    
  2. Выполните следующие команды, чтобы получить закодированные значения ИД рабочей области и общего ключа для существующей рабочей области 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 для локальных контекстов.

  1. Задайте для следующих переменных среды требуемое имя расширения "Приложения контейнеров", пространство имен кластера, в котором должны быть подготовлены ресурсы, и имя подключенной среды для приложений контейнеров Azure. Выберите уникальное имя.<connected-environment-name> Имя подключенной среды является частью доменного имени для приложения, создаваемого в подключенной среде приложений контейнеров Azure.

    EXTENSION_NAME="appenv-ext"
    NAMESPACE="appplat-ns"
    CONNECTED_ENVIRONMENT_NAME="<connected-environment-name>"
    
  2. Установите расширение "Приложения контейнеров" в кластер, подключенный к 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. Этот параметр следует настроить в формате защищенного параметра.
    loadBalancerIp IP-адрес входящего трафика подсистемы балансировки нагрузки.
  3. Сохраните 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)
    
  4. Дождитесь полного завершения установки расширения, прежде чем продолжать работу. Вы можете дождаться сеанса терминала, пока он не завершится, выполнив следующую команду:

    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.

  1. Задайте для следующих переменных среды требуемое имя настраиваемого расположения и идентификатор кластера, подключенного к 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)
    
  2. Создайте пользовательское расположение:

    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 с ограниченными правами на ресурс кластера.

  3. Убедитесь, что пользовательское расположение успешно создано, выполнив следующую команду. В ее выходных данных свойство provisioningState должно иметь значение Succeeded. Если нет, повторите команду через минуту.

    az customlocation show --resource-group $GROUP_NAME --name $CUSTOM_LOCATION_NAME
    
  4. Сохраните ИД настраиваемого расположения, которое нам потребуется на следующем шаге.

    CUSTOM_LOCATION_ID=$(az customlocation show \
        --resource-group $GROUP_NAME \
        --name $CUSTOM_LOCATION_NAME \
        --query id \
        --output tsv)
    

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

Прежде чем приступить к созданию приложений в пользовательском расположении, вам потребуется подключенная среда для приложений контейнеров Azure.

  1. Создайте подключенную среду для приложений контейнеров:

    az containerapp connected-env create \
        --resource-group $GROUP_NAME \
        --name $CONNECTED_ENVIRONMENT_NAME \
        --custom-location $CUSTOM_LOCATION_ID \
        --location $LOCATION
    
  2. Убедитесь, что подключенная среда "Приложения контейнеров" успешно создана с помощью следующей команды. В ее выходных данных свойство provisioningState должно иметь значение Succeeded. Если это не так, через минуту снова выполните эту команду.

    az containerapp connected-env show --resource-group $GROUP_NAME --name $CONNECTED_ENVIRONMENT_NAME
    

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