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:
- avoir dans le cluster [~ # ~] un [~ # ~] MAIN opérateur prometheus
v0.34
config- J'ai dans le cluster [~ # ~] b [~ # ~] SLAVE prometheus
2.13.1
config
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
Maintenant ma principale question/lacunes. (Vérification de sécurité)
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?
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.
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
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é.
Quelques options me viennent à l'esprit: