pedroespindula / status-changer

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

status-changer

Esse repositorio concentra todos os codigos referentes ao desafio técnico da pagar.me de SRE. Esse repositorio e seus modulos foram criados por Pedro Espíndula.

Setup do ambiente

Se você estiver vendo esse README, provavelmente você já baixou o repositório e já o desempacotou. Se de alguma forma você ainda não o fez, faça.

  1. Instale o Terrraform (Versão: v1.0.4)
  2. Instale a AWS Cli. Para maiores informações visite a seguinte documentação.
  3. Configure a AWS CLI com o seguinte comando
$ aws configure

Executando

Terraform com S3

Primeiro de tudo, precisamos configurar o nosso backend para que tanto nos como também a máquina do Github actions possam acessar o estado do terraform. Para isso foi criada uma infraestrutura que sobe um Bucket S3 e uma tabela no DynamoDB que irão servir de backend para o nosso terraform. Para fazer o deploy, siga os seguintes passos:

  1. Entre na pasta infra/remote-tfstate/terraform com o seguinte comando:
$ cd infra/remote-tfstate/terraform/
  1. Inicialize as dependencias do terraform
$ terraform init
  1. Aplique a definição terraform:
$ terraform apply -auto-approve
  1. Volte para a raiz do projeto:
$ cd ../../../

Repositório no Github

  1. Crie um repositório no Github

  2. Adicione uma nova remote ao seu repositório local com o seguinte comando:

git remote add origin git@github.com:<NOME_DO_USUARIO>/<NOME_DO_REPOSITORIO>.git

Modifique o <NOME_DO_USUARIO> com seu nome do usuário do Github e o <NOME_DO_REPOSITORIO> com o nome do repositório criado

Usuário do Github na AWS

Configurado nosso backend e tendo nosso repositório, precisaremos agora dar acesso ao Github Actions a nossa cloud na AWS. Para isso, criaremos um usuário IAM que terá acesso para fazer o deploy da nossa infraestrutura com terraform e fazer o upload das imagens no ECR. Para isso, siga os seguintes passos:

  1. Entre na pasta infra/remote-tfstate/terraform com o seguinte comando:
$ cd infra/remote-tfstate/terraform/
  1. Inicialize as dependencias do terraform
$ terraform init
  1. Aplique a definição terraform:
$ terraform apply -auto-approve
  1. Obtenha as chaves de acesso do usuário IAM:
$ terraform output -json
  1. Configure o secret no Github de AWS_ACCESS_KEY_ID a partir do valor do github_access_key exibido no output do terraform.

Caso tenha duvidas em como adicionar um secret, visite essa documentação

  1. Faça o mesmo para o secret de AWS_SECRET_ACCESS_KEY a partir do valor do github_secret_key exibido no output do terraform.

  2. Volte para a raiz do projeto:

$ cd ../../../

Cluster ECS

Dado que já configuramos nosso Github e nosso Backend, podemos tanto fazer o push do estado atual do nosso repositório, como também podemos fazer todo o processo de deploy manual. Como somos preguiçosos, vamos apenas fazer o push do repositório e ativar o workflow.

  1. Faça o push do repositório:
$ git push origin main
  1. Ative o workflow manualmente na interface do github.

Em caso de dúvidas, siga a seguinte documentação

Pronto, sua infraestrutura está pronta!

Fazendo requisições

Para fazer requisições para o cluster recem criado, você precisará da URL do ELB que expõe o serviço do RDS. Essa URL é mostrada no output do terraform. Você tem duas opções, executar o comando terraform output manualmente, ou ir no workflow recem executado e ir na etapa de Terraform apply para encontrar a URL. Nesse guia optaremos pela segunda opção.

  1. Encontre a URL do elb no workflow recem executado no job de terraform ao final da etapa de Terraform Apply

  2. Faça uma requisição para o elb com o curl

$ curl <ELB_URL>

Substitua o placeholder de <ELB_URL> pela URL que você encontrou no passo anterior.

About


Languages

Language:HCL 78.9%Language:Python 11.5%Language:JavaScript 7.1%Language:Dockerfile 2.2%Language:Shell 0.3%