Compartilhar via


Implantar um aplicativo web em Go para Aplicativos de Contêiner do Azure

Neste início rápido, você aprenderá a implantar um aplicativo Web em Go em contêineres nos Aplicativos de Contêiner do Azure.

Os Aplicativos de Contêiner do Azure permitem executar o código do aplicativo empacotado em qualquer contêiner sem gerenciar infraestrutura de nuvem complicada ou orquestradores de contêineres complexos. Ele também elimina a necessidade de se preocupar com o runtime ou o modelo de programação. Os usos comuns dos Aplicativos de Contêiner do Azure incluem: implantar pontos de extremidade de API, hospedar aplicativos de processamento em segundo plano, lidar com processamento controlado por eventos e executar microsserviços.

Siga este tutorial para percorrer a criação de uma imagem do Docker, implantando essa imagem no Registro de Contêiner do Azure e implantando um aplicativo Web em Go nos Aplicativos de Contêiner do Azure.

Pré-requisitos

  • Assinatura do Azure: caso você não tenha uma assinatura do Azure, crie uma conta gratuita antes de começar.

Instalação

Para entrar no Azure usando a CLIl, execute o comando az login e siga os prompts para concluir o processo de autenticação.

az login

Para garantir que você esteja executando a versão mais recente da CLI, execute o comando az upgrade.

az upgrade

Em seguida, instale ou atualize a extensão dos Aplicativos de Contêiner do Azure para a CLI.

Se você receber erros sobre parâmetros ausentes ao executar az containerapp comandos na CLI do Azure, verifique se você tem a versão mais recente da extensão aplicativos de contêiner do Azure instalada.

az extension add --name containerapp --upgrade

Observação

A partir de maio de 2024, as extensões da CLI do Azure já não permitem funcionalidades de versão prévia do recurso por padrão. Para acessar as versões prévias dos recursos dos Aplicativos de Contêiner, instale a extensão Aplicativos de Contêiner com --allow-preview true.

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

Agora que a extensão ou o módulo atual está instalado, registre os namespaces Microsoft.App, Microsoft.ContainerRegistry e Microsoft.OperationalInsights.

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

Observação

Os recursos dos Aplicativos de Contêiner do Azure migraram do namespace Microsoft.Web para o namespace Microsoft.App. Para obter mais informações, consulte a migração do Namespace do Microsoft.Web para Microsoft.App em março de 2022.

Baixar o aplicativo de exemplo

Para seguir este tutorial, você precisa de um aplicativo de exemplo para conteinerizar. O repositório GitHub msdocs-go-webapp-quickstart fornece um aplicativo Web Go de exemplo. Baixe ou clone o aplicativo de exemplo em sua estação de trabalho local.

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

cd msdocs-go-webapp-quickstart

Criar um Registro de Contêiner do Azure

O Registro de contêiner do Azure permite que você crie, armazene e gerencie artefatos e imagens de contêiner. Use-a para armazenar a imagem do Docker que contém o aplicativo Web Go de exemplo fornecido no repositório de exemplo mencionado anteriormente.

Execute os seguintes comandos para criar um Registro de Contêiner do Azure:

  1. Defina variáveis de ambiente para os recursos que você criará. Substitua o texto do espaço reservado entre colchetes pelos valores apropriados. Seu nome do Registro de Contêiner do Azure precisa ser globalmente exclusivo.

    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
    

    Os comandos de exemplo para definir as variáveis de ambiente são para o shell do Bash. Se você estiver usando um shell diferente, ajuste os comandos adequadamente.

  2. Crie um grupo de recursos do Azure com o comando az group create.

    az group create \
        --name $RESOURCE_GROUP_NAME \
        --location $LOCATION
    
  3. Crie um Registro de Contêiner do Azure com o comando az acr create.

    az acr create \
        --resource-group $RESOURCE_GROUP_NAME \
        --name $ACR_NAME \
        --sku basic
    
  4. Entre na instância de contêiner do Azure com o comando az acr login.

    az acr login --name $ACR_NAME
    

    Observação

    Se você receber um erro semelhante ao seguinte erro ao executar o az acr login comando, verifique se o daemon do Docker está em execução em seu sistema:

    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
    

Compilar e enviar a imagem do Docker

Depois de criar um Registro de Contêiner do Azure, crie e envie por push a imagem do Docker do aplicativo Web Go de exemplo.

