web-dev-qa-db-ja.com

K8S-Prometheusを使用して別のprometheusインスタンスを安全に監視する

私は Prometheusオペレーター0.34(期待どおりに機能します)をクラスターにインストールしました[〜#〜] a [〜#〜](main prom) federation オプションを使用したいので、他のK8Sクラスターにある他のPrometheusからメトリックを収集します[〜 #〜] b [〜#〜]

Secnario:

  1. クラスター内にある[〜#〜] a [〜#〜]MAIN prometheus operatorv0.34構成
  2. 私はクラスタにいます[〜#〜] b [〜#〜]SLAVE prometheus2.13.1- 構成

どちらもhelm経由で正常にインストールされ、port-forwarding経由でlocalhostにアクセスして、各クラスターのスクレイピング結果を確認できます。

次の手順を実行しました

オペレーターで使用(メインクラスター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で新しいターゲットを確認します

enter image description here

今私の主な質問/ギャップ。 (セキュリティと検証)

  1. 緑のターゲットstateを確認できるようにするには(写真を参照)type:NodePortを使用して type:LoadBalacer を使用する代わりに、クラスターBでプロメテウスサーバーを構成し、外部のメトリックを公開します。 、これはテストに適していますが、セキュリティで保護する必要があります、どのように実行できますか? e2eを安全な方法で動作させる方法...

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

クラスターA(メインクラスター)の内部では、次のようなistioでoutサービスに証明書を使用します

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オペレーターconfig内で使用する必要がある証明書、メインのprometheus AまたはスレーブBの証明書がわかりませんか?

7
Rayn D
  1. 追加のスクレイプ構成 の使用を検討する必要があります

AdditionalScrapeConfigsでは、追加のプロメテウススクレイプ構成を含むシークレットのキーを指定できます。指定されたスクレイプ構成は、Prometheusオペレーターによって生成された構成に追加されます。

  1. これは公式にはサポートされていません。ただし、prometheus.yml Helmチャート内のセクション。詳細については、チェックアウト このブログ をご覧ください。

  2. ここには2つのオプションがあります。

Prometheusおよびそのエクスポーターへの接続は、デフォルトでは暗号化および認証されません。 これはTLS証明書とstunnelでこれを修正する1つの方法です

または Secrets を指定して、スクレイプ構成に追加できます。

問題が解決した場合はお知らせください。

2
OhHiMark

いくつかのオプションが思い浮かびます:

  1. 2つのクラスターを同じネットワークスペースに配置し、その前にファイアウォールを配置する
  2. クラスタ間のVPNトンネル。
  3. Istioマルチクラスタールーティングを使用します(ただし、複雑になる可能性があります): https://istio.io/docs/setup/install/multicluster
1
Wayne Shelley