Skip to content

Commit a539185

Browse files
committed
feat: expose namespace selector labels conf
1 parent 2b0f9d3 commit a539185

File tree

6 files changed

+204
-14
lines changed

6 files changed

+204
-14
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
# One of 'breaking', 'deprecation', 'new_component', 'enhancement', 'bug_fix'
2+
change_type: 'enhancement'
3+
4+
# The name of the component, or a single word describing the area of concern, (e.g. collector, target allocator, auto-instrumentation, opamp, github action)
5+
component: 'operator'
6+
7+
# A brief description of the change. Surround your text with quotes ("") if it needs to start with a backtick (`).
8+
note: "Add Prometheus CR namespace selectors"
9+
10+
# One or more tracking issues related to the change
11+
issues:
12+
- 3086
13+
14+
# (Optional) One or more lines of additional information to render under the primary note.
15+
# These lines will be padded with 2 spaces and then inserted directly into the document.
16+
# Use pipe (|) for multiline entries.
17+
subtext:

README.md

+7
Original file line numberDiff line numberDiff line change
@@ -709,8 +709,15 @@ spec:
709709
serviceAccount: everything-prometheus-operator-needs
710710
prometheusCR:
711711
enabled: true
712+
scrapeInterval: 30s
712713
serviceMonitorSelector: {}
714+
serviceMonitorNamespaceSelector: {}
713715
podMonitorSelector: {}
716+
podMonitorNamespaceSelector: {}
717+
scrapeConfigSelector: {}
718+
scrapeConfigNamespaceSelector: {}
719+
probeSelector: {}
720+
probeNamespaceSelector: {}
714721
config:
715722
receivers:
716723
prometheus:

apis/v1beta1/targetallocator_types.go

+24
Original file line numberDiff line numberDiff line change
@@ -36,24 +36,48 @@ type TargetAllocatorPrometheusCR struct {
3636
// label selector matches no objects.
3737
// +optional
3838
PodMonitorSelector *metav1.LabelSelector `json:"podMonitorSelector,omitempty"`
39+
// Namespaces to be selected to look for PodMonitors for target discovery.
40+
// A label selector is a label query over a set of resources. The result of matchLabels and
41+
// matchExpressions are ANDed. An empty label selector matches all objects. A null
42+
// label selector matches no objects.
43+
// +optional
44+
PodMonitorNamespaceSelector *metav1.LabelSelector `json:"podMonitorNamespaceSelector,omitempty"`
3945
// ServiceMonitors to be selected for target discovery.
4046
// A label selector is a label query over a set of resources. The result of matchLabels and
4147
// matchExpressions are ANDed. An empty label selector matches all objects. A null
4248
// label selector matches no objects.
4349
// +optional
4450
ServiceMonitorSelector *metav1.LabelSelector `json:"serviceMonitorSelector,omitempty"`
51+
// Namespaces to be selected to look for ServiceMonitors for target discovery.
52+
// A label selector is a label query over a set of resources. The result of matchLabels and
53+
// matchExpressions are ANDed. An empty label selector matches all objects. A null
54+
// label selector matches no objects.
55+
// +optional
56+
ServiceMonitorNamespaceSelector *metav1.LabelSelector `json:"serviceMonitorNamespaceSelector,omitempty"`
4557
// ScrapeConfigs to be selected for target discovery.
4658
// A label selector is a label query over a set of resources. The result of matchLabels and
4759
// matchExpressions are ANDed. An empty label selector matches all objects. A null
4860
// label selector matches no objects.
4961
// +optional
5062
ScrapeConfigSelector *metav1.LabelSelector `json:"scrapeConfigSelector,omitempty"`
63+
// Namespaces to be selected to look for ScrapeConfigs for target discovery.
64+
// A label selector is a label query over a set of resources. The result of matchLabels and
65+
// matchExpressions are ANDed. An empty label selector matches all objects. A null
66+
// label selector matches no objects.
67+
// +optional
68+
ScrapeConfigNamespaceSelector *metav1.LabelSelector `json:"scrapeConfigNamespaceSelector,omitempty"`
5169
// Probes to be selected for target discovery.
5270
// A label selector is a label query over a set of resources. The result of matchLabels and
5371
// matchExpressions are ANDed. An empty label selector matches all objects. A null
5472
// label selector matches no objects.
5573
// +optional
5674
ProbeSelector *metav1.LabelSelector `json:"probeSelector,omitempty"`
75+
// Namespaces to be selected to look for Probes for target discovery.
76+
// A label selector is a label query over a set of resources. The result of matchLabels and
77+
// matchExpressions are ANDed. An empty label selector matches all objects. A null
78+
// label selector matches no objects.
79+
// +optional
80+
ProbeNamespaceSelector *metav1.LabelSelector `json:"probeNamespaceSelector,omitempty"`
5781
}
5882

