<p>We have components which use the Go library to write status to prometheus,
we are able to see the data in Prometheus UI,
we have components <strong>outside the K8S cluster</strong> which need to <em>pull the data</em> from
Prometheus , how can I expose this metrics? is there any components which I should use ?</p>

NSS
<p>You may want to check the <a href="https://prometheus.io/docs/prometheus/latest/federation/#federation" rel="nofollow noreferrer">Federation</a> section of the Prometheus documents.</p>
<blockquote>
<p>Federation allows a Prometheus server to scrape selected time series
from another Prometheus server. Commonly, it is used to either achieve scalable Prometheus monitoring setups or to pull related metrics from one service's Prometheus into another.</p>
</blockquote>
<p>It would require to expose Prometheus service out of the cluster with Ingress or nodePort and configure the Center Prometheus to scrape metrics from the exposed service endpoint. You will have set also some proper authentication. Here`s an <a href="https://mattermost.com/blog/monitoring-a-multi-cluster-environment-using-prometheus-federation-and-grafana/" rel="nofollow noreferrer">example</a> of it.</p>
<p>Second way that comes to my mind is to use <a href="https://github.com/kubernetes/kube-state-metrics" rel="nofollow noreferrer">Kube-state-metrics</a></p>
<blockquote>
<p>kube-state-metrics is a simple service that listens to the Kubernetes
API server and generates metrics about the state of the objects.</p>
</blockquote>
<p>Metrics are exported on the HTTP endpoint and designed to be consumed either by Prometheus itself or by scraper that is compatible with Prometheus client endpoints. However this differ from the Metrics Server and generate metrics about the state of Kubernetes objects: node status, node capacity, number of desired replicas, pod status etc.</p>
