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


Развертывание веб-приложения Go в приложениях контейнеров Azure

В этом кратком руководстве описано, как развернуть контейнерное веб-приложение Go в приложениях контейнеров Azure.

Приложения контейнеров Azure позволяют выполнять код приложения, упакованный в любой контейнер, без необходимости управлять сложной облачной инфраструктурой или сложными оркестраторами контейнеров и не беспокоиться о модели среды выполнения или программирования. Распространенные способы использования приложений контейнеров Azure: развертывание конечных точек API, размещение приложений фоновой обработки, обработка обработки на основе событий и выполнение микрослужб.

В этом руководстве описано, как создать образ Docker, развернуть этот образ в Реестр контейнеров Azure и развернуть веб-приложение Go в приложениях контейнеров Azure.

Необходимые компоненты

Настройка

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

az login

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

az upgrade

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

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

az extension add --name containerapp --upgrade

Примечание.

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

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

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

Примечание.

Ресурсы Контейнеров приложений Azure перенесены из пространства имен Microsoft.Web в пространство имен Microsoft.App. Дополнительные сведения см. в статье о миграции пространства имен из Microsoft.Web в Microsoft.App в марте 2022 г..

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

загрузка примера приложения;

Чтобы следовать этому руководству, вам потребуется пример приложения для контейнеризации. Пример веб-приложения Go представлен в репозитории GitHub msdocs-go-webapp-quickstart . Скачайте или клонируйте пример приложения на локальную рабочую станцию.

git clone https://github.com/Azure-Samples/msdocs-go-webapp-quickstart.git

cd msdocs-go-webapp-quickstart

Создание реестра в Реестре контейнеров Azure

Реестр контейнеров Azure позволяет создавать, хранить образы контейнеров и управлять ими. Вы будете использовать его для хранения образа Docker, содержащего пример веб-приложения Go, предоставленного в примере репозитория, упомянутом ранее.

Выполните следующие команды, чтобы создать Реестр контейнеров Azure:

  1. Создайте группу ресурсов Azure с помощью команды az group create.

    
    
    az group create \
        --name <resourceGroupName> \
        --location eastus
    
  2. Создайте Реестр контейнеров Azure с помощью команды az acr create.

    az acr create \
        --resource-group <resourceGroupName> \
        --name <azureContainerRegistryName> \
        --sku basic
    
  3. Войдите в экземпляр контейнера Azure с помощью команды az acr login .

    az acr login --name <azureContainerRegistryName>  
    

Замените <resourceGroupName> и <azureContainerRegistryName> соответствующими значениями. Имя Реестр контейнеров Azure должно быть глобально уникальным.

Примечание.

Если при выполнении az acr login команды возникает ошибка, аналогичная следующей, убедитесь, что docker deamon запущена в вашей системе:

You may want to use 'az acr login -n <azureContainerRegistryName> --expose-token' to get an access token, which does not require Docker to be installed.
2024-09-12 17:25:25.127779 An error occurred: DOCKER_COMMAND_ERROR

Создание и отправка образа Docker

Создав Реестр контейнеров Azure, создайте и отправьте образ Docker примера веб-приложения Go.

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

  1. Получите сведения о сервере входа с помощью команды az acr show .

    az acr show \
        --name <azureContainerRegistryName> \
        --resource-group <resourceGroupName> \
        --query loginServer \
        --output tsv  
    
  2. Создайте образ Docker локально.

    docker build -t <loginServer>/<imageName>:latest .
    
  3. Передает образ Docker в Реестр контейнеров Azure.

    docker push <loginServer>/<imageName>:latest
    
  4. Убедитесь, что образ успешно отправлен в Реестр контейнеров Azure с помощью команды az acr repository list.

    az acr repository list \
        --name <azureContainerRegistryName> \
        --output table
    

Замените loginServer, imageName и azureContainerRegistryName соответствующими значениями. Имя образа — это образ Docker, который отправляется в Реестр контейнеров Azure и более поздних версий, используемых для развертывания в приложениях контейнеров Azure.

Теперь, когда вы получили образ, доступный в Реестр контейнеров Azure, вы готовы развернуть приложение контейнеров Azure и его среду.

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

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

Развертывание на платформе "Контейнеры приложений Azure"

На этом этапе вы создали Реестр контейнеров Azure, создали и принудили к нему образ Docker и создали среду приложений контейнеров Azure. Все, что осталось, заключается в развертывании приложения.

Выполните команду az containerapp create, чтобы развернуть веб-приложение Go в приложениях контейнеров Azure.

az containerapp create \
    --name <containerAppName> \
    --resource-group <resourceGroupName> \
    --environment <containerAppEnvName> \
    --image "<loginServer>/<imageName>:latest" \
    --registry-server "<loginServer>" \
    --registry-identity system \
    --target-port 8080 \
    --ingress external

Параметр --registry-identity system настраивает управляемое удостоверение, назначаемое системой, в приложении контейнера. Приложение-контейнер использует это удостоверение, а не имя пользователя или пароль, что менее безопасно для проверки подлинности в реестре контейнеров. Команда также автоматически создает AcrPull назначение ролей для удостоверения, чтобы он был авторизован для извлечения образов из реестра. Чтобы использовать управляемые удостоверения для проверки подлинности и авторизации, реестр должен быть Реестр контейнеров Azure.

Проверка URL-адреса веб-приложения

Выполните команду az containerapp show, чтобы получить полное доменное имя (полное доменное имя) входящего трафика веб-приложения.

APP_FQDN=$(az containerapp show \
    --name <containerAppName> \
    --resource-group <resourceGroupName> \
    --query properties.configuration.ingress.fqdn \
    --output tsv)

Затем выполните команду curl в полное доменное имя и подтвердите выходные данные, отражающие HTML-код веб-сайта.

curl "https://$APP_FQDN"

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

Завершив работу с примером приложения, можно удалить все ресурсы для приложения в Azure. Это позволяет избежать текущих расходов и не загромождает подписку Azure. Удаление группы ресурсов также повлечет удаление всех ресурсов в группе ресурсов, что является самым быстрым способом удаления всех ресурсов Azure для приложения.

Выполните команду az group delete, чтобы удалить группу ресурсов и ее ресурсы.

az group delete \
    --name <resourceGroupName> \
    --no-wait

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