additionalScrapeConfigs 에 직접 target을 작성하다보면 1000줄, 2000줄이 넘어가 values.yaml파일이 길어져 관리가 힘들어집니다..
그렇기 때문에 Scrape Targets을 외부 Secret으로 빼고 Secret을 참조하는방식으로 관리하도록 변경했습니다.
기존에 values.yaml의 prometheus.prometheusSpec.additionalScrapeConfigs에 적혀있던 설정을 파일로 따로 작성합니다.
- job_name: server1
static_configs:
- targets: ["1.1.1.1:9100"]
labels:
alias: "server1"
job: "node-exporter"
component: "linux-server"
- job_name: server2
static_configs:
- targets: ["1.1.1.2:9100"]
labels:
alias: "server2"
job: "node-exporter"
component: "linux-server"
kubectl create secret generic --from-file=prometheus-scrape-target.yaml --dry-run=client -o yaml > additional-scrape-target.yaml
위 명령어는 방금 작성한 파일을 기준으로 쿠버네티스 시크릿을 생성할 수 있는 secret manifest yaml파일을 생성합니다.
생성된 additional-scrape-target.yaml 파일을 기준으로 시크릿을 생성합니다.
kubectl apply -f additional-scrape-target.yaml
기존 values.yaml에
prometheus.prometheusSpec.additionalScrapeConfigs 를 지우고
prometheus.prometheusSpec.additionalScrapeConfigsSecret에 2에서 생성한 시크릿을 참조하도록 작성합니다.
additionalScrapeConfigsSecret:
enabled: true
name: additional-scrape-configs
key: prometheus-scrape-target.yaml
prometheus-scrape-target.yaml을 기준으로 시크릿파일 생성 => 생성된 시크릿파일로 시크릿 생성 => values.yaml에서 그 시크릿을 참조
개인적으로 kube-prometheus-stack가 운영을 할 수록 values의 길이가 길어져 관리가 힘든차에 이러한 방법을 발견했습니다.
참고로 additionalScrapeConfigs 와 additionalScrapeConfigsSecret은 같이 쓰일 수 없습니다