Skip to content

Commit 83c0691

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 50084e4 commit 83c0691

File tree

3 files changed

+252
-9
lines changed

3 files changed

+252
-9
lines changed

examples/prometheus/prometheus.yaml

Lines changed: 84 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,17 @@ objects:
5198
name: prometheus
5299
namespace: "${NAMESPACE}"
53100

101+
- apiVersion: authorization.openshift.io/v1
102+
kind: ClusterRoleBinding
103+
metadata:
104+
name: prometheus-reader
105+
roleRef:
106+
name: prometheus-reader
107+
subjects:
108+
- kind: ServiceAccount
109+
name: prometheus-reader
110+
namespace: "${NAMESPACE}"
111+
54112
# Create a fully end-to-end TLS connection to the prometheus proxy
55113
- apiVersion: route.openshift.io/v1
56114
kind: Route
@@ -229,6 +287,8 @@ objects:
229287
name: prometheus-config
230288
- mountPath: /prometheus
231289
name: prometheus-data
290+
- mountPath: /var/run/secrets/kubernetes.io/scraper
291+
name: prometheus-scraper-secret
232292

233293
# Deploy alertmanager behind prometheus-alert-buffer behind an oauth proxy
234294
# use http port=4190 and https port=9943 to differ from prom-proxy
@@ -320,6 +380,9 @@ objects:
320380
configMap:
321381
defaultMode: 420
322382
name: prometheus
383+
- name: prometheus-scraper-secret
384+
secret:
385+
secretName: prometheus-scraper
323386
- name: prometheus-proxy-secret
324387
secret:
325388
secretName: prometheus-proxy
@@ -603,21 +666,39 @@ objects:
603666
- action: labelmap
604667
regex: __meta_kubernetes_node_label_(.+)
605668
669+
# TODO: auto-generate these sections, or add a dynamic infrastructure scraper
606670
# Scrape config for the template service broker
607671
- job_name: 'openshift-template-service-broker'
608672
scheme: https
609673
tls_config:
610674
ca_file: /var/run/secrets/kubernetes.io/serviceaccount/service-ca.crt
611675
server_name: apiserver.openshift-template-service-broker.svc
612-
bearer_token_file: /var/run/secrets/kubernetes.io/serviceaccount/token
613-
676+
bearer_token_file: /var/run/secrets/kubernetes.io/scraper/token
614677
kubernetes_sd_configs:
615678
- role: endpoints
616-
679+
namespaces:
680+
names:
681+
- openshift-template-service-broker
617682
relabel_configs:
618683
- source_labels: [__meta_kubernetes_namespace, __meta_kubernetes_service_name, __meta_kubernetes_endpoint_port_name]
619684
action: keep
620685
regex: openshift-template-service-broker;apiserver;https
686+
# Scrape config for the router
687+
- job_name: 'openshift-router'
688+
scheme: https
689+
tls_config:
690+
ca_file: /var/run/secrets/kubernetes.io/serviceaccount/service-ca.crt
691+
server_name: router.default.svc
692+
bearer_token_file: /var/run/secrets/kubernetes.io/scraper/token
693+
kubernetes_sd_configs:
694+
- role: endpoints
695+
namespaces:
696+
names:
697+
- default
698+
relabel_configs:
699+
- source_labels: [__meta_kubernetes_namespace, __meta_kubernetes_service_name, __meta_kubernetes_endpoint_port_name]
700+
action: keep
701+
regex: default;router;1936-tcp
621702
622703
alerting:
623704
alertmanagers:

pkg/oc/bootstrap/bindata.go

Lines changed: 84 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)