Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/samuellucas97/desafio-devops
Automated deployment in Kubernetes Cluster at AWS using GitHub Actions, Terraform, Ansible, and Argo CD
https://github.com/samuellucas97/desafio-devops
ansible argocd aws docker ec2 flask-api github-actions keycloak kubernetes makefile terraform vagrant
Last synced: about 1 month ago
JSON representation
Automated deployment in Kubernetes Cluster at AWS using GitHub Actions, Terraform, Ansible, and Argo CD
- Host: GitHub
- URL: https://github.com/samuellucas97/desafio-devops
- Owner: Samuellucas97
- Created: 2024-03-23T04:57:48.000Z (8 months ago)
- Default Branch: main
- Last Pushed: 2024-04-25T05:48:28.000Z (7 months ago)
- Last Synced: 2024-10-14T04:41:35.514Z (about 1 month ago)
- Topics: ansible, argocd, aws, docker, ec2, flask-api, github-actions, keycloak, kubernetes, makefile, terraform, vagrant
- Language: Python
- Homepage:
- Size: 1.08 MB
- Stars: 1
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Desafio DevOps
[![Continuous delivery and deploy into AWS Cloud provider](https://github.com/Samuellucas97/desafio-devops/actions/workflows/cd_app.yaml/badge.svg)](https://github.com/Samuellucas97/desafio-devops/actions/workflows/cd_app.yaml)
[![Provisioning of the AWS infraestructure](https://github.com/Samuellucas97/desafio-devops/actions/workflows/iac_provisioning.yaml/badge.svg)](https://github.com/Samuellucas97/desafio-devops/actions/workflows/iac_provisioning.yaml)
[![Deprovisioning of the AWS infraestructure](https://github.com/Samuellucas97/desafio-devops/actions/workflows/iac_deprovisioning.yaml/badge.svg)](https://github.com/Samuellucas97/desafio-devops/actions/workflows/iac_deprovisioning.yaml)
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](#infraestrutura-local)
- [Infraestrutura na Nuvem](#infraestrutura-na-nuvem)
- [GitHub Actions - CI/CD](#github-actions---cicd)## 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](./assets/local-environment_version_3.png)
Visite a pasta [local_infra](./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 TableO provisionamento é feito de forma automatizado via script Terraform.
![cloud infrastructure design](./assets/cloud-environment_version_2.png)
Visite a pasta [cloud_infra](./cloud_infra/) para saber mais sobre a instalação e execução.
## GitHub Actions - CI/CD
Na pasta [.github/workflows](./.github/workflows) encontram os pipelines atualmente implementados
* [.github/workflows/cd_app.yaml](./.github/workflows/cd_app.yaml): Realiza criação da imagem Docker e publicação no DockerHub
* [.github/workflows/iac_provisioning.yaml](./.github/workflows/iac_provisioning.yaml): Realiza o provisionamento da infraestrutura na AWS. Para evitar gasto, a execução do script é manual
* [.github/workflows/iac_deprovisioning.yaml](./.github/workflows/iac_deprovisioning.yaml): Realiza o deprovisionamento/remoção da infraestrutura na AWS. A execução do script é manual