web-dev-qa-db-fra.com

K8S - utiliser Prometheus pour surveiller une autre instance de prometheus de manière sécurisée

J'ai installé opérateur Prometheus0.34 (qui fonctionne comme prévu) sur le cluster [~ # ~] a [~ # ~] (bal principale) Maintenant, je veux utiliser le - fédération option, je veux dire collecter des métriques à partir d'autres Prometheus qui se trouvent sur un autre cluster K8S [~ # ~] b [~ # ~]

Secnario:

  1. avoir dans le cluster [~ # ~] un [~ # ~] MAIN opérateur prometheusv0.34config
  2. J'ai dans le cluster [~ # ~] b [~ # ~] SLAVE prometheus2.13.1config

Les deux installés avec succès via Helm, je peux accéder à localhost via port-forwarding et voir les résultats de raclage sur chaque cluster.

J'ai fait les étapes suivantes

Utiliser sur l'opérateur (cluster principal A) additionalScrapeconfig J'ai ajouté ce qui suit au values.yaml fichier et le mettre à jour via 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

J'ai pris la cible comme suit:

sur prometheus à l'intérieur cluster B (à partir duquel je souhaite collecter les données) J'utilise:

kubectl get svc -n monitoring

Et obtenez les entrées suivantes:

A pris la EXTERNAL-IP et placez-le dans l'entrée de configuration additionalScrapeConfigs.

Maintenant, je passe au cluster A et j'exécute kubectl port-forward svc/mon-prometheus-operator-prometheus 9090:9090 -n monitoring

Ouvrez le navigateur avec localhost:9090 voir les graphiques et cliquer sur Status et là cliquer sur Targets

Et voyez la nouvelle cible avec le travail federate

enter image description here

Maintenant ma principale question/lacunes. (Vérification de sécurité)

  1. Pour pouvoir voir cette cible state sur vert (voir l'image), je configure le serveur prometheus dans le cluster B au lieu d'utiliser type:NodePort utiliser type:LoadBalacer qui expose les métriques à l'extérieur, cela peut être bon pour les tests mais je dois le sécuriser , comment cela peut-il être fait? Comment faire fonctionner l'e2e de manière sécurisée ...

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

À l'intérieur du cluster A (cluster principal), nous utilisons un certificat pour nos services avec istio comme pour suivre ce qui fonctionne

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

Je vois qu'à l'intérieur du doc ​​il y a une option pour configurer

    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

Mais vous ne savez pas quel certificat je dois utiliser dans la configuration de l'opérateur prometheus, le certificat du prometheus principal A ou l'esclave B?

7
Rayn D
  1. Vous devriez envisager d'utiliser Configuration supplémentaire Scrape

AdditionalScrapeConfigs permet de spécifier une clé d'un Secret contenant des configurations supplémentaires de gratter Prometheus. Les configurations de raclage spécifiées sont ajoutées aux configurations générées par l'opérateur Prometheus.

  1. J'ai peur que cela ne soit pas officiellement pris en charge. Cependant, vous pouvez mettre à jour votre prometheus.yml section dans le graphique Helm. Si vous voulez en savoir plus, consultez ce blog

  2. Je vois deux options ici:

Les connexions à Prometheus et à ses exportateurs ne sont pas chiffrées et authentifiées par défaut. C'est une façon de résoudre ce problème avec les certificats TLS et Stunnel .

Ou spécifiez Secrets que vous pouvez ajouter à votre configuration de raclage.

Veuillez me faire savoir si cela a aidé.

2
OhHiMark

Quelques options me viennent à l'esprit:

  1. Placez les deux clusters dans le même espace réseau et placez un pare-feu devant eux
  2. Tunnel VPN entre les clusters.
  3. Utilisez le routage istio multicluster (mais cela pourrait devenir compliqué): https://istio.io/docs/setup/install/multicluster
1
Wayne Shelley