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

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

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

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

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

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

Чтобы следовать этому руководству, вам потребуется пример приложения для контейнеризации. Пример веб-приложения 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 \
        --name <resourceGroupName> \
        --location eastus
    
  2. Создайте реестр контейнеров Azure.

    az acr create \
        --resource-group <resourceGroupName> \
        --name <azureContainerRegistryName> \
        --sku basic \
        --admin-enabled true
    
  3. Войдите в экземпляр контейнера Azure.

    az acr login --name <azureContainerRegistryName>  
    

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

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

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

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

  1. Получите сведения о сервере входа.

    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 \
        --name <azureContainerRegistryName> \
        --output table
    

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

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

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

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

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

  1. Получите пароль администратора Реестр контейнеров Azure.

    ACR_PASSWORD=$(az acr credential show \
        --name <azureContainerRegistryName> \
        --query 'passwords[0].value' \
        --out tsv)
    
  2. Создайте среду приложений-контейнеров.

    az containerapp env create \
        --name <containerAppEnvName> \
        --resource-group <resourceGroupName> \
        --location "East US"
    

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

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

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

az containerapp create \
    --name <containerAppName> \
    --resource-group <resourceGroupName> \
    --environment <containerAppEnvName> \
    --image "<loginServer>/<imageName>:latest" \
    --registry-server "<loginServer>" \
    --registry-username "<azureContainerRegistryName>" \
    --registry-password "$ACR_PASSWORD" \
    --target-port 8080 \
    --ingress 'external'

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

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

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 \
    --name <resourceGroupName> \
    --no-wait

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