Deploy cloud-native apps using Azure Container Apps
Guia completo, do zero ao ambiente produtivo, para publicar aplicações cloud-native com escalabilidade, segurança e CI/CD no Azure Container Apps.
Para quem é este guia?
Este conteúdo foi escrito para profissionais de TI de nível júnior a sênior. Se você está começando, vai encontrar um passo a passo claro com decisões explicadas. Se já atua com arquitetura, DevOps ou SRE, vai encontrar práticas de segurança, observabilidade, revisões e governança que fazem diferença em produção.
O que é Azure Container Apps (ACA)?
Azure Container Apps é uma plataforma serverless para executar containers sem precisar administrar cluster Kubernetes. Você foca na aplicação, enquanto o Azure cuida da infraestrutura, escala automática e componentes gerenciados.
Na prática, ACA é excelente para APIs, workers, microsserviços e jobs orientados a eventos, com integração nativa a Dapr, KEDA e Azure Monitor.
Pré-requisitos
- Subscription Azure ativa
- Permissão para criar Resource Group, Azure Container Registry (ACR), Log Analytics e ACA
- Azure CLI instalada e autenticada com
az login - Imagem da aplicação pronta (Dockerfile) ou projeto de exemplo
- Noções básicas de CI/CD e Git
Visão de arquitetura recomendada
- Azure Container Registry (ACR): armazenamento privado das imagens
- Container Apps Environment: ambiente lógico dos apps
- Container App: sua aplicação executando em revisão controlada
- Log Analytics: logs, métricas e diagnóstico
- Managed Identity + RBAC: acesso seguro ao ACR sem segredo fixo
Passo 1: Criar base de recursos no Azure
Comece criando Resource Group e Log Analytics Workspace para observabilidade central.
az group create --name rg-aca-lab --location eastusaz monitor log-analytics workspace create --resource-group rg-aca-lab --workspace-name log-aca-lab
Dica para equipes: padronize naming e tags desde o início (ambiente, aplicação, owner, centro de custo).
Passo 2: Criar o Azure Container Registry (ACR)
O ACR será o repositório privado da sua imagem.
az acr create --resource-group rg-aca-lab --name acracalab001 --sku Basic --admin-enabled falseaz acr login --name acracalab001
Para ambientes corporativos, mantenha admin-enabled false e use identidade gerenciada com RBAC.
Passo 3: Build e push da imagem
Com Docker local:
docker build -t acracalab001.azurecr.io/app-cloud-native:v1 .docker push acracalab001.azurecr.io/app-cloud-native:v1
Sem Docker local, você pode usar build remoto no Azure com ACR Tasks.
Passo 4: Criar o Container Apps Environment
Esse ambiente agrupa apps, políticas e telemetria.
az containerapp env create --name aca-env-lab --resource-group rg-aca-lab --location eastus --logs-workspace-id <workspace-id> --logs-workspace-key <workspace-key>
Você obtém o workspace-id e workspace-key pelo Log Analytics criado no passo 1.
Passo 5: Criar a Container App com ingress público
Agora vamos publicar a aplicação e expor HTTP externo.
az containerapp create --name app-cloud-native --resource-group rg-aca-lab --environment aca-env-lab --image acracalab001.azurecr.io/app-cloud-native:v1 --target-port 8080 --ingress external --min-replicas 1 --max-replicas 3
Esse comando já entrega uma URL pública para teste funcional.
Passo 6: Conexão segura entre ACA e ACR
Uma habilidade essencial avaliada em labs da Microsoft é configurar acesso seguro entre registro e app. O caminho mais recomendado é:
- Ativar identidade gerenciada na Container App
- Conceder papel
AcrPullno ACR para essa identidade - Atualizar configuração da app para usar identidade ao buscar imagem
Assim você evita usuário/senha no pipeline e reduz risco operacional.
Passo 7: Escalabilidade automática com regras KEDA
ACA escala por HTTP, CPU, memória e eventos (Service Bus, Queue, Kafka etc.). Exemplo de estratégia:
- Min replicas: 0 em ambientes não críticos para reduzir custo
- Max replicas: limite compatível com budget e carga esperada
- Regra HTTP: escalar quando concorrência ultrapassar limiar definido
Para workloads event-driven, use gatilhos de fila para escalar apenas quando houver mensagem.
Passo 8: Revisões e divisão de tráfego sem downtime
Revisions permitem implantar novas versões com segurança:
- Publica nova revisão com imagem
v2 - Direciona 10% do tráfego para canary
- Monitora erros e latência
- Avança para 50% e depois 100% se estável
Se algo falhar, basta retornar o tráfego para a revisão anterior sem rollback complexo de infraestrutura.
Passo 9: CI/CD com Azure Pipelines
No pipeline, o fluxo recomendado é:
- Checkout + testes
- Build da imagem e push para ACR
- Deploy para ACA atualizando a revisão
- Smoke test pós-deploy
Para produção, adicione gates de aprovação, análise de vulnerabilidade da imagem e política de branch protection.
Observabilidade e troubleshooting
- Habilite Application Insights para telemetria de aplicação
- Centralize logs no Log Analytics
- Crie alertas para erro 5xx, saturação de CPU e reinício de container
- Inclua correlação por
trace-idpara depuração entre microsserviços
Boas práticas de segurança para times de TI
- Use Managed Identity para acesso a ACR, Key Vault e outros serviços
- Evite segredos hardcoded; prefira secret references
- Ative scan de imagem no pipeline
- Restrinja ingress quando possível (interno, WAF, ou API Management)
- Adote RBAC de menor privilégio por ambiente
Checklist rápido (júnior a sênior)
- Imagem publicada no ACR com versionamento consistente
- Container App criada com limites de escala e recursos
- Conexão segura ACA -> ACR via identidade gerenciada
- Pipeline CI/CD validando build, deploy e smoke test
- Revisões com estratégia canary e rollback validado
- Observabilidade e alertas ativos em produção
Conclusão
Deploy cloud-native com Azure Container Apps é um caminho moderno para entregar software com agilidade e robustez. Você reduz esforço operacional, ganha escala elástica e habilita deploy seguro com revisões. Para quem está iniciando, siga este roteiro em um lab. Para quem já atua em produção, evolua com governança, segurança e automação completa do ciclo de entrega.
Base de estudo: Microsoft Applied Skills - Deploy cloud-native apps using Azure Container Apps.