Руководство по созданию приложения контейнера Azure в Kubernetes с поддержкой Azure Arc

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

  • Создание приложения-контейнера в Azure Arc
  • Просмотр диагностики приложения

Предварительные условия

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

Добавление расширений Azure CLI

Откройте среду Bash в Azure Cloud Shell.

Запуск Cloud Shell в новом окне.

Затем добавьте необходимые расширения Azure CLI.

Предупреждение

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

az extension add --upgrade --yes --name customlocation
az extension add --name containerapp  --upgrade --yes

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

Создайте группу ресурсов для служб, созданных в этом руководстве.

GROUP_NAME="my-container-apps-resource-group"
az group create --name $GROUP_NAME --location eastus 

Получение сведений о особом расположении

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

CUSTOM_LOCATION_GROUP="<RESOURCE_GROUP_CONTAINING_CUSTOM_LOCATION>"
CUSTOM_LOCATION_NAME="<NAME_OF_CUSTOM_LOCATION>"

Получите идентификатор местоположения.

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

Получение идентификатора подключенной среды

Теперь, когда у вас есть идентификатор пользовательского расположения, вы можете выполнить запрос для получения данных о подключенной среде.

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

CONTAINER_APP_NAME="my-container-app"
CONNECTED_ENVIRONMENT_ID=$(az containerapp connected-env list --custom-location $CUSTOM_LOCATION_ID -o tsv --query '[].id')

Создать приложение

В приведенном ниже примере создается приложение Node.js.

 az containerapp create \
    --resource-group $GROUP_NAME \
    --name $CONTAINER_APP_NAME \
    --environment $CONNECTED_ENVIRONMENT_ID \
    --environment-type connected \
    --image mcr.microsoft.com/k8se/quickstart:latest \
    --target-port 80 \
    --ingress external

az containerapp browse --resource-group $GROUP_NAME --name $CONTAINER_APP_NAME

Получение журналов диагностики с помощью Log Analytics

Примечание.

Конфигурация Log Analytics необходима при установке расширения "Приложения контейнеров" для просмотра диагностических сведений. Если расширение установлено без Log Analytics, пропустите этот шаг.

Перейдите в рабочую область Log Analytics, настроенную с расширением "Приложения контейнеров", а затем выберите журналы в области навигации слева.

Выполните приведенный ниже пример запроса, чтобы отобразить журналы за последние 72 часа.

Если при выполнении запроса возникает ошибка, повторите попытку через 10–15 минут. Может возникнуть задержка с началом получения логов от вашего приложения в Log Analytics.

let StartTime = ago(72h);
let EndTime = now();
ContainerAppConsoleLogs_CL
| where TimeGenerated between (StartTime .. EndTime)
| where ContainerAppName_s =~ "my-container-app"

Журналы всех приложений, размещенных в вашем кластере Kubernetes, сохраняются в рабочей области Log Analytics в таблице пользовательских журналов с именем ContainerAppConsoleLogs_CL.

  • Log_s содержит журналы приложений для данного расширения "Приложения контейнеров"
  • AppName_s содержит имя приложения-контейнера. Помимо журналов, записываемых с помощью кода приложения, столбец Log_s также содержит журналы при запуске и завершении работы контейнера.

Дополнительные сведения о запросах к журналам см. в статье о начале работы с Kusto.

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