Skip to content

Latest commit

 

History

History

README.md

Samples - Kubernetes Multi-Account AWS Platform

Este diretório contém todos os exemplos de código e configurações extraídos do PRD.

Versões Mínimas Recomendadas

Componente Versão Notas
Terraform 1.6+ Testing framework
EKS 1.29+ Pod Identity support
Argo CD 2.10+ ApplicationSets GA
Helm 3.14+ OCI support
Mimir 2.11+ Ingest storage
Loki 3.0+ TSDB backend
Tempo 2.4+ vParquet3
Istio 1.20+ Ambient mesh ready
KEDA 2.13+ AWS scalers
Keycloak 24+ Quarkus-based
Backstage 1.24+ New frontend system

Estrutura

samples/
├── terraform/                  # Código Terraform/HCL
│   ├── modules/                # Módulos reutilizáveis (VPC, EKS, RDS, etc.)
│   └── environments/           # Exemplo de estrutura por ambiente
├── argocd/                     # Configuração Argo CD (GitOps)
├── observability/              # Stack de observabilidade (Mimir, Loki, Tempo)
│   └── dashboards/             # Dashboards Grafana (platform, service-health, Istio, etc.)
├── helm/                       # Helm values e templates
│   ├── chart-base/             # Chart Helm base para microserviços
│   ├── values/                 # Arquivos values.yaml
│   └── templates/              # Templates Helm
├── keycloak/                   # Configuração Keycloak SSO
│   ├── realms/                 # Realms (platform, services)
│   └── clients/                # Clients OIDC (ArgoCD, Grafana, Backstage)
├── kubernetes/                 # Manifests Kubernetes
├── github-actions/             # Workflows GitHub Actions
├── backstage/                  # Templates e plugins Backstage
│   ├── templates/              # Software templates
│   ├── skeleton/               # Skeletons para novo serviço
│   └── plugins/                # Plugins customizados (Secrets Manager)
├── scripts/                    # Scripts de automação
├── multi-region/               # Configurações multi-região
│   ├── route53/                # Failover DNS
│   └── replication/            # Replicação cross-region
└── config/                     # Configurações diversas

Terraform

Módulos Reutilizáveis

Módulo Descrição
modules/vpc/ VPC com 3 AZs, subnets públicas/privadas, NAT Gateway, Flow Logs
modules/eks/ Cluster EKS com IRSA, Node Groups, Addons (VPC-CNI, CoreDNS, EBS-CSI)
modules/rds/ RDS PostgreSQL com Multi-AZ, encryption, Secrets Manager
modules/kms/ KMS keys para EKS, RDS, S3 e Secrets Manager
modules/sqs/ SQS Queue + DLQ com CloudWatch Alarms
modules/s3/ S3 Bucket com versionamento, lifecycle rules, encryption
modules/dynamodb/ DynamoDB Table com GSI, autoscaling, streams
modules/elasticache/ ElastiCache Redis com replicação e HA

Ambiente de Exemplo

Arquivo Descrição
environments/hml/us-east-1/ Exemplo completo de ambiente HML

Arquivos Individuais

Arquivo Descrição
irsa-example.tf Exemplo de IRSA (IAM Roles for Service Accounts)
node-groups.tf Configuração de Node Groups EKS

Argo CD

Arquivo Descrição
app-of-apps.yaml Root Application pattern (App of Apps)
applicationset-services.yaml ApplicationSet para descoberta automática de serviços
applicationset-platform.yaml ApplicationSet para componentes de plataforma
project-platform.yaml AppProject para componentes de plataforma
project-services.yaml AppProject para serviços de aplicação

Observability

Arquivo Descrição
mimir-values.yaml Mimir Distributed - armazenamento de métricas
loki-values.yaml Loki - agregação de logs
tempo-values.yaml Tempo Distributed - tracing distribuído
alertmanager-rules.yaml Regras de alertas (Prometheus/Alertmanager)
dashboards/platform-overview.json Dashboard Grafana - visão geral da plataforma
dashboards/service-health.json Dashboard de saúde de serviços
dashboards/istio-mesh.json Dashboard do Istio Service Mesh
dashboards/keycloak.json Dashboard de métricas do Keycloak
dashboards/multi-region.json Dashboard de status multi-região
dashboards/slo-dashboard.json Dashboard de SLOs

Helm Values