5983
type (

controllers/builder_test.go

+49-14
Original file line numberDiff line numberDiff line change
@@ -1512,9 +1512,14 @@ config:
15121512
filter_strategy: relabel-config
15131513
prometheus_cr:
15141514
enabled: true
1515+
pod_monitor_namespace_selector: null
15151516
pod_monitor_selector: null
1517+
probe_namespace_selector: null
15161518
probe_selector: null
1519+
scrape_config_namespace_selector: null
15171520
scrape_config_selector: null
1521+
scrape_interval: 30s
1522+
service_monitor_namespace_selector: null
15181523
service_monitor_selector: null
15191524
`,
15201525
},
@@ -1548,7 +1553,7 @@ prometheus_cr:
15481553
"app.kubernetes.io/version": "latest",
15491554
},
15501555
Annotations: map[string]string{
1551-
"opentelemetry-targetallocator-config/hash": "286a5a4e7ec6d2ce652a4ce23e135c10053b4c87fd080242daa5bf21dcd5a337",
1556+
"opentelemetry-targetallocator-config/hash": "a81383bc4e7ebbf141d2fd9cde3dcd9758bc47f27af6cbaeb0f14ab6360e08c6",
15521557
},
15531558
},
15541559
Spec: corev1.PodSpec{
@@ -1680,7 +1685,7 @@ prometheus_cr:
16801685
"app.kubernetes.io/version": "latest",
16811686
},
16821687
Annotations: map[string]string{
1683-
"opentelemetry-targetallocator-config/hash": "286a5a4e7ec6d2ce652a4ce23e135c10053b4c87fd080242daa5bf21dcd5a337",
1688+
"opentelemetry-targetallocator-config/hash": "a81383bc4e7ebbf141d2fd9cde3dcd9758bc47f27af6cbaeb0f14ab6360e08c6",
16841689
},
16851690
},
16861691
Spec: policyV1.PodDisruptionBudgetSpec{
@@ -1971,9 +1976,14 @@ config:
19711976
filter_strategy: relabel-config
19721977
prometheus_cr:
19731978
enabled: true
1979+
pod_monitor_namespace_selector: null
19741980
pod_monitor_selector: null
1981+
probe_namespace_selector: null
19751982
probe_selector: null
1983+
scrape_config_namespace_selector: null
19761984
scrape_config_selector: null
1985+
scrape_interval: 30s
1986+
service_monitor_namespace_selector: null
19771987
service_monitor_selector: null
19781988
`,
19791989
},
@@ -2007,7 +2017,7 @@ prometheus_cr:
20072017
"app.kubernetes.io/version": "latest",
20082018
},
20092019
Annotations: map[string]string{
2010-
"opentelemetry-targetallocator-config/hash": "286a5a4e7ec6d2ce652a4ce23e135c10053b4c87fd080242daa5bf21dcd5a337",
2020+
"opentelemetry-targetallocator-config/hash": "a81383bc4e7ebbf141d2fd9cde3dcd9758bc47f27af6cbaeb0f14ab6360e08c6",
20112021
},
20122022
},
20132023
Spec: corev1.PodSpec{
@@ -2139,7 +2149,7 @@ prometheus_cr:
21392149
"app.kubernetes.io/version": "latest",
21402150
},
21412151
Annotations: map[string]string{
2142-
"opentelemetry-targetallocator-config/hash": "286a5a4e7ec6d2ce652a4ce23e135c10053b4c87fd080242daa5bf21dcd5a337",
2152+
"opentelemetry-targetallocator-config/hash": "a81383bc4e7ebbf141d2fd9cde3dcd9758bc47f27af6cbaeb0f14ab6360e08c6",
21432153
},
21442154
},
21452155
Spec: policyV1.PodDisruptionBudgetSpec{
@@ -2475,9 +2485,14 @@ https:
24752485
tls_key_file_path: /tls/tls.key
24762486
prometheus_cr:
24772487
enabled: true
2488+
pod_monitor_namespace_selector: null
24782489
pod_monitor_selector: null
2490+
probe_namespace_selector: null
24792491
probe_selector: null
2492+
scrape_config_namespace_selector: null
24802493
scrape_config_selector: null
2494+
scrape_interval: 30s
2495+
service_monitor_namespace_selector: null
24812496
service_monitor_selector: null
24822497
`,
24832498
},
@@ -2511,7 +2526,7 @@ prometheus_cr:
25112526
"app.kubernetes.io/version": "latest",
25122527
},
25132528
Annotations: map[string]string{
2514-
"opentelemetry-targetallocator-config/hash": "3e2818ab54d866289de7837779e86e9c95803c43c0c4b58b25123e809ae9b771",
2529+
"opentelemetry-targetallocator-config/hash": "02ef308f21c5312c388985bd8ca91246d1df7a3a5031135ec176f3c975e2fa37",
25152530
},
25162531
},
25172532
Spec: corev1.PodSpec{
@@ -2669,7 +2684,7 @@ prometheus_cr:
26692684
"app.kubernetes.io/version": "latest",
26702685
},
26712686
Annotations: map[string]string{
2672-
"opentelemetry-targetallocator-config/hash": "3e2818ab54d866289de7837779e86e9c95803c43c0c4b58b25123e809ae9b771",
2687+
"opentelemetry-targetallocator-config/hash": "02ef308f21c5312c388985bd8ca91246d1df7a3a5031135ec176f3c975e2fa37",
26732688
},
26742689
},
26752690
Spec: policyV1.PodDisruptionBudgetSpec{
@@ -3544,9 +3559,14 @@ config:
35443559
filter_strategy: relabel-config
35453560
prometheus_cr:
35463561
enabled: true
3562+
pod_monitor_namespace_selector: null
35473563
pod_monitor_selector: null
3564+
probe_namespace_selector: null
35483565
probe_selector: null
3566+
scrape_config_namespace_selector: null
35493567
scrape_config_selector: null
3568+
scrape_interval: 30s
3569+
service_monitor_namespace_selector: null
35503570
service_monitor_selector: null
35513571
`,
35523572
},
@@ -3580,7 +3600,7 @@ prometheus_cr:
35803600
"app.kubernetes.io/version": "latest",
35813601
},
35823602
Annotations: map[string]string{
3583-
"opentelemetry-targetallocator-config/hash": "f80c054419fe2f9030368557da143e200c70772d1d5f1be50ed55ae960b4b17d",
3603+
"opentelemetry-targetallocator-config/hash": "7a839fe32950e427672bf7038e88d953ceecf1531457af7c43dc78300dc85eca",
35843604
},
35853605
},
35863606
Spec: corev1.PodSpec{
@@ -3712,7 +3732,7 @@ prometheus_cr:
37123732
"app.kubernetes.io/version": "latest",
37133733
},
37143734
Annotations: map[string]string{
3715-
"opentelemetry-targetallocator-config/hash": "f80c054419fe2f9030368557da143e200c70772d1d5f1be50ed55ae960b4b17d",
3735+
"opentelemetry-targetallocator-config/hash": "7a839fe32950e427672bf7038e88d953ceecf1531457af7c43dc78300dc85eca",
37163736
},
37173737
},
37183738
Spec: policyV1.PodDisruptionBudgetSpec{
@@ -3819,9 +3839,14 @@ config:
38193839
filter_strategy: relabel-config
38203840
prometheus_cr:
38213841
enabled: true
3842+
pod_monitor_namespace_selector: null
38223843
pod_monitor_selector: null
3844+
probe_namespace_selector: null
38233845
probe_selector: null
3846+
scrape_config_namespace_selector: null
38243847
scrape_config_selector: null
3848+
scrape_interval: 30s
3849+
service_monitor_namespace_selector: null
38253850
service_monitor_selector: null
38263851
`,
38273852
},
@@ -3855,7 +3880,7 @@ prometheus_cr:
38553880
"app.kubernetes.io/version": "latest",
38563881
},
38573882
Annotations: map[string]string{
3858-
"opentelemetry-targetallocator-config/hash": "f80c054419fe2f9030368557da143e200c70772d1d5f1be50ed55ae960b4b17d",
3883+
"opentelemetry-targetallocator-config/hash": "7a839fe32950e427672bf7038e88d953ceecf1531457af7c43dc78300dc85eca",
38593884
},
38603885
},
38613886
Spec: corev1.PodSpec{
@@ -3987,7 +4012,7 @@ prometheus_cr:
39874012
"app.kubernetes.io/version": "latest",
39884013
},
39894014
Annotations: map[string]string{
3990-
"opentelemetry-targetallocator-config/hash": "f80c054419fe2f9030368557da143e200c70772d1d5f1be50ed55ae960b4b17d",
4015+
"opentelemetry-targetallocator-config/hash": "7a839fe32950e427672bf7038e88d953ceecf1531457af7c43dc78300dc85eca",
39914016
},
39924017
},
39934018
Spec: policyV1.PodDisruptionBudgetSpec{
@@ -4144,9 +4169,14 @@ config:
41444169
filter_strategy: relabel-config
41454170
prometheus_cr:
41464171
enabled: true
4172+
pod_monitor_namespace_selector: null
41474173
pod_monitor_selector: null
4174+
probe_namespace_selector: null
41484175
probe_selector: null
4176+
scrape_config_namespace_selector: null
41494177
scrape_config_selector: null
4178+
scrape_interval: 30s
4179+
service_monitor_namespace_selector: null
41504180
service_monitor_selector: null
41514181
`,
41524182
},
@@ -4180,7 +4210,7 @@ prometheus_cr:
41804210
"app.kubernetes.io/version": "latest",
41814211
},
41824212
Annotations: map[string]string{
4183-
"opentelemetry-targetallocator-config/hash": "286a5a4e7ec6d2ce652a4ce23e135c10053b4c87fd080242daa5bf21dcd5a337",
4213+
"opentelemetry-targetallocator-config/hash": "a81383bc4e7ebbf141d2fd9cde3dcd9758bc47f27af6cbaeb0f14ab6360e08c6",
41844214
},
41854215
},
41864216
Spec: corev1.PodSpec{
@@ -4312,7 +4342,7 @@ prometheus_cr:
43124342
"app.kubernetes.io/version": "latest",
43134343
},
43144344
Annotations: map[string]string{
4315-
"opentelemetry-targetallocator-config/hash": "286a5a4e7ec6d2ce652a4ce23e135c10053b4c87fd080242daa5bf21dcd5a337",
4345+
"opentelemetry-targetallocator-config/hash": "a81383bc4e7ebbf141d2fd9cde3dcd9758bc47f27af6cbaeb0f14ab6360e08c6",
43164346
},
43174347
},
43184348
Spec: policyV1.PodDisruptionBudgetSpec{
@@ -4443,9 +4473,14 @@ https:
44434473
tls_key_file_path: /tls/tls.key
44444474
prometheus_cr:
44454475
enabled: true
4476+
pod_monitor_namespace_selector: null
44464477
pod_monitor_selector: null
4478+
probe_namespace_selector: null
44474479
probe_selector: null
4480+
scrape_config_namespace_selector: null
44484481
scrape_config_selector: null
4482+
scrape_interval: 30s
4483+
service_monitor_namespace_selector: null
44494484
service_monitor_selector: null
44504485
`,
44514486
},
@@ -4479,7 +4514,7 @@ prometheus_cr:
44794514
"app.kubernetes.io/version": "latest",
44804515
},
44814516
Annotations: map[string]string{
4482-
"opentelemetry-targetallocator-config/hash": "3e2818ab54d866289de7837779e86e9c95803c43c0c4b58b25123e809ae9b771",
4517+
"opentelemetry-targetallocator-config/hash": "02ef308f21c5312c388985bd8ca91246d1df7a3a5031135ec176f3c975e2fa37",
44834518
},
44844519
},
44854520
Spec: corev1.PodSpec{
@@ -4637,7 +4672,7 @@ prometheus_cr:
46374672
"app.kubernetes.io/version": "latest",
46384673
},
46394674
Annotations: map[string]string{
4640-
"opentelemetry-targetallocator-config/hash": "3e2818ab54d866289de7837779e86e9c95803c43c0c4b58b25123e809ae9b771",
4675+
"opentelemetry-targetallocator-config/hash": "02ef308f21c5312c388985bd8ca91246d1df7a3a5031135ec176f3c975e2fa37",
46414676
},
46424677
},
46434678
Spec: policyV1.PodDisruptionBudgetSpec{

internal/manifests/targetallocator/configmap.go

+8
Original file line numberDiff line numberDiff line change
@@ -107,12 +107,20 @@ func ConfigMap(params Params) (*corev1.ConfigMap, error) {
107107

108108
prometheusCRConfig["service_monitor_selector"] = taSpec.PrometheusCR.ServiceMonitorSelector
109109

110+
prometheusCRConfig["service_monitor_namespace_selector"] = taSpec.PrometheusCR.ServiceMonitorNamespaceSelector
111+
110112
prometheusCRConfig["pod_monitor_selector"] = taSpec.PrometheusCR.PodMonitorSelector
111113

114+
prometheusCRConfig["pod_monitor_namespace_selector"] = taSpec.PrometheusCR.PodMonitorNamespaceSelector
115+
112116
prometheusCRConfig["scrape_config_selector"] = taSpec.PrometheusCR.ScrapeConfigSelector
113117

118+
prometheusCRConfig["scrape_config_namespace_selector"] = taSpec.PrometheusCR.ScrapeConfigNamespaceSelector
119+
114120
prometheusCRConfig["probe_selector"] = taSpec.PrometheusCR.ProbeSelector
115121

122+
prometheusCRConfig["probe_namespace_selector"] = taSpec.PrometheusCR.ProbeNamespaceSelector
123+
116124
taConfig["prometheus_cr"] = prometheusCRConfig
117125
}
118126

0 commit comments

Comments
 (0)