【问题标题】:Kube-Prometheus-Stack and securing external node-exporterKube-Prometheus-Stack 和保护外部节点导出器
【发布时间】:2021-05-12 10:18:54
【问题描述】:

我想使用 tls 和身份验证保护我的外部节点导出器,以便在我的网络中,不是每个人都能够访问节点导出器公开的指标。

在 prometheus 方面,我有服务、Servicemonitor 和端点:

apiVersion: v1
kind: Service
metadata:
  annotations:
    meta.helm.sh/release-name: prom00
    meta.helm.sh/release-namespace: monitoring-dev
    prometheus.io/scrape: 'true'
  labels:
    app: node-exporter-vm-agent
    jobLabel: node-exporter-vm-agent
    release: prom00
  name: prom00-node-exporter-vm-agent
  namespace: monitoring-dev
spec:
  externalName: 192.168.1.72
  ports:
  - name: metrics
    port: 9100
    protocol: TCP
    targetPort: 9100
  selector:
    app: vm-agent
    release: prom00
  type: ExternalName

apiVersion: monitoring.coreos.com/v1
kind: ServiceMonitor
metadata:
  annotations:
    meta.helm.sh/release-name: prom00
    meta.helm.sh/release-namespace: monitoring-dev
  labels:
    app: node-exporter-vm-agent
    release: prom00
  name: prom00-node-exporter-vm-agent
  namespace: monitoring-dev
spec:
  endpoints:
    - port: metrics
      scheme: https
      tlsConfig:
        insecureSkipVerify: true
  jobLabel: jobLabel
  selector:
    matchLabels:
      app: node-exporter-vm-agent
      release: prom00

apiVersion: v1
kind: Endpoints
metadata:
  labels:
    app: node-exporter-vm-agent
    jobLabel: node-exporter-vm-agent
    release: prom00
  name: prom00-node-exporter-vm-agent
  namespace: monitoring-dev
subsets:
- addresses:
  - ip: 192.168.1.72
    nodeName: 192.168.1.72
  ports:
  - name: metrics
    port: 9100
    protocol: TCP

在外部节点导出器上,我有 web.yml,其中包含生成的 crt 和密钥文件以及使用 htpasswd 生成的密码。

tls_server_config:
  cert_file: node_exporter.crt
  key_file: node_exporter.key
  # basic_auth_users:
  # prometheus: $2y$10$V2RmZ2wKC7S8jhEz1OXRKOLkq1UHw4qlgpHT.hMg7B447dJQl7RqS

我可以通过使用 insecureSkipVerify: true 来使用自行生成的证书。 如果我使用用户:prometheus 和密码启用 basic_auth_users,它会在我尝试访问节点导出器并输入用户/密码时起作用。

但是如何将 basic_auth 实现到 yaml 中以创建凭据 / 或正确的命令是什么。? 如果 prometheus 使用 helm 部署,是否有更好的方法来保护外部节点导出器?

感谢您的帮助!

【问题讨论】:

    标签: prometheus kubernetes-helm tls1.2 prometheus-node-exporter


    【解决方案1】:

    要完成此操作,请在此主题的注释下方:

    apiVersion: monitoring.coreos.com/v1
    kind: ServiceMonitor
    metadata:
      annotations:
        meta.helm.sh/release-name: prom00
        meta.helm.sh/release-namespace: monitoring-dev
      labels:
        app: node-exporter-vm-agent
        release: prom00
      name: prom00-node-exporter-vm-agent
      namespace: monitoring-dev
    spec:
      endpoints:
        - port: metrics
          scheme: https
          basicAuth:
            username:
              key: username
              name: basic-auth
            password:
              key: password
              name: basic-auth
          tlsConfig:
            insecureSkipVerify: true
      jobLabel: jobLabel
      selector:
        matchLabels:
          app: node-exporter-vm-agent
          release: prom00
    

    对于秘密:我已经创建了它: kubectl -n monitoring-dev create secret generic basic-auth --from-literal=username='prometheus' --from-literal=password='password'

    在节点导出器上,我创建了一个 web-config.yml 文件:

    tls_server_config: cert_file: ../cert/prom_node_exp.crt key_file: ../cert/prom_node_expnopass.key 基本身份验证用户: 普罗米修斯:$2y$10$W.nywLSnmQjagtmT6k4uLedGhk1sWMMG3Rspv2r6Z0CzGmLJUveFC

    --> 用户的密码是通过以下方式创建的:htpasswd -nBC 10 "" | tr -d ':\n'

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-08-05
      • 2021-09-06
      • 2021-12-10
      • 2021-04-30
      • 2022-10-04
      • 2021-06-27
      相关资源
      最近更新 更多