Skip to content

Automated deployment in Kubernetes Cluster at AWS using GitHub Actions, Terraform, Ansible, and Argo CD

Notifications You must be signed in to change notification settings

Samuellucas97/desafio-devops

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

49 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Desafio DevOps

Continuous delivery and deploy into AWS Cloud provider

Provisioning of the AWS infraestructure

Deprovisioning of the AWS infraestructure

Este projeto tem como intuito a implantação automatizada de uma aplicação Flask: API de comentários. Com isso serão praticados os seguintes conhecimentos:

  • Automação da infra, provisionamento dos hosts (IaaS)

  • Automação de setup e configuração dos hosts (IaC)

  • Pipeline de deploy automatizado

  • Monitoramento dos serviços e métricas da aplicação

A implantação segue dois formatos: em infraestrutura local e em infraestrutura na nuvem. A infraestrutura local foi desenvolvida com o intuito de efetuar todas a etapas de testes localmente, economizando uso de serviços na clouds.

Conteúdo

Infraestrutura Local

A infraestrutura local é composta por uma máquina virtual (Virtual Machine - VM) usando o Vagrant e VirtualBox. Essa VM é configurada via Ansible, sendo instalado um cluster MicroK8s. A imagem abaixo mostra a topologia proposta, onde é instalado o Kong e a aplicação Flask de exemplo no cluster MicroK8s.

local infrastructure design

Visite a pasta local_infra para saber mais sobre a instalação e execução.

Infraestrutura na Nuvem

A infraestrutura na AWS é composta por uma:

  • Virtual Private Cloud (VPC)
  • Subnet
  • Elastic Compute Cloud (EC2)
  • Simple Storage Service (S3) - Terraform
  • DynamoDB - Terraform
  • Security Group
  • Internet Gateway
  • Route Table

O provisionamento é feito de forma automatizado via script Terraform.

cloud infrastructure design

Visite a pasta cloud_infra para saber mais sobre a instalação e execução.

GitHub Actions - CI/CD

Na pasta .github/workflows encontram os pipelines atualmente implementados