Развертывание веб-приложения Go в приложениях контейнеров Azure
В этом кратком руководстве описано, как развернуть контейнерное веб-приложение Go в приложениях контейнеров Azure.
Приложения контейнеров Azure позволяют выполнять код приложения, упакованный в любой контейнер, без необходимости управлять сложной облачной инфраструктурой или сложными оркестраторами контейнеров и не беспокоиться о модели среды выполнения или программирования. Распространенные способы использования приложений контейнеров Azure: развертывание конечных точек API, размещение приложений фоновой обработки, обработка обработки на основе событий и выполнение микрослужб.
В этом руководстве описано, как создать образ Docker, развернуть этот образ в Реестр контейнеров Azure и развернуть веб-приложение Go в приложениях контейнеров Azure.
Необходимые компоненты
- Подписка Azure. Если у вас нет подписки Azure, создайте бесплатную учетную запись, прежде чем начинать работу.
- Установленный язык Go версии 1.18 или более поздней
- Docker Desktop
Настройка
Чтобы войти в 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:
Создайте группу ресурсов Azure с помощью команды az group create.
az group create \ --name <resourceGroupName> \ --location eastus
Создайте Реестр контейнеров Azure с помощью команды az acr create.
az acr create \ --resource-group <resourceGroupName> \ --name <azureContainerRegistryName> \ --sku basic
Войдите в экземпляр контейнера 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.
Выполните следующие команды сборки и отправьте образ в реестр:
Получите сведения о сервере входа с помощью команды az acr show .
az acr show \ --name <azureContainerRegistryName> \ --resource-group <resourceGroupName> \ --query loginServer \ --output tsv
Создайте образ Docker локально.
docker build -t <loginServer>/<imageName>:latest .
Передает образ Docker в Реестр контейнеров Azure.
docker push <loginServer>/<imageName>:latest
Убедитесь, что образ успешно отправлен в Реестр контейнеров 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, вам потребуется среда для развертывания.
Выполните команду az containerapp env create, чтобы создать среду Azure Container Apps.
az containerapp env create \ --name <containerAppEnvName> \ --resource-group <resourceGroupName> \ --location "East US"
Развертывание на платформе "Контейнеры приложений 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