Skip to content

orbitechz/npvet-terraform

Repository files navigation

NPVet · Provisionamento Multicloud com Terraform e Kubernetes

Repositório de infraestrutura como código para provisionamento de ambientes em nuvem com GKE e gerenciamento Kubernetes via Terraform, com suporte a ambientes staging e production, pipelines GitHub Actions e separação clara de responsabilidades.


Sumário

  1. Visão Geral
  2. Diagrama de Arquitetura
  3. Objetivo da Entrega
  4. Ambientes e Estrutura
  5. Tecnologias Utilizadas
  6. Infraestrutura Provisionada
  7. CI/CD com GitHub Actions
  8. Etapas automatizadas
  9. Observabilidade
  10. Estrutura do Repositório
  11. Execução Local
  12. Recursos Complementares

Visão Geral

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.

Diagrama de Arquitetura

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.

Diagrama da Arquitetura

Objetivo da Entrega

  • 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

Ambientes e Estrutura

Ambiente Orquestrador Backend Terraform Diretórios Relacionados
Staging GKE (Google) staging.tfbackend gke/, kubernetes/
Produção GKE (Google) production.tfbackend gke/, kubernetes/

Tecnologias Utilizadas

Ferramenta Finalidade
Terraform Provisionamento de infraestrutura (IaC)
Kubernetes Orquestração de contêineres
Docker Empacotamento de aplicações
GCP Hospedagem do cluster Kubernetes
GitHub Actions Automatização de pipelines CI/CD
Prometheus Monitoramento do cluster e pods
Grafana Dashboards de métricas

Infraestrutura Provisionada

  • 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

CI/CD com GitHub Actions

As pipelines estão definidas no diretório .github/workflows/:

  • deploy-staging.yaml
  • deploy-production.yaml

Etapas automatizadas:

  1. Inicialização e aplicação do Terraform (init, plan, apply)
  2. Configuração do cluster e instalação de observabilidade
  3. Build das aplicações (frontend e backend)
  4. Dockerização e push para container registry
  5. Deploy no cluster Kubernetes com kubectl
  6. Validação por probes e endpoints

Observabilidade

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

Estrutura do Repositório

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
└── .gitignore

Execução Local

Pré-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.tfvars

Aplicar recursos Kubernetes:

kubectl apply -f kubernetes/

Recursos Complementares

Equipe

Nome GitHub
orbitechz @orbitechz

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages