參考:
https://www.prometheus.wang/operator/use-custom-configuration-in-operator.html
在Prometheus Operator我們通過聲明式的創建如Prometheus, ServiceMonitor這些自定義的資源類型來自動化部署和管理Prometheus的相關組件以及配置。而在一些特殊的情況下,對於用戶而言,可能還是希望能夠手動管理Prometheus配置文件,而非通過Prometheus Operator自動完成。 為什么? 實際上Prometheus Operator對於Job的配置只適用於在Kubernetes中部署和管理的應用程序。如果你希望使用Prometheus監控一些其他的資源,例如AWS或者其他平台中的基礎設施或者應用,這些並不在Prometheus Operator的能力范圍之內。
為了能夠在通過Prometheus Operator創建的Prometheus實例中使用自定義配置文件,我們只能創建一個不包含任何與配置文件內容相關的Prometheus實例
apiVersion: monitoring.coreos.com/v1
kind: Prometheus
metadata:
name: inst-cc
namespace: monitoring
spec:
serviceAccountName: prometheus
resources:
requests:
memory: 400Mi
如果查看新建Prometheus的Pod實例YAML定義,我們可以看到Pod中會包含一個volume配置:
volumes:
- name: config
secret:
defaultMode: 420
secretName: prometheus-inst-cc
Prometheus的配置文件實際上是保存在名為prometheus-
通過修改prometheus-inst-cc的內容,從而可以讓用戶可以使用自定義的Prometheus配置文件,作為示例,我們創建一個prometheus.yaml文件並添加以下內容:
global:
scrape_interval: 10s
scrape_timeout: 10s
evaluation_interval: 10s
生成文件內容的base64編碼后的內容:
$ cat prometheus.yaml | base64
Z2xvYmFsOgogIHNjcmFwZV9pbnRlcnZhbDogMTBzCiAgc2NyYXBlX3RpbWVvdXQ6IDEwcwogIGV2YWx1YXRpb25faW50ZXJ2YWw6IDEwcw==
修改名為prometheus-inst-cc的Secret內容,如下所示:
$ kubectl -n monitoring edit secret prometheus-inst-cc
# 省略其它內容
data:
prometheus.yaml: "Z2xvYmFsOgogIHNjcmFwZV9pbnRlcnZhbDogMTBzCiAgc2NyYXBlX3RpbWVvdXQ6IDEwcwogIGV2YWx1YXRpb25faW50ZXJ2YWw6IDEwcw=="