Arquivo Descrição
argocd-ha-values.yaml Configuração HA para Argo CD
auth-values.yaml Configuração de autenticação OIDC/JWT
grafana-datasources.yaml Datasources federados Grafana
istio-meshconfig.yaml Configuração do Service Mesh Istio
keda-values.yaml Configuração KEDA para autoscaling
keycloak-values.yaml Deployment do Keycloak
otel-collector-config.yaml OpenTelemetry Collector
secrets-values.yaml External Secrets por serviço
service-hml-values.yaml Template de values para HML
service-mesh-values.yaml Configuração Service Mesh
service-prod-values.yaml Exemplo de values para Prod

Helm Templates

Arquivo Descrição
authorization-policy.yaml AuthorizationPolicy Istio
deployment-secrets-snippet.yaml Snippet de uso de secrets no deployment
destinationrule.yaml DestinationRule Istio
external-secret.yaml ExternalSecret para AWS Secrets Manager
request-authentication.yaml RequestAuthentication Istio JWT
scaled-object.yaml KEDA ScaledObject
virtualservice.yaml VirtualService Istio

Helm Chart Base

Chart Helm base completo para microserviços com todas as features da plataforma.

Arquivo Descrição
Chart.yaml Definição do chart base
values.yaml Valores padrão com todas as features
templates/deployment.yaml Deployment completo com security contexts
templates/service.yaml Kubernetes Service
templates/hpa.yaml HPA com suporte a KEDA
templates/pdb.yaml PodDisruptionBudget
templates/configmap.yaml ConfigMap template
templates/serviceaccount.yaml ServiceAccount com IRSA
templates/networkpolicy.yaml NetworkPolicy
templates/_helpers.tpl Helper templates
README.md Documentação do chart

Keycloak

Configuração de realms e clients para SSO integrado.

Arquivo Descrição
realms/helpdev-platform/realm.json Realm para ferramentas (SSO plataforma)
realms/helpdev-services/realm.json Realm para comunicação serviço-a-serviço
clients/argocd.json Client OIDC para Argo CD
clients/grafana.json Client OIDC para Grafana
clients/backstage.json Client OIDC para Backstage
README.md Documentação do Keycloak

Kubernetes Manifests

Arquivo Descrição
cluster-secret-store.yaml ClusterSecretStore + ServiceAccount IRSA
labels-annotations-example.yaml Labels e annotations padrão
namespace-istio-example.yaml Namespace com Istio injection
network-policy-default-deny.yaml NetworkPolicy default deny
pdb-example.yaml PodDisruptionBudget
peer-authentication.yaml PeerAuthentication mTLS
pod-security-namespace.yaml Namespace com Pod Security Standards
topology-spread.yaml TopologySpreadConstraints
service-monitor.yaml ServiceMonitor para scraping Prometheus
pod-monitor.yaml PodMonitor para pods específicos
ingress-gateway.yaml Istio IngressGateway
gateway.yaml Istio Gateway resource
sidecar.yaml Istio Sidecar e ServiceEntry

GitHub Actions

Arquivo Descrição
ci-cd-pipeline.yaml Pipeline CI/CD completo
java-service-workflow.yaml Workflow reutilizável para Java
service-ci-cd.yaml CI/CD de exemplo para serviço

Backstage

Templates

Arquivo Descrição
new-microservice-template.yaml Software Template para novo microserviço
new-aws-resource-template.yaml Software Template para criar recursos AWS (SQS, RDS, S3, etc.)
catalog-info-example.yaml Exemplo de catalog-info.yaml
catalog-info-template.yaml Template de catalog-info.yaml

Skeletons

Diretório Descrição
skeleton/code/ Skeleton para código de serviço (Dockerfile, application.yaml)
skeleton/infra/ Skeleton para repositório de infra (Helm chart, values por ambiente)

Plugins

Arquivo Descrição
permissions.ts Definições de permissões RBAC
router.ts Backend router do Secrets Manager
SecretsTable.tsx Componente UI de listagem de secrets
SecretDetails.tsx Visualização detalhada de secret
CreateSecretDialog.tsx Dialog para criação de secrets
RotateSecretDialog.tsx Dialog para rotação de secrets
SecretsManagerApi.ts Cliente de API para Secrets Manager
awsClient.ts Cliente AWS Secrets Manager (backend)

Scripts

Scripts de automação e operações.

Arquivo Descrição
bootstrap-cluster.sh Setup inicial do cluster EKS
promote-to-prod.sh Helper para promoção para produção
rollback.sh Script de rollback emergencial

Multi-Region

