Este projeto implementa uma solução completa de Site Reliability Engineering (SRE) no Google Cloud Platform (GCP), seguindo as melhores práticas de DevOps, segurança e alta disponibilidade. O ambiente é totalmente provisionado via Infrastructure as Code (IaC) usando Terraform.
- ✅ Alta Disponibilidade: Cluster GKE com 1 master e 2 workers
- ✅ Segurança: Múltiplas camadas de proteção e compliance
- ✅ Monitoramento: Stack completo de observabilidade
- ✅ APM: Application Performance Monitoring com Jaeger e Kiali
- ✅ Logs: Agregação centralizada com Elasticsearch e Kibana
- ✅ SSL/TLS: Certificados automáticos com Let's Encrypt
- ✅ Testes: Testes de estresse com K6 e monitoramento integrado
- ✅ Automação: CI/CD pipeline completo
- ✅ Documentação: README detalhado com explicações técnicas
┌─────────────────────────────────────────────────────────────┐
│ GCP PROJECT │
├─────────────────────────────────────────────────────────────┤
│ ┌─────────────────┐ ┌─────────────────┐ ┌─────────────┐ │
│ │ VPC + Subnet │ │ GKE Cluster │ │ Cloud │ │
│ │ │ │ (1 Master + │ │ Storage │ │
│ │ - Flow Logs │ │ 2 Workers) │ │ + KMS │ │
│ └─────────────────┘ └─────────────────┘ └─────────────┘ │
├─────────────────────────────────────────────────────────────┤
│ ┌─────────────────┐ ┌─────────────────┐ ┌─────────────┐ │
│ │ Cloud NAT │ │ Load Balancer │ │ DNS │ │
│ │ + Firewall │ │ + SSL/TLS │ │ + Domain │ │
│ └─────────────────┘ └─────────────────┘ └─────────────┘ │
└─────────────────────────────────────────────────────────────┘
┌─────────────────────────────────────────────────────────────┐
│ MONITORING NAMESPACE │
├─────────────────────────────────────────────────────────────┤
│ ┌─────────────────┐ ┌─────────────────┐ ┌─────────────┐ │
│ │ Prometheus │ │ Grafana │ │AlertManager│ │
│ │ + Metrics │ │ + Dashboards │ │ + Rules │ │
│ └─────────────────┘ └─────────────────┘ └─────────────┘ │
├─────────────────────────────────────────────────────────────┤
│ ┌─────────────────┐ ┌─────────────────┐ ┌─────────────┐ │
│ │ Jaeger │ │ Kiali │ │ Fluent Bit │ │
│ │ + Tracing │ │ + Service Mesh │ │ + Logs │ │
│ └─────────────────┘ └─────────────────┘ └─────────────┘ │
└─────────────────────────────────────────────────────────────┘
┌─────────────────────────────────────────────────────────────┐
│ SECURITY LAYERS │
├─────────────────────────────────────────────────────────────┤
│ ┌─────────────────┐ ┌─────────────────┐ ┌─────────────┐ │
│ │ Cert-Manager │ │ RBAC + │ │ Network │ │
│ │ + SSL/TLS │ │ Policies │ │ Policies │ │
│ └─────────────────┘ └─────────────────┘ └─────────────┘ │
├─────────────────────────────────────────────────────────────┤
│ ┌─────────────────┐ ┌─────────────────┐ ┌─────────────┐ │
│ │ Pod Security │ │ Firewall │ │ KMS │ │
│ │ + Standards │ │ + Rules │ │+ Encryption│ │
│ └─────────────────┘ └─────────────────┘ └─────────────┘ │
└─────────────────────────────────────────────────────────────┘
- Terraform: Provisionamento de infraestrutura
- Google Cloud Platform: Cloud provider
- Google Kubernetes Engine (GKE): Cluster Kubernetes gerenciado
- VPC: Rede privada com subnets customizadas
- Kubernetes: Orquestração de containers
- Docker: Containerização de aplicações
- Helm: Gerenciamento de charts Kubernetes
- Prometheus: Coleta e armazenamento de métricas
- Grafana: Visualização e dashboards
- AlertManager: Gerenciamento de alertas
- Jaeger: Distributed tracing (APM)
- Kiali: Visualização do service mesh (APM)
- Elasticsearch + Kibana: Agregação e análise de logs
- Cert-Manager: Certificados SSL/TLS automáticos
- Network Policies: Controle de tráfego entre pods
- RBAC: Controle de acesso baseado em roles
- Pod Security Standards: Segurança em nível de pod
- KMS: Criptografia de dados sensíveis
- Nginx Ingress Controller: Roteamento HTTP/HTTPS
- Cloud Load Balancer: Balanceamento de carga global
- SSL/TLS: Criptografia em trânsito com Let's Encrypt
- Cloud Build: Pipeline de build automatizado
- GitHub Actions: Workflows de CI/CD
- Cloud Functions: Automação serverless
- Cloud Scheduler: Jobs agendados
projeto-sre-devops/
├── 📁 infra/ # Infraestrutura como Código (Terraform)
│ ├── main.tf # Configuração principal
│ ├── variables.tf # Definição de variáveis
│ ├── terraform.tfvars # Valores das variáveis
│ ├── versions.tf # Versões dos providers
│ ├── security-rbac.tf # Segurança e RBAC
│ ├── firewall.tf # Regras de firewall
│ ├── applications.tf # Aplicações Kubernetes
│ ├── prometheus-grafana.tf # Stack de monitoramento
│ ├── stress-testing.tf # Testes de estresse
│ └── README.md # Documentação da infraestrutura
│
├── 📁 charts/ # Charts Helm customizados
│ ├── app-chart/ # Chart para aplicações
│ ├── cert-manager-chart/ # Chart para cert-manager
│ ├── devops-values.yaml # Valores para ambiente DevOps
│ ├── sre-values.yaml # Valores para ambiente SRE
│ └── README.md # Documentação dos charts
│
├── 📁 manifests/ # Manifests Kubernetes
│ ├── install-all.sh # Script de instalação completa
│ ├── install-ingress-nginx.sh # Instalação do Ingress
│ ├── install-cert-manager.sh # Instalação do Cert-Manager
│ ├── install-monitoring.sh # Instalação do monitoramento
│ └── README.md # Documentação dos manifests
│
├── 📁 pipelines/ # Pipelines CI/CD
│ ├── terraform.yml # Pipeline Terraform (GitHub Actions)
│ ├── terraform-cert-manager.yml # Pipeline Cert-Manager
│ ├── cloudbuild.yaml # Pipeline Google Cloud Build
│ └── README.md # Documentação dos pipelines
│
├── 📁 docs/ # Documentação completa
│ ├── README.md # Documentação principal
│ ├── README-VARIAVEIS.md # Documentação de variáveis
│ ├── README-SECURITY.md # Configurações de segurança
│ ├── README-APM.md # Application Performance Monitoring
│ ├── README-LOGS.md # Stack de logs
│ ├── README-ALERTAS.md # Sistema de alertas
│ └── README-DOCS.md # Guia da documentação
│
├── 📁 backup_item/ # Arquivos temporários/backup
│ ├── backup-project.ps1 # Script de backup
│ └── README.md # Documentação da pasta backup
│
├── REORGANIZACAO-COMPLETA.md # Histórico da reorganização
├── validate-project.sh # Script de validação
├── cleanup-old-folders.sh # Script de limpeza
├── .gitignore # Arquivos ignorados pelo Git
├── .gitattributes # Atributos do Git
└── LICENSE # Licença do projeto
- Google Cloud SDK configurado
- Terraform >= 1.0
- kubectl configurado
- helm >= 3.0
- Clone o repositório:
git clone https://github.com/augustojoselg/projeto-sre-devops.git
cd projeto-sre-devops- Configure as variáveis:
cd infra
cp variables.tf.example variables.tf
# Edite variables.tf com seus valores- Inicialize o Terraform:
terraform init
terraform plan
terraform apply- Configure o kubectl:
gcloud container clusters get-credentials augustosredevops-cluster --region us-west1- Deploy do monitoramento:
kubectl apply -f infra/prometheus-grafana.tf- Deploy das aplicações:
kubectl apply -f infra/applications.tf- DevOps:
https://devops.tisl.com.br - SRE:
https://sre.tisl.com.br
- Grafana:
https://grafana.tisl.com.br- Usuário:
admin - Senha: Configurada via variável de ambiente
- Usuário:
- Prometheus:
http://prometheus-stack-prometheus.monitoring.svc.cluster.local:9090 - AlertManager:
http://prometheus-stack-alertmanager.monitoring.svc.cluster.local:9093
- Jaeger:
https://jaeger.tisl.com.br - Kiali:
https://kiali.tisl.com.br
- Kibana:
https://kibana.tisl.com.br - Elasticsearch:
http://elasticsearch-master.logging.svc.cluster.local:9200
- K6 Metrics:
http://k6-metrics.stress-testing.svc.cluster.local:5656
- Infraestrutura: CPU, memória, disco, rede
- Aplicação: Response time, throughput, error rate
- Kubernetes: Pod status, node health, resource usage
- Custom: Métricas específicas da aplicação
- Cluster Health: Pods não saudáveis, nodes offline
- Performance: High response time, low throughput
- Security: Failed authentication, suspicious activity
- Resources: High CPU/memory usage, disk space
- Availability: Service downtime, health check failures
- DevOps Dashboard: Métricas específicas para operações DevOps
- SRE Dashboard: SLA/SLO e business metrics
- APM Dashboard: Performance e distributed tracing
- Logs Dashboard: Agregação e análise de logs
- Stress Testing Dashboard: Resultados dos testes de estresse
-
Network Level:
- VPC com subnets isoladas
- Firewall restrito para IPs corporativos
- Cloud NAT para saída controlada
-
Cluster Level:
- RBAC granular e específico
- Network Policies para isolamento entre namespaces
- Pod Security Standards (restricted/baseline)
-
Application Level:
- SSL/TLS automático com Let's Encrypt
- Secrets management via Kubernetes
- Ingress com HTTPS forçado
-
Infrastructure Level:
- KMS encryption para dados sensíveis
- Service accounts com privilégios mínimos
- Audit logging habilitado
- Default Deny: Isolamento padrão para todos os namespaces
- Monitoring Allow: Acesso controlado ao namespace de monitoramento
- DevOps/SRE: Isolamento específico para aplicações
- APM/Logging: Isolamento para ferramentas de observabilidade
- Restricted: Máximo nível de segurança para produção
- Baseline: Nível intermediário para desenvolvimento
- Audit Mode: Monitoramento sem enforcement
- K6: Testes de performance com JavaScript
- Cenários Avançados: Múltiplos cenários de carga
- Métricas Customizadas: Taxa de erro, tempo de resposta
- Ramp Up: Aumento gradual da carga (2 min)
- Sustained Load: Carga constante (5 min)
- Peak Load: Pico de carga (2 min)
- Ramp Down: Redução gradual (3 min)
- Response Time: P50, P95, P99
- Throughput: Requests per second
- Error Rate: Taxa de erros
- Resource Usage: CPU, memória, rede
- CronJob: Execução automática a cada 6 horas
- Monitoring: Métricas em tempo real
- Alerting: Notificações automáticas
- Reporting: Dashboards com resultados
- Code Push: Trigger automático no GitHub
- Infrastructure: Terraform plan/apply
- Application: Deploy da aplicação
- Monitoring: Deploy do stack de monitoramento
- Testing: Execução de testes de estresse
- Health Check: Verificação de saúde
- GitHub Actions:
pipelines/terraform.yml - Cloud Build:
pipelines/cloudbuild.yaml - Cert-Manager:
pipelines/terraform-cert-manager.yml
- Backup: Backup automático diário
- Security Scan: Verificação de vulnerabilidades
- Cleanup: Limpeza de recursos obsoletos
- Notifications: Alertas por email/Slack
- Multi-Zone: Distribuição em múltiplas zonas (us-west1-a, us-west1-b, us-west1-c)
- Auto-Scaling: Escalabilidade automática (1-2 nodes por zona)
- Load Balancing: Balanceamento global com health checks
- Redundancy: Múltiplas réplicas de aplicação
- Auto-Recovery: Recuperação automática de falhas
- Uptime: 99.9% (8.76 horas de downtime por ano)
- Recovery Time: < 5 minutos para falhas simples
- Data Loss: 0% (backup automático)
- Performance: P95 < 500ms response time
- Resource Limits: Limites de recursos para evitar overspending
- Auto-Scaling: Escala para baixo em períodos de baixa demanda
- Monitoring: Alertas de custo em tempo real
- Cleanup: Remoção automática de recursos não utilizados
- GKE: ~$150-300/mês (dependendo do uso)
- Monitoring: ~$50-100/mês
- Storage: ~$20-50/mês
- Network: ~$30-80/mês
- Total Estimado: ~$250-530/mês
# Verificar status do cluster
gcloud container clusters describe augustosredevops-cluster --region us-west1
# Verificar logs do master
gcloud logging read "resource.type=gke_cluster" --limit=50# Verificar eventos dos pods
kubectl get events --sort-by='.lastTimestamp'
# Verificar logs dos pods
kubectl logs -n <namespace> <pod-name># Verificar políticas de rede
kubectl get networkpolicies --all-namespaces
# Verificar configuração do ingress
kubectl describe ingress -n <namespace># Verificar status do Prometheus
kubectl get pods -n monitoring
# Verificar logs do Grafana
kubectl logs -f deployment/grafana -n monitoring# Status geral do cluster
kubectl get all --all-namespaces
# Verificar recursos
kubectl top nodes
kubectl top pods --all-namespaces
# Verificar logs de todos os pods
kubectl logs --all-containers=true --all-namespaces --tail=100
# Verificar eventos
kubectl get events --all-namespaces --sort-by='.lastTimestamp'- Terraform GCP Provider
- Kubernetes Documentation
- Prometheus Documentation
- Grafana Documentation
- Jaeger Documentation
- k9s: Terminal UI para Kubernetes
- Lens: IDE para Kubernetes
- Octant: Dashboard para Kubernetes
- Popeye: Auditoria de clusters Kubernetes
- Fork o projeto
- Crie uma branch para sua feature (
git checkout -b feature/AmazingFeature) - Commit suas mudanças (
git commit -m 'Add some AmazingFeature') - Push para a branch (
git push origin feature/AmazingFeature) - Abra um Pull Request
Este projeto está sob a licença MIT. Veja o arquivo LICENSE para mais detalhes.
Para suporte e dúvidas:
- Issues: GitHub Issues
- Email: augustojoselg@sysmac-nf.com.br
- Slack: #sre-support
Desenvolvido com ❤️ pela equipe de SRE
- ✅ Infraestrutura GCP: VPC, GKE, Load Balancer, DNS
- ✅ Monitoramento: Prometheus + Grafana + AlertManager
- ✅ APM Stack: Jaeger + Kiali com dashboards customizados
- ✅ Logs Centralizados: Elasticsearch + Kibana
- ✅ Segurança: Network Policies + RBAC + Pod Security Standards
- ✅ SSL/TLS: Certificados automáticos com Let's Encrypt
- ✅ Testes de Estresse: K6 com cenários avançados
- ✅ CI/CD: GitHub Actions + Cloud Build
- ✅ Documentação: READMEs específicos para cada componente
- 🎯 Vault Integration: Gerenciamento de secrets avançado
- 🎯 Cloud Armor: Proteção contra ataques web
- 🎯 Binary Authorization: Validação de imagens
- 🎯 Falco: Detecção de intrusão em tempo real
Projeto 100% funcional e em produção! 🚀