K8s em Exemplos: Padrão Adapter

O padrão adapter transforma a interface de uma aplicação para corresponder a um padrão esperado por sistemas externos. Diferente de sidecars que adicionam recursos, adapters normalizam interfaces existentes. Use para: expor métricas Prometheus de apps que não suportam, converter formatos de log, padronizar endpoints de health check.

adapter-redis-prometheus.yaml

Redis não expõe métricas Prometheus nativamente. O adapter redis_exporter consulta o Redis e expõe métricas no formato Prometheus na porta 9121. Prometheus coleta do adapter, não do Redis diretamente.

apiVersion: v1
kind: Pod
metadata:
  name: redis-with-metrics
  annotations:
    prometheus.io/scrape: "true"
    prometheus.io/port: "9121"
spec:
  containers:
    - name: redis
      image: redis:7-alpine
      ports:
        - containerPort: 6379

O container adapter conecta ao Redis no localhost:6379 (namespace de rede compartilhado) e traduz a saída do comando INFO do Redis para o formato de métricas Prometheus.

    - name: redis-exporter
      image: oliver006/redis_exporter:v1.55.0
      ports:
        - containerPort: 9121
          name: metrics
      env:
        - name: REDIS_ADDR
          value: "localhost:6379"
terminal

Verifique se o adapter está funcionando checando seu endpoint de métricas. Prometheus coletará deste endpoint automaticamente baseado nas annotations.

$ kubectl port-forward redis-with-metrics 9121:9121 &
Forwarding from 127.0.0.1:9121 -> 9121

$ curl localhost:9121/metrics | head -10
# HELP redis_up Information about the Redis instance
# TYPE redis_up gauge
redis_up 1
# HELP redis_connected_clients Number of client connections
# TYPE redis_connected_clients gauge
redis_connected_clients 2

Índice | GitHub | Use as setas do teclado para navegar |