Skip to content

Commit 0786dad

Browse files
Prometheus should scrape the router by default
Add a new scrape target for the router. The router requires a token with permission to see routers/metrics in route.openshift.io, so create a new service account specifically for scraping and add the appropriate roles. Also create an out of the box prometheus-reader service account which has view access on the current project.
1 parent a63df7b commit 0786dad

File tree

3 files changed

+255
-9
lines changed

3 files changed

+255
-9
lines changed

examples/prometheus/prometheus.yaml

Lines changed: 85 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,53 @@ objects:
4040
serviceaccounts.openshift.io/oauth-redirectreference.prom: '{"kind":"OAuthRedirectReference","apiVersion":"v1","reference":{"kind":"Route","name":"prometheus"}}'
4141
serviceaccounts.openshift.io/oauth-redirectreference.alerts: '{"kind":"OAuthRedirectReference","apiVersion":"v1","reference":{"kind":"Route","name":"alerts"}}'
4242
serviceaccounts.openshift.io/oauth-redirectreference.alertmanager: '{"kind":"OAuthRedirectReference","apiVersion":"v1","reference":{"kind":"Route","name":"alertmanager"}}'
43+
44+
# Create a service account for accessing prometheus data
45+
- apiVersion: v1
46+
kind: ServiceAccount
47+
metadata:
48+
name: prometheus-reader
49+
namespace: "${NAMESPACE}"
50+
51+
# Create a service account for prometheus to use to scrape other infrastructure components
52+
- apiVersion: v1
53+
kind: ServiceAccount
54+
metadata:
55+
name: prometheus-scraper
56+
namespace: "${NAMESPACE}"
57+
58+
- apiVersion: v1
59+
kind: Secret
60+
metadata:
61+
name: prometheus-scraper
62+
namespace: "${NAMESPACE}"
63+
annotations:
64+
kubernetes.io/service-account.name: prometheus-scraper
65+
type: kubernetes.io/service-account-token
66+
67+
- apiVersion: rbac.authorization.k8s.io/v1
68+
kind: ClusterRole
69+
metadata:
70+
name: prometheus-scraper
71+
rules:
72+
- apiGroups:
73+
- route.openshift.io
74+
resources:
75+
- routers/metrics
76+
verbs:
77+
- get
78+
79+
- apiVersion: authorization.openshift.io/v1
80+
kind: ClusterRoleBinding
81+
metadata:
82+
name: prometheus-scraper
83+
roleRef:
84+
name: prometheus-scraper
85+
subjects:
86+
- kind: ServiceAccount
87+
name: prometheus-scraper
88+
namespace: "${NAMESPACE}"
89+
4390
- apiVersion: authorization.openshift.io/v1
4491
kind: ClusterRoleBinding
4592
metadata:
@@ -51,6 +98,18 @@ objects:
5198
name: prometheus
5299
namespace: "${NAMESPACE}"
53100

101+
- apiVersion: authorization.openshift.io/v1
102+
kind: RoleBinding
103+
metadata:
104+
name: prometheus-reader
105+
namespace: "${NAMESPACE}"
106+
roleRef:
107+
name: view
108+
subjects:
109+
- kind: ServiceAccount
110+
name: prometheus-reader
111+
namespace: "${NAMESPACE}"
112+
54113
# Create a fully end-to-end TLS connection to the prometheus proxy
55114
- apiVersion: route.openshift.io/v1
56115
kind: Route
@@ -229,6 +288,8 @@ objects:
229288
name: prometheus-config
230289
- mountPath: /prometheus
231290
name: prometheus-data
291+
- mountPath: /var/run/secrets/kubernetes.io/scraper
292+
name: prometheus-scraper-secret
232293

233294
# Deploy alertmanager behind prometheus-alert-buffer behind an oauth proxy
234295
# use http port=4190 and https port=9943 to differ from prom-proxy
@@ -320,6 +381,9 @@ objects:
320381
configMap:
321382
defaultMode: 420
322383
name: prometheus
384+
- name: prometheus-scraper-secret
385+
secret:
386+
secretName: prometheus-scraper
323387
- name: prometheus-proxy-secret
324388
secret:
325389
secretName: prometheus-proxy
@@ -603,21 +667,39 @@ objects:
603667
- action: labelmap
604668
regex: __meta_kubernetes_node_label_(.+)
605669
670+
# TODO: auto-generate these sections, or add a dynamic infrastructure scraper
606671
# Scrape config for the template service broker
607672
- job_name: 'openshift-template-service-broker'
608673
scheme: https
609674
tls_config:
610675
ca_file: /var/run/secrets/kubernetes.io/serviceaccount/service-ca.crt
611676
server_name: apiserver.openshift-template-service-broker.svc
612-
bearer_token_file: /var/run/secrets/kubernetes.io/serviceaccount/token
613-
677+
bearer_token_file: /var/run/secrets/kubernetes.io/scraper/token
614678
kubernetes_sd_configs:
615679
- role: endpoints
616-
680+
namespaces:
681+
names:
682+
- openshift-template-service-broker
617683
relabel_configs:
618684
- source_labels: [__meta_kubernetes_namespace, __meta_kubernetes_service_name, __meta_kubernetes_endpoint_port_name]
619685
action: keep
620686
regex: openshift-template-service-broker;apiserver;https
687+
# Scrape config for the router
688+
- job_name: 'openshift-router'
689+
scheme: https
690+
tls_config:
691+
ca_file: /var/run/secrets/kubernetes.io/serviceaccount/service-ca.crt
692+
server_name: router.default.svc
693+
bearer_token_file: /var/run/secrets/kubernetes.io/scraper/token
694+
kubernetes_sd_configs:
695+
- role: endpoints
696+
namespaces:
697+
names:
698+
- default
699+
relabel_configs:
700+
- source_labels: [__meta_kubernetes_namespace, __meta_kubernetes_service_name, __meta_kubernetes_endpoint_port_name]
701+
action: keep
702+
regex: default;router;1936-tcp
621703
622704
alerting:
623705
alertmanagers:

pkg/oc/bootstrap/bindata.go

Lines changed: 85 additions & 3 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)