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


Краткое руководство: Развертывание существующего образа контейнера с помощью командной строки

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

В этой статье показано, как развернуть существующий контейнер в Контейнерах приложений Azure.

Примечание.

Авторизация частного реестра поддерживается с помощью имени пользователя и пароля реестра.

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

Настройка

Чтобы войти в Azure из ИНТЕРФЕЙСА командной строки, выполните следующую команду и следуйте инструкциям, чтобы завершить процесс проверки подлинности.

az login

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

az upgrade

Затем установите или обновите расширение "Приложения контейнеров Azure" для интерфейса командной строки.

Если при выполнении команд az containerapp в Azure CLI или командлетов из модуля Az.App в PowerShell возникают ошибки об отсутствующих параметрах, убедитесь, что у вас установлена последняя версия расширения для Azure Container Apps.

az extension add --name containerapp --upgrade

Примечание.

Начиная с мая 2024 г. расширения Azure CLI больше не поддерживают предварительные версии функций по умолчанию. Чтобы получить доступ к функциям предварительной версии "Container Apps", установите расширение --allow-preview true "Container Apps".

az extension add --name containerapp --upgrade --allow-preview true

Теперь, когда установлено текущее расширение или модуль, зарегистрируйте пространства имен Microsoft.App и Microsoft.OperationalInsights.

az provider register --namespace Microsoft.App
az provider register --namespace Microsoft.OperationalInsights

Настройка переменных среды

Задайте следующие переменные среды. Замените <PLACEHOLDERS> вашими значениями.

RESOURCE_GROUP="<RESOURCE_GROUP>"
LOCATION="<LOCATION>"
CONTAINERAPPS_ENVIRONMENT="<CONTAINERAPPS_ENVIRONMENT>"

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

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

az group create \
  --name $RESOURCE_GROUP \
  --location "$LOCATION"

Создать среду

Среда в Azure Container Apps создает безопасную границу вокруг группы приложений-контейнеров. Развертываемые в одной среде приложения-контейнеры развертываются в одной виртуальной сети и записывают журналы в одну рабочую область Log Analytics.

Чтобы создать среду, выполните следующую команду:

az containerapp env create \
  --name $CONTAINERAPPS_ENVIRONMENT \
  --resource-group $RESOURCE_GROUP \
  --location "$LOCATION"

Создание приложения-контейнера

Создав среду, вы можете развернуть первое приложение-контейнер.

  1. Задайте переменные среды.

    Замените значения <PLACEHOLDERS> на свои. Имя пользователя обычно будет иметь формат адреса электронной почты (например, [email protected]).

     CONTAINER_APP_NAME=my-container-app
     KEY_VAULT_NAME=my-key-vault
     USER_PRINCIPAL_NAME=<USER_PRINCIPAL_NAME>
     SECRET_NAME=my-secret-name
     CONTAINER_IMAGE_NAME=<CONTAINER_IMAGE_NAME>
     REGISTRY_SERVER=<REGISTRY_SERVER>
     REGISTRY_USERNAME=<REGISTRY_USERNAME>
    
  2. Создайте хранилище ключей.

    Хранение пароля реестра контейнеров с помощью службы, такой как Azure Key Vault , всегда обеспечивает безопасность значений. В этом разделе показано, как создать хранилище ключей, сохранить пароль реестра контейнеров в Key Vault, а затем получить пароль для использования в коде.

     az keyvault create --name $KEY_VAULT_NAME --resource-group $RESOURCE_GROUP
    
  3. Предоставьте учетным записям пользователя разрешения на управление секретами в хранилище ключей.

     KEY_VAULT_ID=$(az keyvault show --name $KEY_VAULT_NAME --query id --output tsv)
     az role assignment create --role "Key Vault Secrets Officer" --assignee "$USER_PRINCIPAL_NAME" --scope "$KEY_VAULT_ID"
    
  4. Сохраните пароль реестра контейнеров в хранилище ключей.

    Замените <REGISTRY_PASSWORD> значением.

     az keyvault secret set --vault-name $KEY_VAULT_NAME --name $SECRET_NAME --value "<REGISTRY_PASSWORD>"
    
  5. Извлеките пароль реестра контейнеров из хранилища ключей.

     REGISTRY_PASSWORD=$(az keyvault secret show --name $SECRET_NAME --vault-name $KEY_VAULT_NAME --query value --output tsv)
    
  6. Разверните образ контейнера в приложениях контейнеров Azure.

     az containerapp create \
       --name $CONTAINER_APP_NAME \
       --location $LOCATION \
       --resource-group $RESOURCE_GROUP \
       --image $CONTAINER_IMAGE_NAME \
       --environment $CONTAINERAPPS_ENVIRONMENT \
       --registry-server $REGISTRY_SERVER \
       --registry-username $REGISTRY_USERNAME \
       --registry-password $REGISTRY_PASSWORD
    

    Если вы включили входящий трафик в приложении-контейнере, можно добавить --query properties.configuration.ingress.fqdn в команду create, чтобы получить общедоступный URL-адрес приложения.

  1. Задайте переменные среды.

     CONTAINER_APP_NAME=my-container-app
     CONTAINER_IMAGE_NAME=mcr.microsoft.com/k8se/quickstart:latest
    
  2. Разверните образ контейнера в приложениях контейнеров Azure.

     az containerapp create \
       --image $CONTAINER_IMAGE_NAME \
       --name $CONTAINER_APP_NAME \
       --resource-group $RESOURCE_GROUP \
       --environment $CONTAINERAPPS_ENVIRONMENT
    

    Если вы включили входящий трафик в приложении-контейнере, можно добавить --query properties.configuration.ingress.fqdn в команду create, чтобы получить общедоступный URL-адрес приложения.


Проверка развертывания

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

Используйте следующие команды для просмотра сообщений журнала консоли.

LOG_ANALYTICS_WORKSPACE_CLIENT_ID=`az containerapp env show --name $CONTAINERAPPS_ENVIRONMENT --resource-group $RESOURCE_GROUP --query properties.appLogsConfiguration.logAnalyticsConfiguration.customerId --out tsv`

az monitor log-analytics query \
  --workspace $LOG_ANALYTICS_WORKSPACE_CLIENT_ID \
  --analytics-query "ContainerAppConsoleLogs_CL | where ContainerAppName_s == $CONTAINER_APP_NAME | project ContainerAppName_s, Log_s, TimeGenerated" \
  --out table

Очистка ресурсов

Если вы не собираетесь продолжать использовать это приложение, выполните приведенную ниже команду, чтобы удалить группу ресурсов вместе со всеми ресурсами, созданными в ходе работы с этим кратким руководством.

Внимание

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

az group delete --name $RESOURCE_GROUP

Совет

Возникли проблемы? Сообщите нам на GitHub, создав запрос в репозитории Azure Container Apps.

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