Configurações e exemplos para deployments multi-região.

Arquivo Descrição
phased-rollout-config.yaml Configuração de rollout faseado com Argo Rollouts
route53-failover.tf Setup de failover Route53
cross-region-replication.tf Replicação cross-region (ECR, S3, Secrets)
README.md Documentação de multi-região

Config

Arquivo Descrição
argocd-oidc-config.yaml Configuração OIDC do Argo CD
grafana-oauth-config.yaml Configuração OAuth do Grafana
iam-policy-external-secrets.json IAM Policy para External Secrets

Uso

Estes exemplos são referências para implementação. Adapte conforme necessário:

  1. Terraform: Copie e ajuste para seu módulo
  2. Helm: Use como base para seus charts ou values
  3. Kubernetes: Aplique diretamente com kubectl apply -f
  4. GitHub Actions: Copie para .github/workflows/
  5. Backstage: Integre nos plugins e templates do seu portal

Notas

  • Substitua valores como 123456789 (AWS account ID), domínios, e nomes de serviços
  • Revise as configurações de segurança antes de usar em produção
  • Consulte o PRD para contexto completo de cada configuração

Convenções de Nomenclatura

Os samples seguem as convenções definidas no PRD:

Recursos AWS

Recurso Padrão Exemplo
VPC helpdev-{env}-{region}-vpc helpdev-prod-us-east-1-vpc
Cluster EKS eks-{env}-{region_short} eks-hml-use1, eks-prod-sae1
S3 Bucket helpdev-{purpose}-{env}-{region}-{suffix} helpdev-mimir-prod-us-east-1-blocks
RDS helpdev-{env}-{region}-{service}-db helpdev-prod-us-east-1-keycloak-db
Secrets helpdev/{env}/{region}/{domain}/{service}/{type} helpdev/prod/us-east-1/payments/checkout/database

Códigos de Região

Região AWS Código Curto Status
us-east-1 use1 ✅ Implementado
sa-east-1 sae1 📋 Preparado
eu-west-1 euw1 📋 Futuro

Variáveis de Ambiente

Os samples usam variáveis de ambiente para configuração dinâmica:

Variável Descrição Valores
${ENVIRONMENT} Ambiente de deploy hml, prod
${REGION} Região AWS us-east-1, sa-east-1
${MIMIR_RETENTION} Retenção Mimir PROD: 90d, HML: 7d
${LOKI_RETENTION} Retenção Loki PROD: 720h, HML: 72h
${TEMPO_RETENTION} Retenção Tempo PROD: 168h, HML: 24h

✅ Implementação Completa

Todos os samples planejados no roadmap foram implementados! O repositório agora contém:

Categoria Arquivos Status
Terraform Modules 8 módulos ✅ Completo
Argo CD 5 arquivos ✅ Completo
Observability + Dashboards 11 arquivos ✅ Completo
Helm Values 11 arquivos ✅ Completo
Helm Templates 7 arquivos ✅ Completo
Helm Chart Base 11 arquivos Novo
Keycloak Config 6 arquivos Novo
Kubernetes Manifests 13 arquivos ✅ Completo
GitHub Actions 6 arquivos ✅ Completo
Backstage 13 arquivos ✅ Completo
Scripts 3 arquivos Novo
Multi-Region 4 arquivos Novo
Config 3 arquivos ✅ Completo
Total ~100 arquivos

🚀 Oportunidades Futuras (Roadmap)

Esta seção documenta possíveis extensões futuras para o repositório.

🟡 Extensões Potenciais

Dashboards Adicionais

  • Dashboard de custos (Cost Explorer integration)
  • Dashboard de compliance/security
  • Dashboard de GitOps (Argo CD sync status)

Terraform Módulos Adicionais

  • módulo API Gateway
  • módulo EventBridge
  • módulo Step Functions
  • módulo ECS (para workloads específicos)

Políticas e Compliance

  • OPA/Gatekeeper policies
  • Kyverno policies
  • AWS Config rules

CI/CD Avançado

  • Workflow para bibliotecas (npm/maven publish)
  • Workflow para Terraform modules
  • Workflow para Helm chart releases

Resumo de Oportunidades Futuras

Prioridade Categoria Status
🟡 Média Dashboards Adicionais Planejado
🟡 Média Terraform Modules Planejado
🟢 Baixa Políticas Planejado
🟢 Baixa CI/CD Avançado Planejado

💡 Contribuições são bem-vindas! Se você implementar algum destes samples, abra um PR.