Skip to content

Exemplo de um Deploy na Azure Cloud usando Kubernetes, ACR via Terraform

License

Notifications You must be signed in to change notification settings

reynancs/azure-voting-app-redis

 
 

Repository files navigation

🎯 Objetivo

O Objetivo deste exemplo é praticar o Deploy de uma aplicação em um Azure Kubernetes Cluster (AKS) através de um arquivo de manifesto (.YAML). Além do exemplo original, foi adicionado o provisionamento de recursos no Provedor Azure usando o Terraform. Conhecimento Adquiridos:

  • Azure Cloud Provider
  • Containers: Docker, Azure Container Registry (ACR);
  • Kubernetes: Azure Kubernetes Cluster (AKS);
  • Terraform;

📌 Descrição

Arquitetura Proposta

Este exemplo cria uma imagem local da aplicação, utilizando o docker-compose.yaml, provisionamento automático de recursos Azure usando Terraform, em seguida a imagem local é enviada para cloud em um diretório privado (ACR) e a partir deste a imagem é consumida por um Azure Kubenertes Cluster. A interface do aplicativo foi construída usando Python / Flask. O componente de dados está usando o Redis.

💻 Como rodar a aplicação

  1. Realize o fork do projeto e em seguida no seu terminal git bash dê o comando git clone para copiar o repositório para sua máquina local.
  2. docker-compose up -d -> dar este comando no seu terminal do linux ou WSL2 no diretória da aplicação;
  3. docker images -> lista as imagens geradas
  4. docker ps -> -> lista os containers criados
  5. http://localhost:8080 -> testa a aplicaçao local
  6. docker-compose down -> destroi os containers
  7. az login -> faz o login no Azure CLI usando o powershell
  8. terraform init -> inicializa o terraform
  9. terraform fmt -> formato os arquivos .tf
  10. terraform plan -out tfplan -> verifica as mudanças antes de dar o apply
  11. terraform apply tfplan -> aplica o plano para criação dos recursos
  12. az acr login --name <ACRname_created>
  13. docker tag mcr.microsoft.com/azuredocs/azure-vote-front:v1 <ACRname_created>.azurecr.io/azure-vote-front:v1
  14. docker push <ACRname_created>.azurecr.io/azure-vote-front:v1 -> envia a imagem para o ACR
  15. az aks get-credentials --resource-group <ResourceGroupName> --name <AKSClusterName> -> pega as credenciais do Cluster AKS
  16. kubectl get nodes -> lista os nós em execução
  17. Atualiza para o novo endereço da imagem na linha 60 do manifesto azure-vote-all-in-one-redis.yaml
  18. kubectl apply -f azure-vote-all-in-one-redis.yaml -> Aplica o manifesto no Kubenertes
  19. kubectl get services -> lista os serviços em execução, acessar a aplicação usando o IP Externo no seu browser
  20. terraform destroy -> Deleta os recursos criados

🚩 Pré-Requisitos

  • VS Code v1.72.2
  • WSL2 para Windows
  • Docker Desktop
  • Terraform v1.3.2
  • provider registry.terraform.io/hashicorp/azurerm v3.30.0
  • Kubectl v4.5.7

🔗 Links/Referência

🔖 Notas

  • Foi add um recurso "role_acrpull" em main.tf para criar uma atribuição de função para autorizar o cluster do AKS a se conectar ao Registro de Contêiner do Azure. Sem este recurso, a aplicação não executa.
  • Add depends_on em alguns recursos dependentes devido apresentar falha durante o provisionamento terraform apply

About

Exemplo de um Deploy na Azure Cloud usando Kubernetes, ACR via Terraform

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Languages

  • Shell 30.7%
  • HCL 25.0%
  • Python 21.5%
  • CSS 13.5%
  • HTML 8.6%
  • Dockerfile 0.7%