prometheus operator를 통해 prometheus를 설치한 환경에서 prometheus 컨테이너 내부의 prometheus.yml 설정 파일을 수정하면서 겪은 문제(?)를 어떻게 해결했는지 남기기 위해
ConfigMap 이란?
단어 그대로 설정(Config)을 키-값(Map)형태로 저장하는데 사용
ConfigMap에 데이터를 저장하고, 컨테이너에서 ConfigMap에 접근하여 데이터를 획득하여 사용ConfigMap에 대해서는 별도의 Post에서 자세히 알아보자
apiVersion: v1
kind: ConfigMap
metadata:
name: prometheus-cm
namespace: monitoring
data:
prometheus.yml: |
# my global config
global:
scrape_interval: 15s # Set the scrape interval to every 15 seconds. Default is every 1 minute.
...
static_configs:
- targets: ["localhost:9090"]
apiVersion: monitoring.coreos.com/v1
kind: Prometheus
metadata:
name: k8s
namespace: monitoring
...
spec:
containers:
- name: prometheus
volumeMounts:
- mountPath: /etc/prometheus
name: prometheus-cm
subPath: prometheus.yml
...
volumes:
- configMap:
items:
- key: prometheus.yml
path: prometheus.yml
name: prometheus-cm
volumeMounts를 할 때 mountPath에 해당 경로의 어떤 파일인지 파일명까지 넣어야 하는데, 해당 파일이 위치한 경로까지만 잡아줘서 문제 발생.
과정에서 volumeMounts의 mountPath 수정
apiVersion: monitoring.coreos.com/v1
kind: Prometheus
metadata:
name: k8s
namespace: monitoring
...
spec:
containers:
- name: prometheus
volumeMounts:
- mountPath: /etc/prometheus/prometheus.yml
name: prometheus-cm
subPath: prometheus.yml
...
volumes:
- configMap:
items:
- key: prometheus.yml
path: prometheus.yml
name: prometheus-cm # volumeMounts의 name과 일치
name: prometheus-cm # 사용할 configMap 이름