Заметка
Доступ к этой странице требует авторизации. Вы можете попробовать войти в систему или изменить каталог.
Доступ к этой странице требует авторизации. Вы можете попробовать сменить директорию.
В этом кратком руководстве описано, как развернуть контейнерное веб-приложение 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.ContainerRegistry, и Microsoft.OperationalInsights пространства имен.
az provider register --namespace Microsoft.App
az provider register --namespace Microsoft.ContainerRegistry
az provider register --namespace Microsoft.OperationalInsights
Примечание.
Ресурсы приложений контейнеров Azure перенесены из пространства имен Microsoft.Web в пространство имен Microsoft.App. Дополнительные сведения см. в статье о миграции пространства имен из Microsoft.Web в Microsoft.App марта 2022 года.
загрузка примера приложения;
Чтобы следовать этому руководству, вам потребуется пример приложения для контейнеризации. Репозиторий GitHub msdocs-go-go-webapp-quickstart предоставляет пример веб-приложения Go. Скачайте или клонируйте пример приложения на локальную рабочую станцию.
git clone https://github.com/Azure-Samples/msdocs-go-webapp-quickstart.git
cd msdocs-go-webapp-quickstart
Создание реестра в Реестре контейнеров Azure
Реестр контейнеров Azure позволяет создавать, хранить образы контейнеров и управлять ими. Используйте его для хранения образа Docker, содержащего пример веб-приложения Go, предоставленного в примере репозитория, упомянутом ранее.
Выполните следующие команды, чтобы создать Реестр контейнеров Azure:
Задайте переменные среды для создаваемых ресурсов. Замените текст заполнителя в квадратных скобках соответствующими значениями. Имя Реестр контейнеров Azure должно быть глобально уникальным.
RESOURCE_GROUP_NAME="<resourceGroupName>" # Name of the Azure resource group to create LOCATION="<location>" # Azure region (For example, "eastus", "westus2") ACR_NAME="<azureContainerRegistryName>" # Globally unique name for Azure Container RegistryПримеры команд для задания переменных среды предназначены для оболочки Bash. Если вы используете другую оболочку, измените команды соответствующим образом.
Создайте группу ресурсов Azure с помощью команды az group create.
az group create \ --name $RESOURCE_GROUP_NAME \ --location $LOCATIONСоздайте Реестр контейнеров Azure с помощью команды az acr create.
az acr create \ --resource-group $RESOURCE_GROUP_NAME \ --name $ACR_NAME \ --sku basicВойдите в экземпляр контейнера Azure с помощью команды az acr login .
az acr login --name $ACR_NAMEПримечание.
Если при выполнении
az acr loginкоманды возникает ошибка, аналогичная следующей, убедитесь, что управляющая программа Docker запущена в вашей системе:You may want to use 'az acr login -n $ACR_NAME --expose-token' to get an access token, which doesn't require Docker to be installed. An error occurred: DOCKER_COMMAND_ERROR
Создание и отправка образа Docker
После создания реестра контейнеров Azure создайте и отправьте образ Docker примера веб-приложения Go.
Выполните следующие команды, чтобы создать и отправить образ в реестр.
Задайте переменную среды для создаваемого образа Docker. Замените текст заполнителя в квадратных скобках соответствующими значениями.
IMAGE_NAME="go-webapp" # Name for the Docker imageПримеры команд для задания переменных среды предназначены для оболочки Bash. Если вы используете другую оболочку, измените команды соответствующим образом.
Получите сведения о сервере входа с помощью команды az acr show и сохраните ее в переменной среды.
LOGIN_SERVER=$(az acr show \ --name $ACR_NAME \ --resource-group $RESOURCE_GROUP_NAME \ --query loginServer \ --output tsv) echo "Login server: $LOGIN_SERVER"Создайте образ Docker локально.
docker build -t $LOGIN_SERVER/$IMAGE_NAME:latest .Передает образ Docker в Реестр контейнеров Azure.
docker push $LOGIN_SERVER/$IMAGE_NAME:latestУбедитесь, что образ успешно отправлен в Реестр контейнеров Azure с помощью команды az acr repository list.
az acr repository list \ --name $ACR_NAME \ --output table
Теперь, когда у вас есть образ, доступный в реестре контейнеров Azure, вы можете развернуть приложение контейнеров Azure и его среду.
Создание среды приложений контейнеров Azure
Azure Container Apps не обладают сложностями оркестратора контейнеров, но для установления защищенных границ по-прежнему требуется определенный подход. Среды приложений контейнеров Azure предоставляют эту возможность. Контейнерные приложения, развернутые в той же среде, используют одну и ту же виртуальную сеть и записывают журналы в ту же рабочую область Log Analytics. Прежде чем развернуть приложение контейнера Azure, вам потребуется среда для развертывания.
Задайте переменные среды для создаваемых ресурсов. Замените текст заполнителя в квадратных скобках соответствующими значениями.
CONTAINER_APP_ENV="mygoappenv" # Name for the Container Apps environment CONTAINER_APP_NAME="mygoapp" # Name for your container appПримеры команд для задания переменных среды предназначены для оболочки Bash. Если вы используете другую оболочку, измените команды соответствующим образом.
Выполните команду az containerapp env create, чтобы создать среду Azure Container Apps.
az containerapp env create \ --name $CONTAINER_APP_ENV \ --resource-group $RESOURCE_GROUP_NAME \ --location $LOCATION
Развертывание на платформе "Контейнеры приложений Azure"
На этом этапе вы выполнили следующие действия:
- Создан реестр контейнеров Azure.
- Создан и отправлен образ Docker в реестр.
- Настройте среду приложений контейнеров Azure.
Последним шагом является развертывание приложения.
Выполните команду az containerapp create, чтобы развернуть веб-приложение Go в приложениях контейнеров Azure.
az containerapp create \
--name $CONTAINER_APP_NAME \
--resource-group $RESOURCE_GROUP_NAME \
--environment $CONTAINER_APP_ENV \
--image "$LOGIN_SERVER/$IMAGE_NAME:latest" \
--registry-server "$LOGIN_SERVER" \
--registry-identity system \
--target-port 8080 \
--ingress external
Параметр --registry-identity system настраивает управляемое удостоверение, назначаемое системой, в приложении контейнера. Приложение-контейнер использует это удостоверение, а не имя пользователя и пароль, что менее безопасно для проверки подлинности в реестре контейнеров. Команда также автоматически создает назначение роли AcrPull для идентификатора, разрешая ему извлекать изображения из реестра. Чтобы использовать управляемые удостоверения для проверки подлинности и авторизации, реестр должен быть Реестр контейнеров Azure.
Проверка URL-адреса веб-приложения
Выполните команду az containerapp show, чтобы получить полное доменное имя (полное доменное имя) входящего трафика веб-приложения.
APP_FQDN=$(az containerapp show \ --name $CONTAINER_APP_NAME \ --resource-group $RESOURCE_GROUP_NAME \ --query properties.configuration.ingress.fqdn \ --output tsv) echo "App URL: https://$APP_FQDN"Выполните команду curl для полного доменного имени и подтвердите, что результат отражает HTML-код веб-сайта. Вы также можете открыть URL-адрес в веб-браузере для взаимодействия с веб-приложением.
curl "https://$APP_FQDN"Команда возвращает HTML-код домашней страницы веб-приложения, как показано ниже:
<!DOCTYPE html> <html> <head> <title>Hello Azure - Go Quickstart</title> <link rel="stylesheet" href="/assets/main.css"> <link rel="icon" type="image/x-icon" href="/assets/favicon.ico"> </head> <header> <h1>Welcome to Azure</h1> </header> <section> <img src="/assets/images/azure-icon.svg"> <form method="post"> <label for="form-label">Could you please tell me your name?</label><br> <input type="text" id="name" name="name" style="max-width: 256px;"><br> <button type="submit">Say Hello</button> </form> </section> </html>
Очистите ресурсы
Завершив работу с примером приложения, можно удалить все ресурсы для приложения в Azure. Это позволяет избежать текущих расходов и не загромождает подписку Azure. Удаление группы ресурсов также повлечет удаление всех ресурсов в группе ресурсов, что является самым быстрым способом удаления всех ресурсов Azure для приложения.
Выполните команду az group delete, чтобы удалить группу ресурсов и ее ресурсы.
az group delete \
--name $RESOURCE_GROUP_NAME \
--no-wait