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.
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.
- Instale o Terrraform (Versão: v1.0.4)
- Instale a AWS Cli. Para maiores informações visite a seguinte documentação.
- Configure a AWS CLI com o seguinte comando
$ aws configure
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:
- Entre na pasta
infra/remote-tfstate/terraform
com o seguinte comando:
$ cd infra/remote-tfstate/terraform/
- Inicialize as dependencias do terraform
$ terraform init
- Aplique a definição terraform:
$ terraform apply -auto-approve
- Volte para a raiz do projeto:
$ cd ../../../
-
Crie um repositório no Github
-
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
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:
- Entre na pasta
infra/remote-tfstate/terraform
com o seguinte comando:
$ cd infra/remote-tfstate/terraform/
- Inicialize as dependencias do terraform
$ terraform init
- Aplique a definição terraform:
$ terraform apply -auto-approve
- Obtenha as chaves de acesso do usuário IAM:
$ terraform output -json
- Configure o secret no Github de
AWS_ACCESS_KEY_ID
a partir do valor dogithub_access_key
exibido no output do terraform.
Caso tenha duvidas em como adicionar um secret, visite essa documentação
-
Faça o mesmo para o secret de
AWS_SECRET_ACCESS_KEY
a partir do valor dogithub_secret_key
exibido no output do terraform. -
Volte para a raiz do projeto:
$ cd ../../../
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.
- Faça o push do repositório:
$ git push origin main
- Ative o workflow manualmente na interface do github.
Em caso de dúvidas, siga a seguinte documentação
Pronto, sua infraestrutura está pronta!
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.
-
Encontre a URL do elb no workflow recem executado no job de
terraform
ao final da etapa deTerraform Apply
-
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.