Skip to content

Commit f8044fa

Browse files
committed
Use kustomize patches for env-specific configuration
1 parent b63ce44 commit f8044fa

File tree

12 files changed

+583
-704
lines changed

12 files changed

+583
-704
lines changed
Lines changed: 149 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,149 @@
1+
apiVersion: v1
2+
kind: Namespace
3+
metadata:
4+
name: appstudio-monitoring
5+
spec: {}
6+
---
7+
# Deploy Monitoring Stack
8+
apiVersion: monitoring.rhobs/v1alpha1
9+
kind: MonitoringStack
10+
metadata:
11+
name: appstudio-federate-ms
12+
namespace: appstudio-monitoring
13+
spec:
14+
# Used to select the ServiceMonitor in the appstudio-monitoring namespace
15+
# NOTE: there isn't a need for namespaceSelector
16+
resourceSelector:
17+
matchLabels:
18+
monitoring.rhobs/stack: appstudio-federate-ms
19+
logLevel: info # use debug for verbose logs
20+
retention: 3h
21+
alertmanagerConfig:
22+
disabled: true
23+
resources: # ensure that you provide sufficient amount of resources
24+
requests:
25+
cpu: 500m
26+
memory: 16Gi
27+
limits:
28+
memory: 16Gi
29+
prometheusConfig:
30+
externalLabels: {} # added by overlays
31+
replicas: 2 # ensures that at least one prometheus is running during upgrade
32+
remoteWrite:
33+
- oauth2:
34+
clientId:
35+
secret:
36+
key: client-id
37+
name: rhobs
38+
clientSecret:
39+
key: client-secret
40+
name: rhobs
41+
endpointParams:
42+
audience: # added by overlays
43+
tokenUrl: https://sso.redhat.com/auth/realms/redhat-external/protocol/openid-connect/token
44+
url: # added by overlays
45+
writeRelabelConfigs:
46+
- action: LabelKeep
47+
regex: ""
48+
---
49+
# Grant permission to Federate In-Cluster Prometheus
50+
apiVersion: rbac.authorization.k8s.io/v1
51+
kind: ClusterRoleBinding
52+
metadata:
53+
name: appstudio-federate-ms-view
54+
labels:
55+
kubernetes.io/part-of: appstudio-federate-ms
56+
monitoring.rhobs/stack: appstudio-federate-ms
57+
roleRef:
58+
apiGroup: rbac.authorization.k8s.io
59+
kind: ClusterRole
60+
name: cluster-monitoring-view
61+
subjects:
62+
- kind: ServiceAccount
63+
# ServiceAccount used in the prometheus deployed by ObO.
64+
# SA name follows <monitoring stack name>-prometheus nomenclature
65+
name: appstudio-federate-ms-prometheus
66+
namespace: appstudio-monitoring
67+
---
68+
# Create ServiceMonitor for cluster prometheus Federation
69+
apiVersion: monitoring.rhobs/v1
70+
kind: ServiceMonitor
71+
metadata:
72+
name: appstudio-federate-smon
73+
namespace: appstudio-monitoring
74+
labels:
75+
kubernetes.io/part-of: appstudio-federate-ms
76+
monitoring.rhobs/stack: appstudio-federate-ms
77+
spec:
78+
selector: # use the prometheus service to create a "dummy" target.
79+
matchLabels:
80+
app.kubernetes.io/managed-by: observability-operator
81+
app.kubernetes.io/name: appstudio-federate-ms-prometheus
82+
endpoints:
83+
- params:
84+
'match[]': [] # scrape only required metrics from in-cluster prometheus
85+
relabelings:
86+
# override the target's address by the prometheus-k8s service name.
87+
- action: replace
88+
targetLabel: __address__
89+
replacement: prometheus-k8s.openshift-monitoring.svc:9091
90+
# remove the default target labels as they aren't relevant in case of federation.
91+
- action: labeldrop
92+
regex: pod|namespace|service|endpoint|container
93+
# 30s interval creates 4 scrapes per minute
94+
# prometheus-k8s.svc x 2 ms-prometheus x (60s/ 30s) = 4
95+
interval: 30s
96+
# ensure that the scraped labels are preferred over target's labels.
97+
honorLabels: true
98+
port: web
99+
scheme: https
100+
path: "/federate"
101+
bearerTokenFile: /var/run/secrets/kubernetes.io/serviceaccount/token
102+
tlsConfig:
103+
serverName: prometheus-k8s.openshift-monitoring.svc
104+
ca:
105+
configMap: # automatically created by serving-ca operator
106+
key: service-ca.crt
107+
name: openshift-service-ca.crt
108+
---
109+
# Create ServiceMonitor for user workload prometheus Federation
110+
apiVersion: monitoring.rhobs/v1
111+
kind: ServiceMonitor
112+
metadata:
113+
name: appstudio-federate-uwm-smon
114+
namespace: appstudio-monitoring
115+
labels:
116+
kubernetes.io/part-of: appstudio-federate-ms
117+
monitoring.rhobs/stack: appstudio-federate-ms
118+
spec:
119+
selector: # use the prometheus service to create a "dummy" target.
120+
matchLabels:
121+
app.kubernetes.io/managed-by: observability-operator
122+
app.kubernetes.io/name: appstudio-federate-ms-prometheus
123+
endpoints:
124+
- params:
125+
'match[]': # scrape only required metrics from UWM prometheus
126+
- '{__name__=~".*"}' # all the metrics from UWM prometheus
127+
relabelings:
128+
# override the target's address by the prometheus-UWM service name.
129+
- action: replace
130+
targetLabel: __address__
131+
replacement: prometheus-user-workload.openshift-user-workload-monitoring.svc:9092
132+
# remove the default target labels as they aren't relevant in case of federation.
133+
- action: labeldrop
134+
regex: pod|namespace|service|endpoint|container
135+
# 30s interval creates 4 scrapes per minute
136+
# prometheus-user-workload.svc x 2 ms-prometheus x (60s/ 30s) = 4
137+
interval: 30s
138+
# ensure that the scraped labels are preferred over target's labels.
139+
honorLabels: true
140+
port: web
141+
scheme: https
142+
path: "/federate"
143+
bearerTokenFile: /var/run/secrets/kubernetes.io/serviceaccount/token
144+
tlsConfig:
145+
serverName: prometheus-user-workload.openshift-user-workload-monitoring.svc
146+
ca:
147+
configMap: # automatically created by serving-ca operator
148+
key: service-ca.crt
149+
name: openshift-service-ca.crt

components/monitoring/prometheus/development/monitoringstack/cluster-type-patch.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
---
2-
- op: add
2+
- op: replace
33
path: /spec/endpoints/0/relabelings/0
44
value:
55
targetLabel: source_environment

components/monitoring/prometheus/development/monitoringstack/kustomization.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ apiVersion: kustomize.config.k8s.io/v1beta1
22
kind: Kustomization
33
resources:
44
- ../../base/observability-operator
5-
- ../../stg-dev-common/monitoringstack
5+
- ../../staging/base/monitoringstack
66
patches:
77
- path: cluster-type-patch.yaml
88
target:

0 commit comments

Comments
 (0)