Skip to content

llgasparino/k8s-helm-postgres-exporter

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

K8s Helm PostgreSQL Exporter (com Overlays)

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.

Kubernetes Helm GitLab CI EKS Prometheus PostgreSQL


🚀 Conceito Principal: Estrutura de Overlays

  • 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 a base e o overlay e injeta a senha ($DB_PASSWORD) de forma segura usando helm --set-string.

📁 Estrutura de Arquivos

.
├── .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)

⚙️ Como Funciona o Deploy

  1. Um usuário aciona manualmente o job deploy:production no GitLab.
  2. O runner se conecta ao cluster EKS usando o GitLab Agent ($AGENT_CONTEXT).
  3. O helm upgrade --install é executado, combinando as fontes de configuração:
    1. base/values.yaml (lido primeiro).
    2. overlays/production/values.yaml (lido em seguida, sobrescrevendo a base e adicionando o host/db).
    3. Comando --set-string config.datasource.password="$DB_PASSWORD" (lido por último, injetando a senha).
  4. Após o Helm, o kubectl apply é usado para aplicar o ingress.yaml.

🛠️ Como Usar (Como um Template)

  1. Configure o GitLab Agent: Instale o GitLab Agent no seu cluster EKS.
  2. Configure as Variáveis de CI/CD: No seu projeto GitLab (em Settings > CI/CD > Variables), crie:
    • DB_PASSWORD_PROD: A senha do usuário postgres_exporter. (Marque como "Masked" e "Protected").
  3. Clone este Repositório.
  4. Crie seu Ambiente:
    • Renomeie overlays/production para o nome do seu ambiente (ex: staging).
    • Atualize o .gitlab-ci.yml para usar o nome do seu ambiente (CLUSTER_NAME: "staging") e aponte para a variável de senha correta (ex: $DB_PASSWORD_STG).
  5. 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 seu AGENT_CONTEXT.
  6. Execute a Pipeline.

About

Template de deploy para o prometheus-postgres-exporter no Kubernetes (EKS) usando Helm e CI/CD.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published