Бөлісу құралы:


Развертывание веб-приложения 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.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:

  1. Задайте переменные среды для создаваемых ресурсов. Замените текст заполнителя в квадратных скобках соответствующими значениями. Имя Реестр контейнеров 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. Если вы используете другую оболочку, измените команды соответствующим образом.

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

    az group create \
        --name $RESOURCE_GROUP_NAME \
        --location $LOCATION
    
  3. Создайте Реестр контейнеров Azure с помощью команды az acr create.

    az acr create \
        --resource-group $RESOURCE_GROUP_NAME \
        --name $ACR_NAME \
        --sku basic
    
  4. Войдите в экземпляр контейнера 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.

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

  1. Задайте переменную среды для создаваемого образа Docker. Замените текст заполнителя в квадратных скобках соответствующими значениями.

    IMAGE_NAME="go-webapp"  # Name for the Docker image
    

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

  2. Получите сведения о сервере входа с помощью команды 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"
    
  3. Создайте образ Docker локально.

    docker build -t $LOGIN_SERVER/$IMAGE_NAME:latest .
    
  4. Передает образ Docker в Реестр контейнеров Azure.

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

    az acr repository list \
        --name $ACR_NAME \
        --output table
    

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

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

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

  1. Задайте переменные среды для создаваемых ресурсов. Замените текст заполнителя в квадратных скобках соответствующими значениями.

    CONTAINER_APP_ENV="mygoappenv"  # Name for the Container Apps environment
    CONTAINER_APP_NAME="mygoapp"    # Name for your container app
    

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

  2. Выполните команду 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-адреса веб-приложения

  1. Выполните команду 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"
    
  2. Выполните команду 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

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