Implantar um aplicativo Web Go em Aplicativos de Contêiner do Azure
Neste início rápido, você aprende a implantar um aplicativo Web Go em contêiner para Aplicativos de Contêiner do Azure.
As Aplicações de Contentor do Azure permitem-lhe executar código de aplicação empacotado em qualquer contentor sem ter de gerir infraestruturas de nuvem complicadas ou orquestradores de contentores complexos e sem se preocupar com o tempo de execução ou o modelo de programação. Os usos comuns dos Aplicativos de Contêiner do Azure incluem: implantação de pontos de extremidade de API, hospedagem de aplicativos de processamento em segundo plano, manipulação de processamento controlado por eventos e execução de microsserviços.
Siga este tutorial para percorrer a criação de uma imagem do Docker, a implantação dessa imagem no Registro de Contêiner do Azure e a implantação de um aplicativo Web Go nos Aplicativos de Contêiner do Azure.
Pré-requisitos
- Subscrição do Azure: se não tem uma subscrição do Azure, crie uma conta gratuita antes de começar.
- Go instalado: Versão 1.18 ou superior
- Área de trabalho do Docker
Configurar
Para entrar no Azure a partir da CLI, execute o comando az login e siga as instruções 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 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, certifique-se de ter a versão mais recente da extensão Aplicativos de Contêiner do Azure instalada.
az extension add --name containerapp --upgrade
Nota
A partir de maio de 2024, as extensões da CLI do Azure não habilitam mais recursos de visualização por padrão. Para acessar os recursos de visualização do Container Apps, instale a extensão Container Apps com --allow-preview true
o .
az extension add --name containerapp --upgrade --allow-preview true
Agora que a extensão ou módulo atual está instalado, registre os Microsoft.App
namespaces e Microsoft.OperationalInsights
.
Nota
Os recursos dos Aplicativos de Contêiner do Azure migraram do Microsoft.Web
namespace para o Microsoft.App
namespace. Consulte Migração de namespace de Microsoft.Web para Microsoft.App em março de 2022 para obter mais detalhes.
az provider register --namespace Microsoft.App
az provider register --namespace Microsoft.OperationalInsights
Transferir a aplicação de exemplo
Para seguir este tutorial, você precisa de um aplicativo de exemplo para contentorizar. Um exemplo de aplicativo Web Go é fornecido no repositório GitHub msdocs-go-webapp-quickstart . Transfira ou clone a aplicação de exemplo para a estação de trabalho local.
git clone https://github.com/Azure-Samples/msdocs-go-webapp-quickstart.git
cd msdocs-go-webapp-quickstart
Criar um Azure Container Registry
O Registro de Contêiner do Azure permite que você crie, armazene e gerencie imagens de contêiner. Você o usará 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:
Crie um grupo de recursos do Azure com o comando az group create.
az group create \ --name <resourceGroupName> \ --location eastus
Crie um Registro de Contêiner do Azure com o comando az acr create .
az acr create \ --resource-group <resourceGroupName> \ --name <azureContainerRegistryName> \ --sku basic
Entre na instância de contêiner do Azure com o comando az acr login .
az acr login --name <azureContainerRegistryName>
Substitua <resourceGroupName>
e <azureContainerRegistryName>
com os valores apropriados. Seu nome do Registro de Contêiner do Azure precisa ser globalmente exclusivo.
Nota
Se você receber um erro semelhante ao seguinte ao executar o az acr login
comando, verifique se o docker deamon está em execução no seu sistema:
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
Crie e envie por push 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 seguintes comandos build e push a imagem para o registro:
Obtenha as informações do servidor de entrada com o comando az acr show .
az acr show \ --name <azureContainerRegistryName> \ --resource-group <resourceGroupName> \ --query loginServer \ --output tsv
Crie a imagem do Docker localmente.
docker build -t <loginServer>/<imageName>:latest .
Envie a imagem do Docker para o Registro de Contêiner do Azure.
docker push <loginServer>/<imageName>:latest
Verifique se a imagem foi enviada com êxito para o Registro de Contêiner do Azure com o comando az acr repository list .
az acr repository list \ --name <azureContainerRegistryName> \ --output table
Substitua loginServer
, imageName
e azureContainerRegistryName
com os valores apropriados. O nome da imagem é a imagem do Docker que é enviada por push para o Registro de Contêiner do Azure e posteriormente usada para implantar em Aplicativos de Contêiner do Azure.
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 de estabelecer limites seguros, que é onde os ambientes dos Aplicativos de Contêiner do Azure entram. Os aplicativos de contêiner implantados no mesmo ambiente compartilham a mesma rede virtual e gravam logs 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.
Execute o comando az containerapp env create para criar um ambiente de Aplicativos de Contêiner do Azure.
az containerapp env create \ --name <containerAppEnvName> \ --resource-group <resourceGroupName> \ --location "East US"
Implantar em aplicativos de contêiner do Azure
Neste ponto, você criou um Registro de Contêiner do Azure, criou e enviou uma imagem do Docker para ele e criou um ambiente de Aplicativos de Contêiner do Azure. Tudo o que resta é implantar o aplicativo.
Execute o comando az containerapp create para implantar o aplicativo Web Go nos Aplicativos de Contêiner do 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
O --registry-identity system
parâmetro configura a identidade gerenciada atribuída ao sistema no aplicativo contêiner. O aplicativo de contêiner usa essa identidade em vez de nome de usuário/senha, que é menos seguro, para autenticar com o registro de contêiner. O comando também cria automaticamente uma AcrPull
atribuição de função para a identidade, para que ele seja autorizado 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 o URL do aplicativo Web
Execute o comando az containerapp show para obter o FQDN (Fully Qualified Domain Name) da entrada do aplicativo Web.
APP_FQDN=$(az containerapp show \
--name <containerAppName> \
--resource-group <resourceGroupName> \
--query properties.configuration.ingress.fqdn \
--output tsv)
Em seguida, execute o comando curl no FQDN e confirme se a saída reflete o HTML do site.
curl "https://$APP_FQDN"
Recursos de limpeza
Quando 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. A remoção do 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 <resourceGroupName> \
--no-wait