Skip to content

Commit 69c4e32

Browse files
Merge pull request #809 from openshift-cherrypick-robot/cherry-pick-802-to-18.0-fr4
[18.0-fr4] [OSPRH-22597] Fix metricStorage serviceLabels leak
2 parents 2783c5d + 29fb926 commit 69c4e32

9 files changed

Lines changed: 154 additions & 17 deletions

File tree

controllers/ceilometer_controller.go

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -503,13 +503,21 @@ func (r *CeilometerReconciler) reconcileNormal(ctx context.Context, instance *te
503503
//
504504
// Handle Topology
505505
//
506+
// TODO: Either move the topology into reconcileCeilometer and use the serviceLabels defined there
507+
// or modify ceilometer CRD and the ceilometer controller to handle topology for ceilometer, ksm, mysqld-exporter
508+
// separately (each has different service labels).
509+
ceilometerServiceLabels := map[string]string{
510+
common.AppSelector: ceilometer.ServiceName,
511+
common.OwnerSelector: instance.Name,
512+
}
513+
506514
topology, err := ensureTopology(
507515
ctx,
508516
helper,
509517
instance, // topologyHandler
510518
instance.Name, // finalizer
511519
&instance.Status.Conditions,
512-
labels.GetLabelSelector(serviceLabels),
520+
labels.GetLabelSelector(ceilometerServiceLabels),
513521
)
514522
if err != nil {
515523
instance.Status.Conditions.Set(condition.FalseCondition(

controllers/cloudkitty_controller.go

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -599,6 +599,10 @@ func (r *CloudKittyReconciler) reconcileNormal(ctx context.Context, instance *te
599599

600600
Log.Info(fmt.Sprintf("Reconciling Service '%s'", instance.Name))
601601

602+
serviceLabels := map[string]string{
603+
common.AppSelector: cloudkitty.ServiceName,
604+
}
605+
602606
// Create cloudkitty client cert / key
603607
certIssuer, err := certmanager.GetIssuerByLabels(
604608
ctx, helper, instance.Namespace,
@@ -786,10 +790,6 @@ func (r *CloudKittyReconciler) reconcileNormal(ctx context.Context, instance *te
786790
return rbacResult, nil
787791
}
788792

789-
serviceLabels := map[string]string{
790-
common.AppSelector: cloudkitty.ServiceName,
791-
}
792-
793793
configVars := make(map[string]env.Setter)
794794

795795
//

controllers/metricstorage_controller.go

Lines changed: 15 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -79,9 +79,6 @@ var (
7979
prometheusCaBundleSecretNameField,
8080
prometheusTLSField,
8181
}
82-
serviceLabels = map[string]string{
83-
common.AppSelector: "metricStorage",
84-
}
8582
)
8683

8784
// MetricStorageReconciler reconciles a MetricStorage object
@@ -285,6 +282,10 @@ func (r *MetricStorageReconciler) reconcileNormal(
285282
Log := r.GetLogger(ctx)
286283
Log.Info(fmt.Sprintf("Reconciling Service '%s'", instance.Name))
287284

285+
serviceLabels := map[string]string{
286+
common.AppSelector: "metricStorage",
287+
}
288+
288289
eventHandler := handler.EnqueueRequestForOwner(
289290
r.Scheme,
290291
r.RESTMapper,
@@ -441,7 +442,7 @@ func (r *MetricStorageReconciler) reconcileNormal(
441442
}
442443

443444
// Deploy ScrapeConfigs
444-
if res, err := r.createScrapeConfigs(ctx, instance, eventHandler, helper); err != nil {
445+
if res, err := r.createScrapeConfigs(ctx, instance, eventHandler, helper, serviceLabels); err != nil {
445446
return res, err
446447
}
447448

@@ -454,7 +455,7 @@ func (r *MetricStorageReconciler) reconcileNormal(
454455
instance.Status.Conditions.MarkTrue(telemetryv1.DashboardDefinitionReadyCondition, telemetryv1.DashboardsNotEnabledMessage)
455456
instance.Status.Conditions.MarkTrue(telemetryv1.DashboardPluginReadyCondition, telemetryv1.DashboardsNotEnabledMessage)
456457
} else {
457-
if res, err := r.createDashboardObjects(ctx, instance, helper, eventHandler); err != nil {
458+
if res, err := r.createDashboardObjects(ctx, instance, helper, eventHandler, serviceLabels); err != nil {
458459
return res, err
459460
}
460461
}
@@ -714,6 +715,7 @@ func (r *MetricStorageReconciler) createScrapeConfigs(
714715
instance *telemetryv1.MetricStorage,
715716
eventHandler handler.EventHandler,
716717
helper *helper.Helper,
718+
serviceLabels map[string]string,
717719
) (ctrl.Result, error) {
718720
Log := r.GetLogger(ctx)
719721
err := utils.EnsureWatches(
@@ -841,32 +843,32 @@ func (r *MetricStorageReconciler) createScrapeConfigs(
841843
}
842844

843845
// compute nodes' exporters
844-
err = r.createComputeScrapeConfig(ctx, instance, helper, telemetry.ServiceName, "node-exporter", telemetryv1.DefaultNodeExporterPort, false)
846+
err = r.createComputeScrapeConfig(ctx, instance, helper, telemetry.ServiceName, "node-exporter", telemetryv1.DefaultNodeExporterPort, serviceLabels, false)
845847
if err != nil {
846848
return ctrl.Result{}, err
847849
}
848850
// openstack network' exporters
849-
err = r.createComputeScrapeConfig(ctx, instance, helper, telemetry.ServiceName, "openstack-network-exporter", telemetryv1.DefaultOpenStackNetworkExporterPort, false)
851+
err = r.createComputeScrapeConfig(ctx, instance, helper, telemetry.ServiceName, "openstack-network-exporter", telemetryv1.DefaultOpenStackNetworkExporterPort, serviceLabels, false)
850852
if err != nil {
851853
return ctrl.Result{}, err
852854
}
853855
// openstack Ceilometer Compute's prom exporters
854-
err = r.createComputeScrapeConfig(ctx, instance, helper, telemetry.ServiceName, "ceilometer-compute-prom-exporter", telemetryv1.DefaultCeilometerComputePromExporterPort, false)
856+
err = r.createComputeScrapeConfig(ctx, instance, helper, telemetry.ServiceName, "ceilometer-compute-prom-exporter", telemetryv1.DefaultCeilometerComputePromExporterPort, serviceLabels, false)
855857
if err != nil {
856858
return ctrl.Result{}, err
857859
}
858860
// openstack Ceilometer IPMI's prom exporters
859-
err = r.createComputeScrapeConfig(ctx, instance, helper, telemetry.ServiceName, "ceilometer-ipmi-prom-exporter", telemetryv1.DefaultCeilometerIpmiPromExporterPort, false)
861+
err = r.createComputeScrapeConfig(ctx, instance, helper, telemetry.ServiceName, "ceilometer-ipmi-prom-exporter", telemetryv1.DefaultCeilometerIpmiPromExporterPort, serviceLabels, false)
860862
if err != nil {
861863
return ctrl.Result{}, err
862864
}
863865

864-
err = r.createComputeScrapeConfig(ctx, instance, helper, telemetry.ServiceName, "podman-exporter", telemetryv1.DefaultPodmanExporterPort, false)
866+
err = r.createComputeScrapeConfig(ctx, instance, helper, telemetry.ServiceName, "podman-exporter", telemetryv1.DefaultPodmanExporterPort, serviceLabels, false)
865867
if err != nil {
866868
return ctrl.Result{}, err
867869
}
868870
// Currently Kepler doesn't support TLS
869-
err = r.createComputeScrapeConfig(ctx, instance, helper, telemetryv1.TelemetryPowerMonitoring, "kepler", telemetryv1.DefaultKeplerPort, true)
871+
err = r.createComputeScrapeConfig(ctx, instance, helper, telemetryv1.TelemetryPowerMonitoring, "kepler", telemetryv1.DefaultKeplerPort, serviceLabels, true)
870872
if err != nil {
871873
return ctrl.Result{}, err
872874
}
@@ -922,6 +924,7 @@ func (r *MetricStorageReconciler) createComputeScrapeConfig(
922924
serviceName string,
923925
exporterName string,
924926
exporterPort int,
927+
serviceLabels map[string]string,
925928
suppressTLS bool,
926929
) error {
927930
Log := r.GetLogger(ctx)
@@ -1108,7 +1111,7 @@ func (r *MetricStorageReconciler) createOVSDBServerSBScrapeConfig(
11081111
)
11091112
}
11101113

1111-
func (r *MetricStorageReconciler) createDashboardObjects(ctx context.Context, instance *telemetryv1.MetricStorage, helper *helper.Helper, eventHandler handler.EventHandler) (ctrl.Result, error) {
1114+
func (r *MetricStorageReconciler) createDashboardObjects(ctx context.Context, instance *telemetryv1.MetricStorage, helper *helper.Helper, eventHandler handler.EventHandler, serviceLabels map[string]string) (ctrl.Result, error) {
11121115
Log := r.GetLogger(ctx)
11131116
uiPluginObj := &obsui.UIPlugin{
11141117
ObjectMeta: metav1.ObjectMeta{

tests/kuttl/suites/autoscaling/tests/01-assert.yaml

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -129,3 +129,19 @@ spec:
129129
port: 8042
130130
protocol: TCP
131131
targetPort: 8042
132+
---
133+
apiVersion: keystone.openstack.org/v1beta1
134+
kind: KeystoneEndpoint
135+
metadata:
136+
labels:
137+
service: aodh
138+
name: aodh
139+
spec:
140+
serviceName: aodh
141+
---
142+
apiVersion: keystone.openstack.org/v1beta1
143+
kind: KeystoneService
144+
metadata:
145+
labels:
146+
service: aodh
147+
name: aodh

tests/kuttl/suites/ceilometer/tests/00-assert.yaml

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -236,3 +236,10 @@ spec:
236236
- port: 9104
237237
protocol: TCP
238238
targetPort: 9104
239+
---
240+
apiVersion: keystone.openstack.org/v1beta1
241+
kind: KeystoneService
242+
metadata:
243+
labels:
244+
service: ceilometer
245+
name: ceilometer

tests/kuttl/suites/cloudkitty/tests/01-assert.yaml

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,8 @@ metadata:
55
ownerReferences:
66
- kind: CloudKitty
77
name: telemetry-kuttl-cloudkitty
8+
labels:
9+
service: cloudkitty
810
spec:
911
tenants:
1012
authentication:
@@ -67,6 +69,8 @@ metadata:
6769
ownerReferences:
6870
- kind: CloudKitty
6971
name: telemetry-kuttl-cloudkitty
72+
labels:
73+
service: cloudkitty
7074
spec:
7175
subject:
7276
organizationalUnits:
@@ -195,3 +199,21 @@ status:
195199
- name: cloudkitty-processor
196200
ready: true
197201
started: true
202+
---
203+
apiVersion: keystone.openstack.org/v1beta1
204+
kind: KeystoneEndpoint
205+
metadata:
206+
labels:
207+
component: cloudkitty-api
208+
service: cloudkitty
209+
name: cloudkitty
210+
spec:
211+
serviceName: cloudkitty
212+
---
213+
apiVersion: keystone.openstack.org/v1beta1
214+
kind: KeystoneService
215+
metadata:
216+
labels:
217+
component: cloudkitty-api
218+
service: cloudkitty
219+
name: cloudkitty

tests/kuttl/suites/logging/tests/00-assert.yaml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,8 @@ metadata:
66
metallb.universe.tf/allow-shared-ip: internalapi
77
metallb.universe.tf/loadBalancerIPs: 172.17.0.80
88
name: openstack-logging
9+
labels:
10+
service: logging
911
spec:
1012
ports:
1113
- port: 10514

tests/kuttl/suites/metricstorage/tests/01-assert.yaml

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -109,6 +109,42 @@ spec:
109109
---
110110
apiVersion: monitoring.rhobs/v1alpha1
111111
kind: ScrapeConfig
112+
metadata:
113+
labels:
114+
service: metricStorage
115+
name: telemetry-ksm
116+
ownerReferences:
117+
- kind: MetricStorage
118+
name: telemetry-kuttl
119+
spec:
120+
scrapeInterval: 30s
121+
---
122+
apiVersion: monitoring.rhobs/v1alpha1
123+
kind: ScrapeConfig
124+
metadata:
125+
labels:
126+
service: metricStorage
127+
name: telemetry-openstack-network-exporter
128+
ownerReferences:
129+
- kind: MetricStorage
130+
name: telemetry-kuttl
131+
spec:
132+
scrapeInterval: 30s
133+
---
134+
apiVersion: monitoring.rhobs/v1alpha1
135+
kind: ScrapeConfig
136+
metadata:
137+
labels:
138+
service: metricStorage
139+
name: telemetry-podman-exporter
140+
ownerReferences:
141+
- kind: MetricStorage
142+
name: telemetry-kuttl
143+
spec:
144+
scrapeInterval: 30s
145+
---
146+
apiVersion: monitoring.rhobs/v1alpha1
147+
kind: ScrapeConfig
112148
metadata:
113149
labels:
114150
service: metricStorage
@@ -200,3 +236,10 @@ kind: ConfigMap
200236
metadata:
201237
name: grafana-dashboard-openstack-network-traffic
202238
namespace: openshift-config-managed
239+
---
240+
apiVersion: v1
241+
kind: Secret
242+
metadata:
243+
name: telemetry-kuttl-prometheus-endpoint
244+
labels:
245+
service: metricStorage

tests/kuttl/suites/metricstorage/tests/04-assert.yaml

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -118,3 +118,39 @@ metadata:
118118
name: telemetry-kuttl
119119
spec:
120120
scrapeInterval: 40s
121+
---
122+
apiVersion: monitoring.rhobs/v1alpha1
123+
kind: ScrapeConfig
124+
metadata:
125+
labels:
126+
service: metricStorage
127+
name: telemetry-ksm
128+
ownerReferences:
129+
- kind: MetricStorage
130+
name: telemetry-kuttl
131+
spec:
132+
scrapeInterval: 40s
133+
---
134+
apiVersion: monitoring.rhobs/v1alpha1
135+
kind: ScrapeConfig
136+
metadata:
137+
labels:
138+
service: metricStorage
139+
name: telemetry-openstack-network-exporter
140+
ownerReferences:
141+
- kind: MetricStorage
142+
name: telemetry-kuttl
143+
spec:
144+
scrapeInterval: 40s
145+
---
146+
apiVersion: monitoring.rhobs/v1alpha1
147+
kind: ScrapeConfig
148+
metadata:
149+
labels:
150+
service: metricStorage
151+
name: telemetry-podman-exporter
152+
ownerReferences:
153+
- kind: MetricStorage
154+
name: telemetry-kuttl
155+
spec:
156+
scrapeInterval: 40s

0 commit comments

Comments
 (0)