8

我已经在集群A (主舞会)上安装了Prometheus 运算符 0.34(按预期工作)现在我想使用联合选项,我的意思是从位于其他 K8S 集群B上的其他 Prometheus 收集指标

Secnario:

  1. 在集群中有一个主要的普罗米修斯操作员 v0.34 配置
  2. 我在集群B SLAVE prometheus 2.13.1 配置中

两者都通过 helm 成功安装,我可以通过 localhost 访问port-forwarding并查看每个集群上的抓取结果。

我做了以下步骤

在操作员(主集群 A)上使用 additionalScrapeconfig 我已将以下内容添加到values.yaml文件中并通过 helm 更新它。

additionalScrapeConfigs:
 - job_name: 'federate'  
   honor_labels: true
   metrics_path: /federate
   params:
     match[]:
       - '{job="prometheus"}'
       - '{__name__=~"job:.*"}'
   static_configs:
     - targets:
       - 101.62.201.122:9090 # The External-IP and port from the target prometheus on Cluster B

我采取了如下目标:

集群 B内的普罗米修斯上(我想从中收集数据)我使用:

kubectl get svc -n monitoring

并获得以下条目:

EXTERNAL-IP它放在additionalScrapeConfigs配置条目中。

现在我切换到集群A并运行kubectl port-forward svc/mon-prometheus-operator-prometheus 9090:9090 -n monitoring

打开浏览器,localhost:9090查看图表并单击,Status然后单击Targets

并通过工作看到新目标federate

在此处输入图像描述

现在我的主要问题/差距。(安全和验证)

  1. 为了能够看到state绿色的目标(参见图片),我在集群中配置 prometheus 服务器,B而不是使用type:NodePorttype:LoadBalacer指标暴露在外部,这可能有利于测试,但我需要保护它,如何做到? 如何使 e2e 以安全的方式工作......

tls https://prometheus.io/docs/prometheus/1.8/configuration/configuration/#tls_config

集群 A(主集群)内,我们将证书用于输出服务,istio如下所示

tls:
   mode: SIMPLE
   privateKey: /etc/istio/oss-tls/tls.key
   serverCertificate: /etc/istio/oss-tls/tls.crt

我看到文档里面有一个配置选项

    additionalScrapeConfigs:
     - job_name: 'federate'  
       honor_labels: true
       metrics_path: /federate
       params:
         match[]:
           - '{job="prometheus"}'
           - '{__name__=~"job:.*"}'
       static_configs:
         - targets:
           - 101.62.201.122:9090 # The External-IP and port from the target
#        tls_config:
#          ca_file: /opt/certificate-authority-data.pem
#          cert_file: /opt/client-certificate-data.pem
#          key_file: /sfp4/client-key-data.pem
#          insecure_skip_verify: true

但不确定我需要在 prometheus operator config 中使用哪个证书,主 prometheus A 或从 B 的证书?

4

2 回答 2

2
  1. 您应该考虑使用Additional Scrape Configuration

AdditionalScrapeConfigs允许指定包含其他 Prometheus 抓取配置的 Secret 的密钥。指定的抓取配置附加到 Prometheus Operator 生成的配置中。

  1. 我担心这没有得到官方的支持。但是,您可以prometheus.yml在 Helm 图表中更新您的部分。如果您想了解更多有关它的信息,请查看此博客

  2. 我在这里看到两个选项:

默认情况下,与 Prometheus 及其导出器的连接未加密和验证。这是使用 TLS 证书和 stunnel 解决此问题的一种方法

或者指定可以添加到抓取配置中的秘密。

请让我知道这是否有帮助。

于 2019-11-29T11:45:58.360 回答
1

有几个选项浮现在脑海中:

  1. 将两个集群放在同一个网络空间,并在它们前面放一个防火墙
  2. 集群之间的 VPN 隧道。
  3. 使用 istio 多集群路由(但这可能会变得复杂):https ://istio.io/docs/setup/install/multicluster
于 2019-12-03T23:57:38.343 回答