Skip to content

Commit e4aacec

Browse files
committed
RGW: if KEDA HPA is enabled, then don't override the rgw instance count
If KEDA HPA is enabled, then controller should not override the cound of the RGW instances (spec.gateway.instances). This count will be handled by HPA(KEDA) Signed-off-by: Santosh Pillai <[email protected]>
1 parent 1555e96 commit e4aacec

File tree

528 files changed

+51781
-14757
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

528 files changed

+51781
-14757
lines changed

config/rbac/role.yaml

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -384,3 +384,10 @@ rules:
384384
- list
385385
- update
386386
- watch
387+
- apiGroups:
388+
- keda.sh
389+
resources:
390+
- scaledjobs
391+
verbs:
392+
- get
393+
- list

controllers/storagecluster/cephobjectstores.go

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import (
44
"context"
55
"fmt"
66

7+
keda "github.com/kedacore/keda/v2/apis/keda/v1alpha1"
78
ocsv1 "github.com/red-hat-storage/ocs-operator/api/v4/v1"
89
"github.com/red-hat-storage/ocs-operator/v4/controllers/defaults"
910
"github.com/red-hat-storage/ocs-operator/v4/controllers/platform"
@@ -123,6 +124,12 @@ func (obj *ocsCephObjectStores) ensureDeleted(r *StorageClusterReconciler, sc *o
123124

124125
// createCephObjectStore creates CephObjectStore in the desired state
125126
func (r *StorageClusterReconciler) createCephObjectStores(cephObjectStores []*cephv1.CephObjectStore, instance *ocsv1.StorageCluster) error {
127+
scaledObjects := &keda.ScaledObjectList{}
128+
err := r.Client.List(r.ctx, scaledObjects)
129+
if err != nil {
130+
r.Log.Error(err, "failed to list KEDA ScaledObject resources")
131+
return err
132+
}
126133
for _, cephObjectStore := range cephObjectStores {
127134
existing := cephv1.CephObjectStore{}
128135
err := r.Client.Get(context.TODO(), types.NamespacedName{Name: cephObjectStore.Name, Namespace: cephObjectStore.Namespace}, &existing)
@@ -142,6 +149,17 @@ func (r *StorageClusterReconciler) createCephObjectStores(cephObjectStores []*ce
142149
existing.ObjectMeta.OwnerReferences = cephObjectStore.ObjectMeta.OwnerReferences
143150
cephObjectStore.ObjectMeta = existing.ObjectMeta
144151

152+
if len(scaledObjects.Items) > 0 {
153+
for _, scaleObject := range scaledObjects.Items {
154+
if scaleObject.Spec.ScaleTargetRef.Kind == cephObjectStore.Kind && scaleObject.Spec.ScaleTargetRef.Name == cephObjectStore.Name {
155+
// don't override the RGW instance count if Horizontal POD Autoscalar (HPA) is enabled for this CephObjectStore CR.
156+
// HPA(KEDA) will handle the number of RGW instances.
157+
cephObjectStore.Spec.Gateway.Instances = existing.Spec.Gateway.Instances
158+
break
159+
}
160+
}
161+
}
162+
145163
// preserving any existing rgw ReadAffinities
146164
if existing.Spec.Gateway.ReadAffinity != nil {
147165
cephObjectStore.Spec.Gateway.ReadAffinity = existing.Spec.Gateway.ReadAffinity

go.mod

Lines changed: 37 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
module github.com/red-hat-storage/ocs-operator/v4
22

3-
go 1.24.3
3+
go 1.24.7
44

5-
toolchain go1.24.5
5+
toolchain go1.24.10
66

77
replace github.com/red-hat-storage/ocs-operator/api/v4 => ./api
88

@@ -20,10 +20,11 @@ require (
2020
github.com/google/uuid v1.6.0
2121
github.com/imdario/mergo v0.3.16
2222
github.com/k8snetworkplumbingwg/network-attachment-definition-client v1.7.7
23+
github.com/kedacore/keda/v2 v2.18.1
2324
github.com/kubernetes-csi/external-snapshotter/client/v8 v8.2.0
2425
github.com/noobaa/noobaa-operator/v5 v5.0.0-20250728100218-5f4046180bd7
25-
github.com/onsi/ginkgo/v2 v2.23.4
26-
github.com/onsi/gomega v1.38.0
26+
github.com/onsi/ginkgo/v2 v2.25.3
27+
github.com/onsi/gomega v1.38.2
2728
github.com/openshift/api v0.0.0-20250731015415-ed654edbd7c6
2829
github.com/openshift/build-machinery-go v0.0.0-20250602125535-1b6d00b8c37c
2930
github.com/openshift/client-go v0.0.0-20250710075018-396b36f983ee
@@ -33,23 +34,23 @@ require (
3334
github.com/operator-framework/operator-lifecycle-manager v0.32.0
3435
github.com/prometheus-operator/prometheus-operator/pkg/apis/monitoring v0.84.0
3536
github.com/prometheus-operator/prometheus-operator/pkg/client v0.84.0
36-
github.com/prometheus/common v0.65.0
37+
github.com/prometheus/common v0.66.1
3738
github.com/red-hat-storage/external-snapshotter/client/v8 v8.2.1-0.20250729120819-dfea221cd0f1
3839
github.com/red-hat-storage/ocs-client-operator/api v0.0.0-20250730075927-6f2fc63926b4
3940
github.com/red-hat-storage/ocs-operator/api/v4 v4.0.0-00010101000000-000000000000
4041
github.com/red-hat-storage/ocs-operator/services/provider/api/v4 v4.0.0-00010101000000-000000000000
4142
github.com/rook/rook/pkg/apis v0.0.0-20250915194743-ccbac6de987f
42-
github.com/stretchr/testify v1.10.0
43+
github.com/stretchr/testify v1.11.1
4344
go.uber.org/multierr v1.11.0
4445
golang.org/x/exp v0.0.0-20250620022241-b7579e27df2b
45-
golang.org/x/net v0.42.0
46-
google.golang.org/grpc v1.74.2
46+
golang.org/x/net v0.44.0
47+
google.golang.org/grpc v1.75.1
4748
gopkg.in/yaml.v3 v3.0.1
4849
gotest.tools/v3 v3.5.1
49-
k8s.io/api v0.33.3
50-
k8s.io/apiextensions-apiserver v0.33.2
51-
k8s.io/apimachinery v0.33.3
52-
k8s.io/client-go v0.33.3
50+
k8s.io/api v0.33.5
51+
k8s.io/apiextensions-apiserver v0.33.5
52+
k8s.io/apimachinery v0.33.5
53+
k8s.io/client-go v0.33.5
5354
k8s.io/klog/v2 v2.130.1
5455
k8s.io/utils v0.0.0-20250604170112-4c0f3b243397
5556
open-cluster-management.io/api v1.0.0
@@ -58,6 +59,7 @@ require (
5859
)
5960

6061
require (
62+
github.com/Masterminds/semver/v3 v3.4.0 // indirect
6163
github.com/beorn7/perks v1.0.1 // indirect
6264
github.com/cenkalti/backoff/v4 v4.3.0 // indirect
6365
github.com/cespare/xxhash/v2 v2.3.0 // indirect
@@ -68,8 +70,9 @@ require (
6870
github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect
6971
github.com/emicklei/go-restful/v3 v3.12.2 // indirect
7072
github.com/evanphx/json-patch/v5 v5.9.11 // indirect
73+
github.com/expr-lang/expr v1.17.6 // indirect
7174
github.com/fsnotify/fsnotify v1.9.0 // indirect
72-
github.com/fxamacker/cbor/v2 v2.8.0 // indirect
75+
github.com/fxamacker/cbor/v2 v2.9.0 // indirect
7376
github.com/ghodss/yaml v1.0.0 // indirect
7477
github.com/go-jose/go-jose/v4 v4.1.1 // indirect
7578
github.com/go-logr/zapr v1.3.0 // indirect
@@ -91,7 +94,7 @@ require (
9194
github.com/hashicorp/go-secure-stdlib/strutil v0.1.2 // indirect
9295
github.com/hashicorp/go-sockaddr v1.0.7 // indirect
9396
github.com/hashicorp/hcl v1.0.1-vault-7 // indirect
94-
github.com/hashicorp/vault/api v1.20.0 // indirect
97+
github.com/hashicorp/vault/api v1.21.0 // indirect
9598
github.com/hashicorp/vault/api/auth/approle v0.8.0 // indirect
9699
github.com/hashicorp/vault/api/auth/kubernetes v0.8.0 // indirect
97100
github.com/josharian/intern v1.0.0 // indirect
@@ -105,44 +108,45 @@ require (
105108
github.com/mitchellh/mapstructure v1.5.0 // indirect
106109
github.com/moby/spdystream v0.5.0 // indirect
107110
github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect
108-
github.com/modern-go/reflect2 v1.0.2 // indirect
111+
github.com/modern-go/reflect2 v1.0.3-0.20250322232337-35a7c28c31ee // indirect
109112
github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect
110113
github.com/mwitkow/go-conntrack v0.0.0-20190716064945-2f068394615f // indirect
111114
github.com/mxk/go-flowrate v0.0.0-20140419014527-cca7078d478f // indirect
112115
github.com/pkg/errors v0.9.1 // indirect
113116
github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect
114-
github.com/prometheus/client_golang v1.22.0 // indirect
117+
github.com/prometheus/client_golang v1.23.2 // indirect
115118
github.com/prometheus/client_model v0.6.2 // indirect
116-
github.com/prometheus/procfs v0.16.1 // indirect
119+
github.com/prometheus/procfs v0.17.0 // indirect
117120
github.com/ryanuber/go-glob v1.0.0 // indirect
118121
github.com/sirupsen/logrus v1.9.3 // indirect
119-
github.com/spf13/pflag v1.0.7 // indirect
122+
github.com/spf13/pflag v1.0.10 // indirect
120123
github.com/x448/float16 v0.8.4 // indirect
121-
go.opentelemetry.io/otel v1.36.0 // indirect
122-
go.opentelemetry.io/otel/trace v1.36.0 // indirect
124+
go.opentelemetry.io/otel v1.37.0 // indirect
125+
go.opentelemetry.io/otel/trace v1.37.0 // indirect
123126
go.uber.org/automaxprocs v1.6.0 // indirect
124127
go.uber.org/zap v1.27.0 // indirect
125128
go.yaml.in/yaml/v2 v2.4.2 // indirect
126129
go.yaml.in/yaml/v3 v3.0.4 // indirect
127-
golang.org/x/crypto v0.40.0 // indirect
128-
golang.org/x/oauth2 v0.30.0 // indirect
129-
golang.org/x/sync v0.16.0 // indirect
130-
golang.org/x/sys v0.34.0 // indirect
131-
golang.org/x/term v0.33.0 // indirect
132-
golang.org/x/text v0.27.0 // indirect
133-
golang.org/x/time v0.12.0 // indirect
134-
golang.org/x/tools v0.34.0 // indirect
135-
gomodules.xyz/jsonpatch/v2 v2.4.0 // indirect
136-
google.golang.org/genproto/googleapis/rpc v0.0.0-20250603155806-513f23925822 // indirect
137-
google.golang.org/protobuf v1.36.6 // indirect
130+
golang.org/x/crypto v0.42.0 // indirect
131+
golang.org/x/oauth2 v0.31.0 // indirect
132+
golang.org/x/sync v0.17.0 // indirect
133+
golang.org/x/sys v0.36.0 // indirect
134+
golang.org/x/term v0.35.0 // indirect
135+
golang.org/x/text v0.29.0 // indirect
136+
golang.org/x/time v0.13.0 // indirect
137+
golang.org/x/tools v0.37.0 // indirect
138+
gomodules.xyz/jsonpatch/v2 v2.5.0 // indirect
139+
google.golang.org/genproto/googleapis/rpc v0.0.0-20250908214217-97024824d090 // indirect
140+
google.golang.org/protobuf v1.36.9 // indirect
138141
gopkg.in/evanphx/json-patch.v4 v4.12.0 // indirect
139142
gopkg.in/inf.v0 v0.9.1 // indirect
140143
gopkg.in/yaml.v2 v2.4.0 // indirect
141-
k8s.io/apiserver v0.33.2 // indirect
142-
k8s.io/component-base v0.33.2 // indirect
144+
k8s.io/apiserver v0.33.5 // indirect
145+
k8s.io/component-base v0.33.5 // indirect
143146
k8s.io/klog v1.0.0 // indirect
144147
k8s.io/kube-aggregator v0.32.3 // indirect
145148
k8s.io/kube-openapi v0.0.0-20250701173324-9bd5c66d9911 // indirect
149+
knative.dev/pkg v0.0.0-20250326102644-9f3e60a9244c // indirect
146150
sigs.k8s.io/container-object-storage-interface-api v0.1.0 // indirect
147151
sigs.k8s.io/json v0.0.0-20241014173422-cfa47c3a1cc8 // indirect
148152
sigs.k8s.io/randfill v1.0.0 // indirect

0 commit comments

Comments
 (0)