Execute os comandos a seguir para compilar e efetuar push da imagem para o Registro.

  1. Defina a variável de ambiente para a imagem do Docker que você criará. Substitua o texto do espaço reservado entre colchetes pelos valores apropriados.

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

    Os comandos de exemplo para definir as variáveis de ambiente são para o shell do Bash. Se você estiver usando um shell diferente, ajuste os comandos adequadamente.

  2. Obtenha as informações do servidor de entrada com o comando az acr show e armazene-as em uma variável de ambiente.

    LOGIN_SERVER=$(az acr show \
        --name $ACR_NAME \
        --resource-group $RESOURCE_GROUP_NAME \
        --query loginServer \
        --output tsv)
    
    echo "Login server: $LOGIN_SERVER"
    
  3. Crie a imagem do Docker localmente.

    docker build -t $LOGIN_SERVER/$IMAGE_NAME:latest .
    
  4. Efetuar push da imagem do Docker para o Registro de Contêiner do Azure.

    docker push $LOGIN_SERVER/$IMAGE_NAME:latest
    
  5. Verifique se a imagem foi enviada por push com êxito para o Registro de Contêiner do Azure com o comando az acr repository list.

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

Agora que você tem uma imagem disponível no Registro de Contêiner do Azure, está pronto para implantar o Aplicativo de Contêiner do Azure e seu ambiente.

Criar um ambiente de Aplicativos de Contêiner do Azure

Os Aplicativos de Contêiner do Azure não têm a complexidade de um orquestrador de contêineres, mas ainda precisam de alguma maneira para estabelecer limites seguros. Os ambientes de Aplicativos de Contêiner do Azure fornecem essa funcionalidade. Os aplicativos de contêineres implantados no mesmo ambiente compartilham a mesma rede virtual e gravam registros no mesmo espaço de trabalho do Log Analytics. Antes de implantar um Aplicativo de Contêiner do Azure, você precisa de um ambiente para implantar.

  1. Defina variáveis de ambiente para os recursos que você criará. Substitua o texto do espaço reservado entre colchetes pelos valores apropriados.

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

    Os comandos de exemplo para definir as variáveis de ambiente são para o shell do Bash. Se você estiver usando um shell diferente, ajuste os comandos adequadamente.

  2. Execute o comando az containerapp env create para criar um ambiente de Aplicativos de Contêiner do Azure.

    az containerapp env create \
        --name $CONTAINER_APP_ENV \
        --resource-group $RESOURCE_GROUP_NAME \
        --location $LOCATION
    

Implantar nos Aplicativos de Contêiner do Azure

Neste ponto, você concluiu as seguintes etapas:

  • Criou um Registro de Contêiner do Azure.
  • Compilou e realizou o push de uma imagem do Docker para o repositório.
  • Configure um ambiente de Aplicativos de Contêiner do Azure.

A última etapa é implantar o aplicativo.

Execute o comando az containerapp create para implantar o aplicativo Web em Go nos Aplicativos de Contêiner do 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

O parâmetro --registry-identity system configura o sistema atribuído identidade gerenciada no aplicativo do contêiner. O aplicativo de contêiner usa essa identidade em vez de nome de usuário e senha, que é menos seguro, para autenticar com o registro de contêiner. O comando também cria automaticamente uma atribuição de AcrPull função para a identidade, autorizando-a extrair imagens do registro. Para usar identidades gerenciadas para autenticação e autorização, o registro deve ser um Registro de Contêiner do Azure.

Verificar a URL do aplicativo Web

  1. Execute o comando az containerapp show para obter o FQDN (Nome de Domínio Totalmente Qualificado) da entrada do aplicativo Web.

    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. Execute o comando curl no FQDN e confirme se a saída reflete o HTML do site. Você também pode abrir a URL em um navegador da Web para interagir com o aplicativo Web.

    curl "https://$APP_FQDN"
    

    "O comando retorna o HTML para a home page do aplicativo Web semelhante ao seguinte:

    <!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>
    

Limpar os recursos

Ao terminar o aplicativo de exemplo, você poderá remover todos os recursos do aplicativo do Azure. Isso evita cobranças contínuas e mantém sua assinatura do Azure organizada. Remover o grupo de recursos também remove todos os recursos do grupo de recursos e é a maneira mais rápida de remover todos os recursos do Azure para seu aplicativo.

Execute o comando az group delete para excluir o grupo de recursos e seus recursos.

az group delete \
    --name $RESOURCE_GROUP_NAME \
    --no-wait

Próximas etapas