首页 > 解决方案 > 如何将 TLS 证书放入 pod 以与 Prometheus helm chart 一起使用?

问题描述

以下是 helm 图表值stable/prometheushttps ://github.com/helm/charts/blob/master/stable/prometheus/values.yaml

我能够让它工作:

helm upgrade --install prometheus stable/prometheus \
--set extraScrapeConfigs="- job_name: 'myjob'
  scrape_interval: 1s
  metrics_path: /metrics
  scheme: https
  static_configs:
    - targets: ['###.##.###.###:#####']
  tls_config:
    ca_file: /prometheus/ca.pem
    key_file: /prometheus/key.pem
    cert_file: /prometheus/cert.pem
    insecure_skip_verify: true"

为了做到这一点,我必须这样做:

kubectl cp localdir/ca.pem prometheus-server-abc:/prometheus -c prometheus-server
kubectl cp localdir/key.pem prometheus-server-abc:/prometheus -c prometheus-server
kubectl cp localdir/cert.pem prometheus-server-abc:/prometheus -c prometheus-server

我相信使用 and 有更好、更合适的方法来做到这Secret一点mountPath。我尝试了以下类似的方法,但没有运气:

apiVersion: v1
kind: Secret
metadata:
  name: mysecret
data:
  ca.pem: base64encodedcapem
  key.pem: base64encodedkeypem
  cert.pem: base64encodedcertpem
kubectl apply -f mysecret
helm upgrade --install prometheus stable/prometheus \
--set extraSecretMounts="- name: mysecret-mount
  mountPath: /somepathinpod/mysecret
  secretName: mysecret" \
--set extraScrapeConfigs="- job_name: 'myjob'
  scrape_interval: 1s
  metrics_path: /metrics
  scheme: https
  static_configs:
    - targets: ['###.##.###.###:#####']
  tls_config:
    ca_file: /somepathinpod/mysecret/ca.pem
    key_file: /somepathinpod/mysecret/key.pem
    cert_file: /somepathinpod/mysecret/cert.pem
    insecure_skip_verify: true"

我希望证书会神奇地出现,/somepathinpod但他们没有。

我假设我不必克隆整个 repo 并手动编辑 helm 图表以将 avolumeMount放入prometheus-server部署/pod 中,并且可以以某种方式更改我的 helm 命令。关于如何在那里获得我的证书的任何建议?

标签: kubernetesprometheuskubernetes-helm

解决方案


根据文档,正确使用的密钥将server.extraSecretMounts不仅仅是extraSecretMounts.

还要通过以下方式验证 Kubernetes 上生成的 YAML 是否包含正确的挂载:

kubectl get deployment prometheus-server-object-name -o yaml

覆盖.yaml

server:
  extraSecretMounts:
    - name: mysecret-mount
      mountPath: /etc/config/mysecret
      secretName: mysecret

extraScrapeConfigs: |
  - job_name: myjob
    scrape_interval: 15s
    metrics_path: /metrics
    scheme: https
    static_configs:
      - targets:
          - ###.##.###.###:#####
    tls_config:
      ca_file: /etc/config/mysecret/ca.pem
      key_file: /etc/config/mysecret/key.pem
      cert_file: /etc/config/mysecret/cert.pem
      insecure_skip_verify: true
helm upgrade -f override.yaml prometheus stable/prometheus

推荐阅读