Este projeto demonstra como implantar o prometheus-postgres-exporter em um cluster Kubernetes (EKS) usando Helm e uma estrutura de "overlays" (sobreposições) para gerenciar diferentes ambientes.
O deploy é feito via GitLab CI/CD e utiliza o GitLab Agent for Kubernetes para uma abordagem GitOps, injetando a senha do banco de dados de forma segura em tempo de execução.
base/values.yaml: Contém todas as configurações padrão do Helm que são comuns a todos os ambientes (ex:resources, anotações do Prometheus).overlays/: Contém uma pasta para cada ambiente (ex:production).overlays/production/values.yaml: Contém valores específicos do ambiente, como o host, usuário e nome do banco de dados. A senha (password) é deixada em branco.overlays/production/ingress.yaml: Manifesto de Kubernetes puro para o AWS ALB Ingress, aplicado separadamente.
.gitlab-ci.yml: É o "cérebro". Ele combina abasee ooverlaye injeta a senha ($DB_PASSWORD) de forma segura usandohelm --set-string.
.
├── .gitlab-ci.yml \# Pipeline que injeta a senha e executa o deploy
├── base/
│ └── values.yaml \# Valores padrão (não-sensíveis)
├── overlays/
│ └── production/
│ └── ingress.yaml \# Manifesto do Ingress (AWS ALB)
└── └── values.yaml \# Overrides de produção (host, db, user)
- Um usuário aciona manualmente o job
deploy:productionno GitLab. - O runner se conecta ao cluster EKS usando o GitLab Agent (
$AGENT_CONTEXT). - O
helm upgrade --installé executado, combinando as fontes de configuração:base/values.yaml(lido primeiro).overlays/production/values.yaml(lido em seguida, sobrescrevendo a base e adicionando o host/db).- Comando
--set-string config.datasource.password="$DB_PASSWORD"(lido por último, injetando a senha).
- Após o Helm, o
kubectl applyé usado para aplicar oingress.yaml.
- Configure o GitLab Agent: Instale o GitLab Agent no seu cluster EKS.
- Configure as Variáveis de CI/CD: No seu projeto GitLab (em
Settings > CI/CD > Variables), crie:DB_PASSWORD_PROD: A senha do usuáriopostgres_exporter. (Marque como "Masked" e "Protected").
- Clone este Repositório.
- Crie seu Ambiente:
- Renomeie
overlays/productionpara o nome do seu ambiente (ex:staging). - Atualize o
.gitlab-ci.ymlpara usar o nome do seu ambiente (CLUSTER_NAME: "staging") e aponte para a variável de senha correta (ex:$DB_PASSWORD_STG).
- Renomeie
- Preencha os Placeholders:
- Em
overlays/seu-ambiente/values.yaml: Adicione o host e o nome do banco de dados. - Em
overlays/seu-ambiente/ingress.yaml: Adicione o ARN do seu certificado, suas subnets e o hostname desejado. - Em
.gitlab-ci.yml: Adicione o caminho do seuAGENT_CONTEXT.
- Em
- Execute a Pipeline.