Repositório de infraestrutura como código para provisionamento de ambientes em nuvem com GKE e gerenciamento Kubernetes via Terraform, com suporte a ambientes
stagingeproduction, pipelines GitHub Actions e separação clara de responsabilidades.
- Visão Geral
- Diagrama de Arquitetura
- Objetivo da Entrega
- Ambientes e Estrutura
- Tecnologias Utilizadas
- Infraestrutura Provisionada
- CI/CD com GitHub Actions
- Etapas automatizadas
- Observabilidade
- Estrutura do Repositório
- Execução Local
- Recursos Complementares
Este repositório contém a implementação de um projeto DevOps com foco em provisionamento automatizado de infraestrutura e aplicações em ambientes multicloud usando Terraform, Kubernetes e GitHub Actions. O ambiente de Staging é hospedado separadamente do ambiente de Produção, simulando cenários reais de resiliência e segregação.
A seguir, apresentamos o diagrama que representa a arquitetura da solução proposta. Ele ilustra os componentes de infraestrutura, automação e observabilidade entre os ambientes de Staging e Produção.
- Provisionar dois ambientes isolados:
- Staging: ambiente de homologação
- Produção: ambiente final em nuvem distinta
- Automatizar todo o pipeline de deploy: infraestrutura + aplicação
- Implementar observabilidade com dashboards acessíveis
- Garantir que as quatro pipelines estejam funcionais:
- Staging Frontend
- Staging Backend
- Produção Frontend
- Produção Backend
| Ambiente | Orquestrador | Backend Terraform | Diretórios Relacionados |
|---|---|---|---|
| Staging | GKE (Google) | staging.tfbackend |
gke/, kubernetes/ |
| Produção | GKE (Google) | production.tfbackend |
gke/, kubernetes/ |
- Clusters Kubernetes (GKE) distintos por ambiente
- Monitoramento com Prometheus e Grafana
- Provisionamento via Terraform
- Deploy de aplicações via Kubernetes
- Separação entre infraestrutura e camada de aplicação
As pipelines estão definidas no diretório .github/workflows/:
deploy-staging.yamldeploy-production.yaml
- Inicialização e aplicação do Terraform (
init,plan,apply) - Configuração do cluster e instalação de observabilidade
- Build das aplicações (frontend e backend)
- Dockerização e push para container registry
- Deploy no cluster Kubernetes com
kubectl - Validação por probes e endpoints
Cada ambiente possui seu próprio stack de monitoramento:
- Prometheus para coleta de métricas Kubernetes
- Grafana com dashboards configurados para:
- Consumo de CPU e memória
- Status de pods
- Disponibilidade de serviços
npvet-terraform/
├── .github/workflows/
│ ├── deploy-staging.yaml
│ └── deploy-production.yaml
│
├── gke/
│ ├── main.tf
│ ├── outputs.tf
│ └── variables.tf
│
├── kubernetes/
│ ├── main.tf
│ ├── providers.tf
│ └── variables.tf
│
├── main.tf
├── staging.tfvars
├── production.tfvars
├── staging.tfbackend
├── production.tfbackend
├── terraform.tfvars.template
└── .gitignorePré-requisitos:
- Conta GCP com permissões para criar clusters
- Ferramentas instaladas:
terraform,kubectl,docker,gh,helm
Exemplo para provisionar ambiente de staging:
terraform init -backend-config=staging.tfbackend
terraform plan -var-file=staging.tfvars
terraform apply -var-file=staging.tfvarsAplicar recursos Kubernetes:
kubectl apply -f kubernetes/| Nome | GitHub |
|---|---|
| orbitechz | @orbitechz |
