Repository: minio/operator

Issue:
Feature: expose more Prometheus metrics than just /minio/v2/metrics/cluster
I need to have bucket metrics in grafana. I know that I can create a ScrapeConfig for it, but it is frustrating because there is some manual actions in order to achieve this, and my environment is completely managed by Argocd.

When you set prometheusOperator: true in a Tenant values, it create a scape config only on /minio/v2/metrics/cluster, which is hardcoded in the constant MinIOPrometheusPathCluster in constants.go.
Minio provides the following v2 metrics paths:
- cluster
- bucket
- node
- resource

It would be nice to have the possibility to enable the metrics or not (the values should mention the PROMETHEUS_NAMESPACE which has to be set at the operator level, btw).
A possible implementation would be to add a configuration option which could look like this:
```yaml
prometheusOperatorScrape:
  cluster: true
  bucket: true
  node: false
  resource: false
```

Or maybe a list, so if minio adds metrics there is no need to modify the controller:
```yaml
prometheusOperatorScrapes:
- cluster
- bucket
```

As a final word, the ScrapeInterval is also hardcoded, it'd also be nice to have it configurable.

If you find this of interest, I am happy to help with a PR.

Discussion:
@lm-solution: for me it was confusing, that the operator uses the additionalScrapeConfig to ingest the scraping drect into prometheus.
wouldnt it be much nicer to use a servicemonitor CR.
this would be best practice and much more transparent and less invasive for the deployment.

Solution patch:
diff --git a/Makefile b/Makefile
index df8101d8..0b4acb5d 100644
--- a/Makefile
+++ b/Makefile
@@ -66,7 +66,7 @@ clean:
 	@rm -rf dist/
 
 regen-crd:
-	@go install sigs.k8s.io/controller-tools/cmd/controller-gen@v0.16.5
+	@go install sigs.k8s.io/controller-tools/cmd/controller-gen@v0.17.2
 	@${GOPATH}/bin/controller-gen crd:maxDescLen=0,generateEmbeddedObjectMeta=true webhook paths="./..." output:crd:artifacts:config=$(KUSTOMIZE_CRDS)
 	@sed 's#namespace: minio-operator#namespace: {{ .Release.Namespace }}#g' resources/base/crds/minio.min.io_tenants.yaml > $(HELM_TEMPLATES)/minio.min.io_tenants.yaml
 	@sed 's#namespace: minio-operator#namespace: {{ .Release.Namespace }}#g' resources/base/crds/sts.min.io_policybindings.yaml > $(HELM_TEMPLATES)/sts.min.io_policybindings.yaml
diff --git a/README.md b/README.md
index d1bdb1c0..05db1584 100644
--- a/README.md
+++ b/README.md
@@ -38,8 +38,8 @@ a Kubernetes cluster.
 
 ### Kubernetes 1.29.0 or Later
 
-Starting with Operator v7.0.0, MinIO requires Kubernetes version 1.29.0 or later. You must upgrade your Kubernetes
-cluster to 1.29.0 or later to use Operator v7.0.0+.
+Starting with Operator v7.0.1, MinIO requires Kubernetes version 1.29.0 or later. You must upgrade your Kubernetes
+cluster to 1.29.0 or later to use Operator v7.0.1+.
 
 This procedure assumes the host machine has [`kubectl`](https://kubernetes.io/docs/tasks/tools) installed and configured
 with access to the target Kubernetes cluster.
@@ -140,7 +140,7 @@ for [kustomize](https://kubernetes.io/docs/tasks/manage-kubernetes-objects/kusto
 use that to install MiniO Operator.
 
 ```sh
-kubectl kustomize github.com/minio/operator\?ref=v7.0.0 | kubectl apply -f -
+kubectl kustomize github.com/minio/operator\?ref=v7.0.1 | kubectl apply -f -
 ```
 
 Run the following command to verify the status of the Operator:
diff --git a/SECURITY.md b/SECURITY.md
new file mode 100644
index 00000000..496b2ef2
--- /dev/null
+++ b/SECURITY.md
@@ -0,0 +1,42 @@
+# Security Policy
+
+## Supported Versions
+
+We always provide security updates for the [latest release](https://github.com/minio/minio/releases/latest).
+Whenever there is a security update you just need to upgrade to the latest version.
+
+## Reporting a Vulnerability
+
+All security bugs in [minio/minio](https://github,com/minio/minio) (or other minio/* repositories)
+should be reported by email to security@min.io. Your email will be acknowledged within 48 hours,
+and you'll receive a more detailed response to your email within 72 hours indicating the next steps
+in handling your report.
+
+Please, provide a detailed explanation of the issue. In particular, outline the type of the security
+issue (DoS, authentication bypass, information disclose, ...) and the assumptions you're making (e.g. do
+you need access credentials for a successful exploit).
+
+If you have not received a reply to your email within 48 hours or you have not heard from the security team
+for the past five days please contact the security team directly:
+
+- Primary security coordinator: aead@min.io
+- Secondary coordinator: harsha@min.io
+- If you receive no response: dev@min.io
+
+### Disclosure Process
+
+MinIO uses the following disclosure process:
+
+1. Once the security report is received one member of the security team tries to verify and reproduce
+   the issue and determines the impact it has.
+2. A member of the security team will respond and either confirm or reject the security report.
+   If the report is rejected the response explains why.
+3. Code is audited to find any potential similar problems.
+4. Fixes are prepared for the latest release.
+5. On the date that the fixes are applied a security advisory will be published on <https://blog.min.io>.
+   Please inform us in your report email whether MinIO should mention your contribution w.r.t. fixing
+   the security issue. By default MinIO will **not** publish this information to protect your privacy.
+
+This process can take some time, especially when coordination is required with maintainers of other projects.
+Every effort will be made to handle the bug in as timely a manner as possible, however it's important that we
+follow the process described above to ensure that disclosures are handled consistently.
diff --git a/docs/env-variables.md b/docs/env-variables.md
index 09d71367..6b18484d 100644
--- a/docs/env-variables.md
+++ b/docs/env-variables.md
@@ -11,4 +11,5 @@ Operator behavior can be customized using environment variables in the `minio-op
 |OPERATOR_STS_ENABLED| This toggles the STS Service on or off                                                                                                                                                                 | `on`, `off`                 | `on`                            |
 |OPERATOR_STS_AUTO_TLS_ENABLED| Env variable name to turn on and off generating the STS TLS certificate automatically using CSR. If it is disabled, you must provide a certificate issued externally                                                    | `on`, `off`                 | `on`                            |
 |WATCHED_NAMESPACE| The namespaces which the operator watches for MinIO tenants. Defaults to `""` for all namespaces.                                                                                                      |                         |                                 |
-|MINIO_OPERATOR_IMAGE| This variable controls the image of the minio instance's sidecar and validate-arguments. If not set, the mirrors of the minio instance's sidecar and validate-arguments use the operator's image. | "" | "" |
\ No newline at end of file
+|MINIO_OPERATOR_IMAGE| This variable controls the image of the minio instance's sidecar and validate-arguments. If not set, the mirrors of the minio instance's sidecar and validate-arguments use the operator's image. | "" | "" |
+|CLUSTER_DOMAIN| Controls the cluster name to use when "building" the full DNS name that the operator uses to access the tenant instances (for example for health checks). | "my-cluster.company.com" | "cluster.local" |
diff --git a/docs/policybinding_crd.adoc b/docs/policybinding_crd.adoc
index 586d3965..d1299d06 100644
--- a/docs/policybinding_crd.adoc
+++ b/docs/policybinding_crd.adoc
@@ -4,8 +4,8 @@
 [id="{p}-api-reference"]
 == API Reference
 
-:minio-image: https://hub.docker.com/r/minio/minio/tags[minio/minio:RELEASE.2024-11-07T00-52-20Z]
-:kes-image: https://hub.docker.com/r/minio/kes/tags[minio/kes:2024-11-25T13-44-31Z]
+:minio-image: https://hub.docker.com/r/minio/minio/tags[minio/minio:RELEASE.2025-04-03T14-56-28Z]
+:kes-image: https://hub.docker.com/r/minio/kes/tags[minio/kes:2025-03-12T09-35-18Z]
 :mc-image: https://hub.docker.com/r/minio/mc/tags[minio/mc:RELEASE.2024-10-02T08-27-28Z]
 
 
diff --git a/docs/templates/asciidoctor/gv_list.tpl b/docs/templates/asciidoctor/gv_list.tpl
index b98c06e9..a90e1f70 100644
--- a/docs/templates/asciidoctor/gv_list.tpl
+++ b/docs/templates/asciidoctor/gv_list.tpl
@@ -7,8 +7,8 @@
 [id="{p}-api-reference"]
 == API Reference
 
-:minio-image: https://hub.docker.com/r/minio/minio/tags[minio/minio:RELEASE.2024-11-07T00-52-20Z]
-:kes-image: https://hub.docker.com/r/minio/kes/tags[minio/kes:2024-11-25T13-44-31Z]
+:minio-image: https://hub.docker.com/r/minio/minio/tags[minio/minio:RELEASE.2025-04-03T14-56-28Z]
+:kes-image: https://hub.docker.com/r/minio/kes/tags[minio/kes:2025-03-12T09-35-18Z]
 :mc-image: https://hub.docker.com/r/minio/mc/tags[minio/mc:RELEASE.2024-10-02T08-27-28Z]
 
 {{ range $groupVersions }}
diff --git a/docs/tenant_crd.adoc b/docs/tenant_crd.adoc
index 678d205b..38502346 100644
--- a/docs/tenant_crd.adoc
+++ b/docs/tenant_crd.adoc
@@ -4,8 +4,8 @@
 [id="{p}-api-reference"]
 == API Reference
 
-:minio-image: https://hub.docker.com/r/minio/minio/tags[minio/minio:RELEASE.2024-11-07T00-52-20Z]
-:kes-image: https://hub.docker.com/r/minio/kes/tags[minio/kes:2024-11-25T13-44-31Z]
+:minio-image: https://hub.docker.com/r/minio/minio/tags[minio/minio:RELEASE.2025-04-03T14-56-28Z]
+:kes-image: https://hub.docker.com/r/minio/kes/tags[minio/kes:2025-03-12T09-35-18Z]
 :mc-image: https://hub.docker.com/r/minio/mc/tags[minio/mc:RELEASE.2024-10-02T08-27-28Z]
 
 
@@ -1143,6 +1143,13 @@ Directs the MinIO Operator to use prometheus operator. +
 
 Tenant scrape configuration will be added to prometheus managed by the prometheus-operator.
 
+|*`prometheusOperatorScrapeMetricsPaths`* __string array__ 
+|*Optional* +
+
+
+API end point(s) to scrape metrics from PrometheusOperatorScrapeMetricsPaths
+If PrometheusOperator: true and PrometheusOperatorScrapeMetricsPaths is empty, will add `/minio/v2/metrics/cluster` to the list of paths to scrape as default like before.
+
 |*`serviceAccountName`* __string__ 
 |*Optional* +
 
diff --git a/examples/kustomization/base/tenant.yaml b/examples/kustomization/base/tenant.yaml
index 0824212f..3e789524 100644
--- a/examples/kustomization/base/tenant.yaml
+++ b/examples/kustomization/base/tenant.yaml
@@ -144,7 +144,7 @@ spec:
   ## https://github.com/minio/minio/tree/master/docs/tls/kubernetes#2-create-kubernetes-secret
   externalClientCertSecrets: [ ]
   ## Registry location and Tag to download MinIO Server image
-  image: quay.io/minio/minio:RELEASE.2024-11-07T00-52-20Z
+  image: quay.io/minio/minio:RELEASE.2025-04-03T14-56-28Z
   imagePullSecret: { }
   ## Mount path where PV will be mounted inside container(s).
   mountPath: /export
diff --git a/examples/kustomization/sts-example/README.md b/examples/kustomization/sts-example/README.md
index 2c642c90..ffac9e10 100644
--- a/examples/kustomization/sts-example/README.md
+++ b/examples/kustomization/sts-example/README.md
@@ -2,15 +2,10 @@
 
 Each example in this folder contains an example using a different SDK on how to adopt Operator's STS.
 
-> ⚠️ This feature is an Beta release now starting Operator v6.x, Operator v5.x released STS as v1alpha1.
+> ⚠️ This feature is on v1beta1 starting Operator v6.x, Operator v5.x released STS as v1alpha1.
 
 # Requirements
 
-## Enabling STS functionality
-
-At the moment, the STS feature ships off by default, to turn it on switch `OPERATOR_STS_ENABLED` to `on` on
-the `minio-operator` deployment.
-
 ## TLS
 
 The STS functionality works only with TLS configured. We can request certificates automatically, but additional you can
@@ -21,14 +16,6 @@ use `cert-manager` or bring your own certificates.
 To install the example, you need an existing tenant, optionally, you can install the `tenant-lite` example, or
 the `tenant-certmanager` example
 
-# 0. Enable STS Functionality
-
-If you haven't done so, enable the STS feature on operator by turning setting the feature flag `OPERATOR_STS_ENABLED=on`
-
-```shell
-kubectl -n minio-operator set env deployment/minio-operator OPERATOR_STS_ENABLED=on
-```
-
 # 1. Install Tenant (Optional)
 
 ```shell
@@ -114,4 +101,9 @@ kubectl apply -k examples/kustomization/sts-example/sample-clients/minio-sdk/jav
 
 ```shell
 kubectl apply -k examples/kustomization/sts-example/sample-clients/minio-sdk/dotnet
-```
\ No newline at end of file
+```
+
+## Disabling STS functionality
+
+MinIO Operator is shipped with STS feature on by default, if you want to disable this feature set `OPERATOR_STS_ENABLED` to `off` on
+the `minio-operator` deployment.
diff --git a/examples/kustomization/sts-example/sample-clients/minio-sdk/go/go.mod b/examples/kustomization/sts-example/sample-clients/minio-sdk/go/go.mod
index e9847198..da8090b7 100644
--- a/examples/kustomization/sts-example/sample-clients/minio-sdk/go/go.mod
+++ b/examples/kustomization/sts-example/sample-clients/minio-sdk/go/go.mod
@@ -1,6 +1,8 @@
 module github.com/minio/operator/sts/example/go
 
-go 1.20
+go 1.23.0
+
+toolchain go1.24.1
 
 require github.com/minio/minio-go/v7 v7.0.33
 
@@ -16,9 +18,9 @@ require (
 	github.com/modern-go/reflect2 v1.0.2 // indirect
 	github.com/rs/xid v1.4.0 // indirect
 	github.com/sirupsen/logrus v1.9.0 // indirect
-	golang.org/x/crypto v0.21.0 // indirect
-	golang.org/x/net v0.23.0 // indirect
-	golang.org/x/sys v0.18.0 // indirect
-	golang.org/x/text v0.14.0 // indirect
+	golang.org/x/crypto v0.35.0 // indirect
+	golang.org/x/net v0.36.0 // indirect
+	golang.org/x/sys v0.30.0 // indirect
+	golang.org/x/text v0.22.0 // indirect
 	gopkg.in/ini.v1 v1.66.6 // indirect
 )
diff --git a/examples/kustomization/sts-example/sample-clients/minio-sdk/go/go.sum b/examples/kustomization/sts-example/sample-clients/minio-sdk/go/go.sum
index d00d049d..f278ea61 100644
--- a/examples/kustomization/sts-example/sample-clients/minio-sdk/go/go.sum
+++ b/examples/kustomization/sts-example/sample-clients/minio-sdk/go/go.sum
@@ -35,16 +35,16 @@ github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+
 github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI=
 github.com/stretchr/testify v1.7.0 h1:nwc3DEeHmmLAfoZucVR881uASk0Mfjw8xYJ99tb5CcY=
 github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
-golang.org/x/crypto v0.21.0 h1:X31++rzVUdKhX5sWmSOFZxx8UW/ldWx55cbf08iNAMA=
-golang.org/x/crypto v0.21.0/go.mod h1:0BP7YvVV9gBbVKyeTG0Gyn+gZm94bibOW5BjDEYAOMs=
-golang.org/x/net v0.23.0 h1:7EYJ93RZ9vYSZAIb2x3lnuvqO5zneoD6IvWjuhfxjTs=
-golang.org/x/net v0.23.0/go.mod h1:JKghWKKOSdJwpW2GEx0Ja7fmaKnMsbu+MWVZTokSYmg=
+golang.org/x/crypto v0.35.0 h1:b15kiHdrGCHrP6LvwaQ3c03kgNhhiMgvlhxHQhmg2Xs=
+golang.org/x/crypto v0.35.0/go.mod h1:dy7dXNW32cAb/6/PRuTNsix8T+vJAqvuIy5Bli/x0YQ=
+golang.org/x/net v0.36.0 h1:vWF2fRbw4qslQsQzgFqZff+BItCvGFQqKzKIzx1rmoA=
+golang.org/x/net v0.36.0/go.mod h1:bFmbeoIPfrw4sMHNhb4J9f6+tPziuGjq7Jk/38fxi1I=
 golang.org/x/sys v0.0.0-20220704084225-05e143d24a9e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
 golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
-golang.org/x/sys v0.18.0 h1:DBdB3niSjOA/O0blCZBqDefyWNYveAYMNF1Wum0DYQ4=
-golang.org/x/sys v0.18.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
-golang.org/x/text v0.14.0 h1:ScX5w1eTa3QqT8oi6+ziP7dTV1S2+ALU0bI+0zXKWiQ=
-golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU=
+golang.org/x/sys v0.30.0 h1:QjkSwP/36a20jFYWkSue1YwXzLmsV5Gfq7Eiy72C1uc=
+golang.org/x/sys v0.30.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
+golang.org/x/text v0.22.0 h1:bofq7m3/HAFvbF51jz3Q9wLg3jkvSPuiZu/pD1XwgtM=
+golang.org/x/text v0.22.0/go.mod h1:YRoo4H8PVmsu+E3Ou7cqLVH8oXWIHVoX0jqUWALQhfY=
 gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
 gopkg.in/ini.v1 v1.66.6 h1:LATuAqN/shcYAOkv3wl2L4rkaKqkcgTBQjOyYDvcPKI=
 gopkg.in/ini.v1 v1.66.6/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k=
diff --git a/examples/kustomization/sts-example/sample-data/mc-job-sa.yaml b/examples/kustomization/sts-example/sample-data/mc-job-sa.yaml
index 88c5ba8d..4bdd71be 100644
--- a/examples/kustomization/sts-example/sample-data/mc-job-sa.yaml
+++ b/examples/kustomization/sts-example/sample-data/mc-job-sa.yaml
@@ -2,4 +2,5 @@ apiVersion: v1
 kind: ServiceAccount
 metadata:
   namespace: minio-tenant-1
-  name: mc-job-sa
\ No newline at end of file
+  name: mc-job-sa
+automountServiceAccountToken: false
\ No newline at end of file
diff --git a/examples/kustomization/sts-example/sample-data/mc-job-setup-bucket.yaml b/examples/kustomization/sts-example/sample-data/mc-job-setup-bucket.yaml
index d7c96dea..a8598362 100644
--- a/examples/kustomization/sts-example/sample-data/mc-job-setup-bucket.yaml
+++ b/examples/kustomization/sts-example/sample-data/mc-job-setup-bucket.yaml
@@ -42,6 +42,20 @@ spec:
           configMap:
             name: start-config-script
             defaultMode: 0744
+        - name: sa-token
+          projected:
+            sources:
+              - serviceAccountToken:
+                  audience: "sts.min.io"
+                  expirationSeconds: 3600
+                  path: token
+        - name: root-ca
+          configMap:
+            name: kube-root-ca.crt
+            items:
+              - key: ca.crt
+                path: ca.crt
+            defaultMode: 0644
       containers:
         - name: mc
           image: minio/mc
@@ -49,10 +63,16 @@ spec:
           volumeMounts:
             - name: start-config
               mountPath: /start-config/
+            - name: sa-token
+              mountPath: /var/run/secrets/sts.min.io/serviceaccount
+              readOnly: true
+            - name: root-ca
+              mountPath: /root/.mc/certs/CAs/
+              subPath: ca.crt
           env:
             - name: MC_HOST_myminio
               value: https://$(ACCESS_KEY):$(SECRET_KEY)@minio.minio-tenant-1.svc.cluster.local
             - name: MC_STS_ENDPOINT_myminio
               value: https://sts.minio-operator.svc.cluster.local:4223/sts/minio-tenant-1
             - name: MC_WEB_IDENTITY_TOKEN_FILE_myminio
-              value: /var/run/secrets/kubernetes.io/serviceaccount/token
+              value: /var/run/secrets/sts.min.io/serviceaccount/token
diff --git a/examples/kustomization/sts-example/sts-app/sts-client.yaml b/examples/kustomization/sts-example/sts-app/sts-client.yaml
index e812dcd5..c8357cf0 100644
--- a/examples/kustomization/sts-example/sts-app/sts-client.yaml
+++ b/examples/kustomization/sts-example/sts-app/sts-client.yaml
@@ -8,6 +8,7 @@ kind: ServiceAccount
 metadata:
   namespace: sts-client
   name: stsclient-sa
+automountServiceAccountToken: false
 ---
 apiVersion: v1
 kind: Secret
@@ -53,7 +54,7 @@ spec:
       serviceAccount: stsclient-sa
       containers:
         - name: sts-client
-          image: miniodev/operator-sts-example:minio-go
+          image: miniodev/operator-sts-example:minio-sdk-go
           imagePullPolicy: IfNotPresent
           env:
             - name: MINIO_ENDPOINT
@@ -65,7 +66,7 @@ spec:
             - name: BUCKET
               value: test-bucket
             - name: AWS_WEB_IDENTITY_TOKEN_FILE
-              value: /var/run/secrets/kubernetes.io/serviceaccount/token
+              value: /var/run/secrets/sts.min.io/serviceaccount/token
             - name: STS_POLICY
               value: /tmp/policy.json
             - name: STS_CA_PATH # When Certmanager is used will load the ca in this file
@@ -78,6 +79,9 @@ spec:
               subPath: policy.json
             - name: tenant-certmanager-tls
               mountPath: /var/run/secrets/sts.min.io/
+            - name: sa-token
+              mountPath: /var/run/secrets/sts.min.io/serviceaccount
+              readOnly: true
       volumes:
         - name: sts-policy
           configMap:
@@ -92,3 +96,10 @@ spec:
                   items:
                     - key: ca.crt
                       path: ca.crt
+        - name: sa-token
+          projected:
+            sources:
+              - serviceAccountToken:
+                  audience: "sts.min.io"
+                  expirationSeconds: 3600
+                  path: token
diff --git a/examples/kustomization/tenant-certmanager-kes/tenant.yaml b/examples/kustomization/tenant-certmanager-kes/tenant.yaml
index 2389f3e6..c490d813 100644
--- a/examples/kustomization/tenant-certmanager-kes/tenant.yaml
+++ b/examples/kustomization/tenant-certmanager-kes/tenant.yaml
@@ -14,7 +14,7 @@ spec:
     externalCertSecret:
       name: tenant-certmanager-2-tls
       type: cert-manager.io/v1
-    image: minio/kes:2024-11-25T13-44-31Z
+    image: minio/kes:2025-03-12T09-35-18Z
     imagePullPolicy: IfNotPresent
     kesSecret:
       name: kes-configuration
diff --git a/examples/kustomization/tenant-kes-encryption/tenant.yaml b/examples/kustomization/tenant-kes-encryption/tenant.yaml
index 8c46ab08..8c9d0e7f 100644
--- a/examples/kustomization/tenant-kes-encryption/tenant.yaml
+++ b/examples/kustomization/tenant-kes-encryption/tenant.yaml
@@ -7,7 +7,7 @@ spec:
   ## Define configuration for KES (stateless and distributed key-management system)
   ## Refer https://github.com/minio/kes
   kes:
-    image: "" # minio/kes:2024-11-25T13-44-31Z
+    image: "" # minio/kes:2025-03-12T09-35-18Z
     env: [ ]
     replicas: 2
     kesSecret:
diff --git a/go.mod b/go.mod
index 3c718190..9e2b4c12 100644
--- a/go.mod
+++ b/go.mod
@@ -6,42 +6,41 @@ toolchain go1.23.7
 
 require (
 	github.com/blang/semver/v4 v4.0.0
-	github.com/docker/cli v26.1.4+incompatible
+	github.com/docker/cli v28.0.4+incompatible
 	github.com/dustin/go-humanize v1.0.1 // indirect
-	github.com/fatih/color v1.17.0 // indirect
-	github.com/go-openapi/swag v0.23.0 // indirect
-	github.com/golang-jwt/jwt v3.2.2+incompatible
-	github.com/golang-jwt/jwt/v4 v4.5.1 // indirect
-	github.com/google/go-containerregistry v0.19.2
+	github.com/fatih/color v1.18.0 // indirect
+	github.com/go-openapi/swag v0.23.1 // indirect
+	github.com/golang-jwt/jwt/v4 v4.5.2
+	github.com/google/go-containerregistry v0.20.3
 	github.com/google/uuid v1.6.0 // indirect
 	github.com/gorilla/mux v1.8.1
 	github.com/hashicorp/go-version v1.7.0
-	github.com/klauspost/compress v1.17.9 // indirect
-	github.com/miekg/dns v1.1.61
+	github.com/klauspost/compress v1.18.0 // indirect
+	github.com/miekg/dns v1.1.64
 	github.com/minio/cli v1.24.2
-	github.com/minio/madmin-go/v3 v3.0.57
-	github.com/minio/minio-go/v7 v7.0.72
+	github.com/minio/madmin-go/v3 v3.0.100
+	github.com/minio/minio-go/v7 v7.0.89
 	github.com/minio/pkg v1.7.5
 	github.com/mitchellh/go-homedir v1.1.0 // indirect
-	github.com/prometheus-operator/prometheus-operator/pkg/apis/monitoring v0.74.0
-	github.com/prometheus-operator/prometheus-operator/pkg/client v0.74.0
-	github.com/rs/xid v1.5.0 // indirect
+	github.com/prometheus-operator/prometheus-operator/pkg/apis/monitoring v0.76.2
+	github.com/prometheus-operator/prometheus-operator/pkg/client v0.76.2
+	github.com/rs/xid v1.6.0 // indirect
 	github.com/secure-io/sio-go v0.3.1 // indirect
-	github.com/stretchr/testify v1.9.0
+	github.com/stretchr/testify v1.10.0
 	golang.org/x/crypto v0.36.0
-	golang.org/x/net v0.37.0 // indirect
-	golang.org/x/oauth2 v0.21.0
+	golang.org/x/net v0.38.0 // indirect
+	golang.org/x/oauth2 v0.28.0
 	// Added to include security fix for
 	// https://github.com/golang/go/issues/56152
 	golang.org/x/text v0.23.0 // indirect
-	golang.org/x/time v0.7.0
+	golang.org/x/time v0.11.0
 	gopkg.in/yaml.v2 v2.4.0
-	k8s.io/api v0.31.1
-	k8s.io/apimachinery v0.32.2
-	k8s.io/client-go v0.31.1
-	k8s.io/code-generator v0.32.2
+	k8s.io/api v0.32.3
+	k8s.io/apimachinery v0.32.3
+	k8s.io/client-go v0.32.3
+	k8s.io/code-generator v0.32.3
 	k8s.io/klog/v2 v2.130.1
-	k8s.io/utils v0.0.0-20241104100929-3ea5e8cea738 // indirect
+	k8s.io/utils v0.0.0-20250321185631-1f6e0b77f77e // indirect
 	sigs.k8s.io/structured-merge-diff/v4 v4.6.0
 )
 
@@ -49,87 +48,86 @@ require (
 	github.com/go-test/deep v1.1.1
 	github.com/minio/kes-go v0.2.1
 	golang.org/x/mod v0.24.0
-	sigs.k8s.io/controller-runtime v0.19.0
+	sigs.k8s.io/controller-runtime v0.20.4
 )
 
 require (
 	aead.dev/mem v0.2.0 // indirect
-	github.com/containerd/stargz-snapshotter/estargz v0.15.1 // indirect
+	github.com/cespare/xxhash/v2 v2.3.0 // indirect
+	github.com/containerd/stargz-snapshotter/estargz v0.16.3 // indirect
 	github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect
-	github.com/decred/dcrd/dcrec/secp256k1/v4 v4.3.0 // indirect
+	github.com/decred/dcrd/dcrec/secp256k1/v4 v4.4.0 // indirect
 	github.com/docker/distribution v2.8.3+incompatible // indirect
-	github.com/docker/docker v27.1.1+incompatible // indirect
-	github.com/docker/docker-credential-helpers v0.8.2 // indirect
+	github.com/docker/docker-credential-helpers v0.9.3 // indirect
 	github.com/emicklei/go-restful/v3 v3.12.2 // indirect
-	github.com/evanphx/json-patch/v5 v5.9.0 // indirect
+	github.com/evanphx/json-patch/v5 v5.9.11 // indirect
 	github.com/fxamacker/cbor/v2 v2.7.0 // indirect
+	github.com/go-ini/ini v1.67.0 // indirect
 	github.com/go-logr/logr v1.4.2 // indirect
 	github.com/go-ole/go-ole v1.3.0 // indirect
-	github.com/go-openapi/jsonpointer v0.21.0 // indirect
+	github.com/go-openapi/jsonpointer v0.21.1 // indirect
 	github.com/go-openapi/jsonreference v0.21.0 // indirect
-	github.com/goccy/go-json v0.10.3 // indirect
+	github.com/goccy/go-json v0.10.5 // indirect
 	github.com/gogo/protobuf v1.3.2 // indirect
-	github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da // indirect
 	github.com/golang/protobuf v1.5.4 // indirect
 	github.com/google/gnostic-models v0.6.9 // indirect
-	github.com/google/go-cmp v0.6.0 // indirect
+	github.com/google/go-cmp v0.7.0 // indirect
 	github.com/google/gofuzz v1.2.0 // indirect
-	github.com/imdario/mergo v0.3.16 // indirect
 	github.com/josharian/intern v1.0.0 // indirect
 	github.com/json-iterator/go v1.1.12 // indirect
-	github.com/klauspost/cpuid/v2 v2.2.8 // indirect
+	github.com/klauspost/cpuid/v2 v2.2.10 // indirect
 	github.com/lestrrat-go/backoff/v2 v2.0.8 // indirect
 	github.com/lestrrat-go/blackmagic v1.0.2 // indirect
 	github.com/lestrrat-go/httpcc v1.0.1 // indirect
 	github.com/lestrrat-go/iter v1.0.2 // indirect
-	github.com/lestrrat-go/jwx v1.2.29 // indirect
+	github.com/lestrrat-go/jwx v1.2.30 // indirect
 	github.com/lestrrat-go/option v1.0.1 // indirect
-	github.com/lufia/plan9stats v0.0.0-20240513124658-fba389f38bae // indirect
+	github.com/lufia/plan9stats v0.0.0-20250317134145-8bc96cf8fc35 // indirect
 	github.com/mailru/easyjson v0.9.0 // indirect
-	github.com/mattn/go-colorable v0.1.13 // indirect
+	github.com/mattn/go-colorable v0.1.14 // indirect
 	github.com/mattn/go-isatty v0.0.20 // indirect
 	github.com/matttproud/golang_protobuf_extensions v1.0.4 // indirect
+	github.com/minio/crc64nvme v1.0.1 // indirect
 	github.com/minio/md5-simd v1.1.2 // indirect
 	github.com/minio/mux v1.9.0 // indirect
 	github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect
 	github.com/modern-go/reflect2 v1.0.2 // indirect
 	github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect
 	github.com/opencontainers/go-digest v1.0.0 // indirect
-	github.com/opencontainers/image-spec v1.1.0 // indirect
-	github.com/philhofer/fwd v1.1.2 // indirect
+	github.com/opencontainers/image-spec v1.1.1 // indirect
+	github.com/philhofer/fwd v1.1.3-0.20240916144458-20a13a1f6b7c // indirect
 	github.com/pkg/errors v0.9.1 // indirect
 	github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect
 	github.com/power-devops/perfstat v0.0.0-20240221224432-82ca36839d55 // indirect
 	github.com/prometheus/client_model v0.6.1 // indirect
-	github.com/prometheus/common v0.55.0 // indirect
-	github.com/prometheus/procfs v0.15.1 // indirect
-	github.com/prometheus/prom2json v1.3.3 // indirect
+	github.com/prometheus/common v0.63.0 // indirect
+	github.com/prometheus/procfs v0.16.0 // indirect
+	github.com/prometheus/prom2json v1.4.1 // indirect
+	github.com/prometheus/prometheus v0.302.1 // indirect
 	github.com/rjeczalik/notify v0.9.3 // indirect
-	github.com/safchain/ethtool v0.4.1 // indirect
+	github.com/safchain/ethtool v0.5.10 // indirect
 	github.com/shirou/gopsutil/v3 v3.24.5 // indirect
 	github.com/shoenig/go-m1cpu v0.1.6 // indirect
 	github.com/sirupsen/logrus v1.9.3 // indirect
 	github.com/spf13/pflag v1.0.6 // indirect
-	github.com/tinylib/msgp v1.1.9 // indirect
-	github.com/tklauser/go-sysconf v0.3.14 // indirect
-	github.com/tklauser/numcpus v0.8.0 // indirect
-	github.com/vbatts/tar-split v0.11.5 // indirect
+	github.com/tinylib/msgp v1.2.5 // indirect
+	github.com/tklauser/go-sysconf v0.3.15 // indirect
+	github.com/tklauser/numcpus v0.10.0 // indirect
+	github.com/vbatts/tar-split v0.12.1 // indirect
 	github.com/x448/float16 v0.8.4 // indirect
 	github.com/yusufpapurcu/wmi v1.2.4 // indirect
-	go.uber.org/zap v1.27.0 // indirect
 	golang.org/x/sync v0.12.0 // indirect
 	golang.org/x/sys v0.31.0 // indirect
 	golang.org/x/term v0.30.0 // indirect
 	golang.org/x/tools v0.31.0 // indirect
-	google.golang.org/protobuf v1.36.5 // indirect
+	google.golang.org/protobuf v1.36.6 // indirect
 	gopkg.in/evanphx/json-patch.v4 v4.12.0 // indirect
 	gopkg.in/inf.v0 v0.9.1 // indirect
-	gopkg.in/ini.v1 v1.67.0 // indirect
 	gopkg.in/yaml.v3 v3.0.1 // indirect
-	k8s.io/apiextensions-apiserver v0.31.0 // indirect
+	k8s.io/apiextensions-apiserver v0.32.3 // indirect
 	k8s.io/gengo/v2 v2.0.0-20250207200755-1244d31929d7 // indirect
-	k8s.io/kube-openapi v0.0.0-20250304201544-e5f78fe3ede9 // indirect
-	sigs.k8s.io/json v0.0.0-20241010143419-9aa6b5e7a4b3 // indirect
+	k8s.io/kube-openapi v0.0.0-20250318190949-c8a335a9a2ff // indirect
+	sigs.k8s.io/json v0.0.0-20241014173422-cfa47c3a1cc8 // indirect
 	sigs.k8s.io/randfill v1.0.0 // indirect
 	sigs.k8s.io/yaml v1.4.0 // indirect
 )
diff --git a/go.sum b/go.sum
index c7cef457..57ece038 100644
--- a/go.sum
+++ b/go.sum
@@ -3,34 +3,34 @@ aead.dev/mem v0.2.0/go.mod h1:4qj+sh8fjDhlvne9gm/ZaMRIX9EkmDrKOLwmyDtoMWM=
 github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU=
 github.com/blang/semver/v4 v4.0.0 h1:1PFHFE6yCCTv8C1TeyNNarDzntLi7wMI5i/pzqYIsAM=
 github.com/blang/semver/v4 v4.0.0/go.mod h1:IbckMUScFkM3pff0VJDNKRiT6TG/YpiHIM2yvyW5YoQ=
-github.com/containerd/stargz-snapshotter/estargz v0.15.1 h1:eXJjw9RbkLFgioVaTG+G/ZW/0kEe2oEKCdS/ZxIyoCU=
-github.com/containerd/stargz-snapshotter/estargz v0.15.1/go.mod h1:gr2RNwukQ/S9Nv33Lt6UC7xEx58C+LHRdoqbEKjz1Kk=
+github.com/cespare/xxhash/v2 v2.3.0 h1:UL815xU9SqsFlibzuggzjXhog7bL6oX9BbNZnL2UFvs=
+github.com/cespare/xxhash/v2 v2.3.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs=
+github.com/containerd/stargz-snapshotter/estargz v0.16.3 h1:7evrXtoh1mSbGj/pfRccTampEyKpjpOnS3CyiV1Ebr8=
+github.com/containerd/stargz-snapshotter/estargz v0.16.3/go.mod h1:uyr4BfYfOj3G9WBVE8cOlQmXAbPN9VEQpBBeJIuOipU=
 github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
 github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
 github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc h1:U9qPSI2PIWSS1VwoXQT9A3Wy9MM3WgvqSxFWenqJduM=
 github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
-github.com/decred/dcrd/crypto/blake256 v1.0.1/go.mod h1:2OfgNZ5wDpcsFmHmCK5gZTPcCXqlm2ArzUIkw9czNJo=
-github.com/decred/dcrd/dcrec/secp256k1/v4 v4.2.0/go.mod h1:v57UDF4pDQJcEfFUCRop3lJL149eHGSe9Jvczhzjo/0=
-github.com/decred/dcrd/dcrec/secp256k1/v4 v4.3.0 h1:rpfIENRNNilwHwZeG5+P150SMrnNEcHYvcCuK6dPZSg=
-github.com/decred/dcrd/dcrec/secp256k1/v4 v4.3.0/go.mod h1:v57UDF4pDQJcEfFUCRop3lJL149eHGSe9Jvczhzjo/0=
-github.com/docker/cli v26.1.4+incompatible h1:I8PHdc0MtxEADqYJZvhBrW9bo8gawKwwenxRM7/rLu8=
-github.com/docker/cli v26.1.4+incompatible/go.mod h1:JLrzqnKDaYBop7H2jaqPtU4hHvMKP+vjCwu2uszcLI8=
+github.com/decred/dcrd/dcrec/secp256k1/v4 v4.4.0 h1:NMZiJj8QnKe1LgsbDayM4UoHwbvwDRwnI3hwNaAHRnc=
+github.com/decred/dcrd/dcrec/secp256k1/v4 v4.4.0/go.mod h1:ZXNYxsqcloTdSy/rNShjYzMhyjf0LaoftYK0p+A3h40=
+github.com/docker/cli v28.0.4+incompatible h1:pBJSJeNd9QeIWPjRcV91RVJihd/TXB77q1ef64XEu4A=
+github.com/docker/cli v28.0.4+incompatible/go.mod h1:JLrzqnKDaYBop7H2jaqPtU4hHvMKP+vjCwu2uszcLI8=
 github.com/docker/distribution v2.8.3+incompatible h1:AtKxIZ36LoNK51+Z6RpzLpddBirtxJnzDrHLEKxTAYk=
 github.com/docker/distribution v2.8.3+incompatible/go.mod h1:J2gT2udsDAN96Uj4KfcMRqY0/ypR+oyYUYmja8H+y+w=
-github.com/docker/docker v27.1.1+incompatible h1:hO/M4MtV36kzKldqnA37IWhebRA+LnqqcqDja6kVaKY=
-github.com/docker/docker v27.1.1+incompatible/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk=
-github.com/docker/docker-credential-helpers v0.8.2 h1:bX3YxiGzFP5sOXWc3bTPEXdEaZSeVMrFgOr3T+zrFAo=
-github.com/docker/docker-credential-helpers v0.8.2/go.mod h1:P3ci7E3lwkZg6XiHdRKft1KckHiO9a2rNtyFbZ/ry9M=
+github.com/docker/docker-credential-helpers v0.9.3 h1:gAm/VtF9wgqJMoxzT3Gj5p4AqIjCBS4wrsOh9yRqcz8=
+github.com/docker/docker-credential-helpers v0.9.3/go.mod h1:x+4Gbw9aGmChi3qTLZj8Dfn0TD20M/fuWy0E5+WDeCo=
 github.com/dustin/go-humanize v1.0.1 h1:GzkhY7T5VNhEkwH0PVJgjz+fX1rhBrR7pRT3mDkpeCY=
 github.com/dustin/go-humanize v1.0.1/go.mod h1:Mu1zIs6XwVuF/gI1OepvI0qD18qycQx+mFykh5fBlto=
 github.com/emicklei/go-restful/v3 v3.12.2 h1:DhwDP0vY3k8ZzE0RunuJy8GhNpPL6zqLkDf9B/a0/xU=
 github.com/emicklei/go-restful/v3 v3.12.2/go.mod h1:6n3XBCmQQb25CM2LCACGz8ukIrRry+4bhvbpWn3mrbc=
-github.com/evanphx/json-patch/v5 v5.9.0 h1:kcBlZQbplgElYIlo/n1hJbls2z/1awpXxpRi0/FOJfg=
-github.com/evanphx/json-patch/v5 v5.9.0/go.mod h1:VNkHZ/282BpEyt/tObQO8s5CMPmYYq14uClGH4abBuQ=
-github.com/fatih/color v1.17.0 h1:GlRw1BRJxkpqUCBKzKOw098ed57fEsKeNjpTe3cSjK4=
-github.com/fatih/color v1.17.0/go.mod h1:YZ7TlrGPkiz6ku9fK3TLD/pl3CpsiFyu8N92HLgmosI=
+github.com/evanphx/json-patch/v5 v5.9.11 h1:/8HVnzMq13/3x9TPvjG08wUGqBTmZBsCWzjTM0wiaDU=
+github.com/evanphx/json-patch/v5 v5.9.11/go.mod h1:3j+LviiESTElxA4p3EMKAB9HXj3/XEtnUf6OZxqIQTM=
+github.com/fatih/color v1.18.0 h1:S8gINlzdQ840/4pfAwic/ZE0djQEH3wM94VfqLTZcOM=
+github.com/fatih/color v1.18.0/go.mod h1:4FelSpRwEGDpQ12mAdzqdOukCy4u8WUtOY6lkT/6HfU=
 github.com/fxamacker/cbor/v2 v2.7.0 h1:iM5WgngdRBanHcxugY4JySA0nk1wZorNOpTgCMedv5E=
 github.com/fxamacker/cbor/v2 v2.7.0/go.mod h1:pxXPTn3joSm21Gbwsv0w9OSA2y1HFR9qXEeXQVeNoDQ=
+github.com/go-ini/ini v1.67.0 h1:z6ZrTEZqSWOTyH2FlglNbNgARyHG8oLW9gMELqKr06A=
+github.com/go-ini/ini v1.67.0/go.mod h1:ByCAeIL28uOIIG0E3PJtZPDL8WnHpFKFOtgjp+3Ies8=
 github.com/go-logr/logr v1.4.2 h1:6pFjapn8bFcIbiKo3XT4j/BhANplGihG6tvd+8rYgrY=
 github.com/go-logr/logr v1.4.2/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY=
 github.com/go-logr/zapr v1.3.0 h1:XGdV8XW8zdwFiwOA2Dryh1gj2KRQyOOoNmBy4EplIcQ=
@@ -38,61 +38,54 @@ github.com/go-logr/zapr v1.3.0/go.mod h1:YKepepNBd1u/oyhd/yQmtjVXmm9uML4IXUgMOwR
 github.com/go-ole/go-ole v1.2.6/go.mod h1:pprOEPIfldk/42T2oK7lQ4v4JSDwmV0As9GaiUsvbm0=
 github.com/go-ole/go-ole v1.3.0 h1:Dt6ye7+vXGIKZ7Xtk4s6/xVdGDQynvom7xCFEdWr6uE=
 github.com/go-ole/go-ole v1.3.0/go.mod h1:5LS6F96DhAwUc7C+1HLexzMXY1xGRSryjyPPKW6zv78=
-github.com/go-openapi/jsonpointer v0.21.0 h1:YgdVicSA9vH5RiHs9TZW5oyafXZFc6+2Vc1rr/O9oNQ=
-github.com/go-openapi/jsonpointer v0.21.0/go.mod h1:IUyH9l/+uyhIYQ/PXVA41Rexl+kOkAPDdXEYns6fzUY=
+github.com/go-openapi/jsonpointer v0.21.1 h1:whnzv/pNXtK2FbX/W9yJfRmE2gsmkfahjMKB0fZvcic=
+github.com/go-openapi/jsonpointer v0.21.1/go.mod h1:50I1STOfbY1ycR8jGz8DaMeLCdXiI6aDteEdRNNzpdk=
 github.com/go-openapi/jsonreference v0.21.0 h1:Rs+Y7hSXT83Jacb7kFyjn4ijOuVGSvOdF2+tg1TRrwQ=
 github.com/go-openapi/jsonreference v0.21.0/go.mod h1:LmZmgsrTkVg9LG4EaHeY8cBDslNPMo06cago5JNLkm4=
-github.com/go-openapi/swag v0.23.0 h1:vsEVJDUo2hPJ2tu0/Xc+4noaxyEffXNIs3cOULZ+GrE=
-github.com/go-openapi/swag v0.23.0/go.mod h1:esZ8ITTYEsH1V2trKHjAN8Ai7xHb8RV+YSZ577vPjgQ=
+github.com/go-openapi/swag v0.23.1 h1:lpsStH0n2ittzTnbaSloVZLuB5+fvSY/+hnagBjSNZU=
+github.com/go-openapi/swag v0.23.1/go.mod h1:STZs8TbRvEQQKUA+JZNAm3EWlgaOBGpyFDqQnDHMef0=
 github.com/go-task/slim-sprig/v3 v3.0.0 h1:sUs3vkvUymDpBKi3qH1YSqBQk9+9D/8M2mN1vB6EwHI=
 github.com/go-task/slim-sprig/v3 v3.0.0/go.mod h1:W848ghGpv3Qj3dhTPRyJypKRiqCdHZiAzKg9hl15HA8=
 github.com/go-test/deep v1.1.1 h1:0r/53hagsehfO4bzD2Pgr/+RgHqhmf+k1Bpse2cTu1U=
 github.com/go-test/deep v1.1.1/go.mod h1:5C2ZWiW0ErCdrYzpqxLbTX7MG14M9iiw8DgHncVwcsE=
-github.com/goccy/go-json v0.10.2/go.mod h1:6MelG93GURQebXPDq3khkgXZkazVtN9CRI+MGFi0w8I=
-github.com/goccy/go-json v0.10.3 h1:KZ5WoDbxAIgm2HNbYckL0se1fHD6rz5j4ywS6ebzDqA=
-github.com/goccy/go-json v0.10.3/go.mod h1:oq7eo15ShAhp70Anwd5lgX2pLfOS3QCiwU/PULtXL6M=
+github.com/goccy/go-json v0.10.5 h1:Fq85nIqj+gXn/S5ahsiTlK3TmC85qgirsdTP/+DeaC4=
+github.com/goccy/go-json v0.10.5/go.mod h1:oq7eo15ShAhp70Anwd5lgX2pLfOS3QCiwU/PULtXL6M=
 github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q=
 github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q=
-github.com/golang-jwt/jwt v3.2.2+incompatible h1:IfV12K8xAKAnZqdXVzCZ+TOjboZ2keLg81eXfW3O+oY=
-github.com/golang-jwt/jwt v3.2.2+incompatible/go.mod h1:8pz2t5EyA70fFQQSrl6XZXzqecmYZeUEB8OUGHkxJ+I=
-github.com/golang-jwt/jwt/v4 v4.5.1 h1:JdqV9zKUdtaa9gdPlywC3aeoEsR681PlKC+4F5gQgeo=
-github.com/golang-jwt/jwt/v4 v4.5.1/go.mod h1:m21LjoU+eqJr34lmDMbreY2eSTRJ1cv77w39/MY0Ch0=
-github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da h1:oI5xCqsCo564l8iNU+DwB5epxmsaqB+rhGL0m5jtYqE=
-github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc=
+github.com/golang-jwt/jwt/v4 v4.5.2 h1:YtQM7lnr8iZ+j5q71MGKkNw9Mn7AjHM68uc9g5fXeUI=
+github.com/golang-jwt/jwt/v4 v4.5.2/go.mod h1:m21LjoU+eqJr34lmDMbreY2eSTRJ1cv77w39/MY0Ch0=
 github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
 github.com/golang/protobuf v1.5.4 h1:i7eJL8qZTpSEXOPTxNKhASYpMn+8e5Q6AdndVa1dWek=
 github.com/golang/protobuf v1.5.4/go.mod h1:lnTiLA8Wa4RWRcIUkrtSVa5nRhsEGBg48fD6rSs7xps=
 github.com/google/gnostic-models v0.6.9 h1:MU/8wDLif2qCXZmzncUQ/BOfxWfthHi63KqpoNbWqVw=
 github.com/google/gnostic-models v0.6.9/go.mod h1:CiWsm0s6BSQd1hRn8/QmxqB6BesYcbSZxsz9b0KuDBw=
 github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY=
-github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI=
-github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY=
-github.com/google/go-containerregistry v0.19.2 h1:TannFKE1QSajsP6hPWb5oJNgKe1IKjHukIKDUmvsV6w=
-github.com/google/go-containerregistry v0.19.2/go.mod h1:YCMFNQeeXeLF+dnhhWkqDItx/JSkH01j1Kis4PsjzFI=
+github.com/google/go-cmp v0.7.0 h1:wk8382ETsv4JYUZwIsn6YpYiWiBsYLSJiTsyBybVuN8=
+github.com/google/go-cmp v0.7.0/go.mod h1:pXiqmnSA92OHEEa9HXL2W4E7lf9JzCmGVUdgjX3N/iU=
+github.com/google/go-containerregistry v0.20.3 h1:oNx7IdTI936V8CQRveCjaxOiegWwvM7kqkbXTpyiovI=
+github.com/google/go-containerregistry v0.20.3/go.mod h1:w00pIgBRDVUDFM6bq+Qx8lwNWK+cxgCuX1vd3PIBDNI=
 github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg=
 github.com/google/gofuzz v1.2.0 h1:xRy4A+RhZaiKjJ1bPfwQ8sedCA+YS2YcCHW6ec7JMi0=
 github.com/google/gofuzz v1.2.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg=
-github.com/google/pprof v0.0.0-20241029153458-d1b30febd7db h1:097atOisP2aRj7vFgYQBbFN4U4JNXUNYpxael3UzMyo=
-github.com/google/pprof v0.0.0-20241029153458-d1b30febd7db/go.mod h1:vavhavw2zAxS5dIdcRluK6cSGGPlZynqzFM8NdvU144=
+github.com/google/pprof v0.0.0-20241210010833-40e02aabc2ad h1:a6HEuzUHeKH6hwfN/ZoQgRgVIWFJljSWa/zetS2WTvg=
+github.com/google/pprof v0.0.0-20241210010833-40e02aabc2ad/go.mod h1:vavhavw2zAxS5dIdcRluK6cSGGPlZynqzFM8NdvU144=
 github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0=
 github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
 github.com/gorilla/mux v1.8.1 h1:TuBL49tXwgrFYWhqrNgrUNEY92u81SPhu7sTdzQEiWY=
 github.com/gorilla/mux v1.8.1/go.mod h1:AKf9I4AEqPTmMytcMc0KkNouC66V3BtZ4qD5fmWSiMQ=
 github.com/hashicorp/go-version v1.7.0 h1:5tqGy27NaOTB8yJKUZELlFAS/LTKJkrmONwQKeRZfjY=
 github.com/hashicorp/go-version v1.7.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA=
-github.com/imdario/mergo v0.3.16 h1:wwQJbIsHYGMUyLSPrEq1CT16AhnhNJQ51+4fdHUnCl4=
-github.com/imdario/mergo v0.3.16/go.mod h1:WBLT9ZmE3lPoWsEzCh9LPo3TiwVN+ZKEjmz+hD27ysY=
 github.com/josharian/intern v1.0.0 h1:vlS4z54oSdjm0bgjRigI+G1HpF+tI+9rE5LLzOg8HmY=
 github.com/josharian/intern v1.0.0/go.mod h1:5DoeVV0s6jJacbCEi61lwdGj/aVlrQvzHFFd8Hwg//Y=
 github.com/json-iterator/go v1.1.12 h1:PV8peI4a0ysnczrg+LtxykD8LfKY9ML6u2jnxaEnrnM=
 github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo=
 github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8=
 github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck=
-github.com/klauspost/compress v1.17.9 h1:6KIumPrER1LHsvBVuDa0r5xaG0Es51mhhB9BQB2qeMA=
-github.com/klauspost/compress v1.17.9/go.mod h1:Di0epgTjJY877eYKx5yC51cX2A2Vl2ibi7bDH9ttBbw=
+github.com/klauspost/compress v1.18.0 h1:c/Cqfb0r+Yi+JtIEq73FWXVkRonBlf0CRNYc8Zttxdo=
+github.com/klauspost/compress v1.18.0/go.mod h1:2Pp+KzxcywXVXMr50+X0Q/Lsb43OQHYWRCY2AiWywWQ=
 github.com/klauspost/cpuid/v2 v2.0.1/go.mod h1:FInQzS24/EEf25PyTYn52gqo7WaD8xa0213Md/qVLRg=
-github.com/klauspost/cpuid/v2 v2.2.8 h1:+StwCXwm9PdpiEkPyzBXIy+M9KUb4ODm0Zarf1kS5BM=
-github.com/klauspost/cpuid/v2 v2.2.8/go.mod h1:Lcz8mBdAVJIBVzewtcLocK12l3Y+JytZYpaMropDUws=
+github.com/klauspost/cpuid/v2 v2.2.10 h1:tBs3QSyvjDyFTq3uoc/9xFpCuOsJQFNPiAhYdw2skhE=
+github.com/klauspost/cpuid/v2 v2.2.10/go.mod h1:hqwkgyIinND0mEev00jJYCxPNVRVXFQeu1XKlok6oO0=
 github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE=
 github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk=
 github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY=
@@ -105,34 +98,35 @@ github.com/lestrrat-go/httpcc v1.0.1 h1:ydWCStUeJLkpYyjLDHihupbn2tYmZ7m22BGkcvZZ
 github.com/lestrrat-go/httpcc v1.0.1/go.mod h1:qiltp3Mt56+55GPVCbTdM9MlqhvzyuL6W/NMDA8vA5E=
 github.com/lestrrat-go/iter v1.0.2 h1:gMXo1q4c2pHmC3dn8LzRhJfP1ceCbgSiT9lUydIzltI=
 github.com/lestrrat-go/iter v1.0.2/go.mod h1:Momfcq3AnRlRjI5b5O8/G5/BvpzrhoFTZcn06fEOPt4=
-github.com/lestrrat-go/jwx v1.2.29 h1:QT0utmUJ4/12rmsVQrJ3u55bycPkKqGYuGT4tyRhxSQ=
-github.com/lestrrat-go/jwx v1.2.29/go.mod h1:hU8k2l6WF0ncx20uQdOmik/Gjg6E3/wIRtXSNFeZuB8=
+github.com/lestrrat-go/jwx v1.2.30 h1:VKIFrmjYn0z2J51iLPadqoHIVLzvWNa1kCsTqNDHYPA=
+github.com/lestrrat-go/jwx v1.2.30/go.mod h1:vMxrwFhunGZ3qddmfmEm2+uced8MSI6QFWGTKygjSzQ=
 github.com/lestrrat-go/option v1.0.0/go.mod h1:5ZHFbivi4xwXxhxY9XHDe2FHo6/Z7WWmtT7T5nBBp3I=
 github.com/lestrrat-go/option v1.0.1 h1:oAzP2fvZGQKWkvHa1/SAcFolBEca1oN+mQ7eooNBEYU=
 github.com/lestrrat-go/option v1.0.1/go.mod h1:5ZHFbivi4xwXxhxY9XHDe2FHo6/Z7WWmtT7T5nBBp3I=
-github.com/lufia/plan9stats v0.0.0-20240513124658-fba389f38bae h1:dIZY4ULFcto4tAFlj1FYZl8ztUZ13bdq+PLY+NOfbyI=
-github.com/lufia/plan9stats v0.0.0-20240513124658-fba389f38bae/go.mod h1:ilwx/Dta8jXAgpFYFvSWEMwxmbWXyiUHkd5FwyKhb5k=
+github.com/lufia/plan9stats v0.0.0-20250317134145-8bc96cf8fc35 h1:PpXWgLPs+Fqr325bN2FD2ISlRRztXibcX6e8f5FR5Dc=
+github.com/lufia/plan9stats v0.0.0-20250317134145-8bc96cf8fc35/go.mod h1:autxFIvghDt3jPTLoqZ9OZ7s9qTGNAWmYCjVFWPX/zg=
 github.com/mailru/easyjson v0.9.0 h1:PrnmzHw7262yW8sTBwxi1PdJA3Iw/EKBa8psRf7d9a4=
 github.com/mailru/easyjson v0.9.0/go.mod h1:1+xMtQp2MRNVL/V1bOzuP3aP8VNwRW55fQUto+XFtTU=
-github.com/mattn/go-colorable v0.1.13 h1:fFA4WZxdEF4tXPZVKMLwD8oUnCTTo08duU7wxecdEvA=
-github.com/mattn/go-colorable v0.1.13/go.mod h1:7S9/ev0klgBDR4GtXTXX8a3vIGJpMovkB8vQcUbaXHg=
-github.com/mattn/go-isatty v0.0.16/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM=
+github.com/mattn/go-colorable v0.1.14 h1:9A9LHSqF/7dyVVX6g0U9cwm9pG3kP9gSzcuIPHPsaIE=
+github.com/mattn/go-colorable v0.1.14/go.mod h1:6LmQG8QLFO4G5z1gPvYEzlUgJ2wF+stgPZH1UqBm1s8=
 github.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWEY=
 github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y=
 github.com/matttproud/golang_protobuf_extensions v1.0.4 h1:mmDVorXM7PCGKw94cs5zkfA9PSy5pEvNWRP0ET0TIVo=
 github.com/matttproud/golang_protobuf_extensions v1.0.4/go.mod h1:BSXmuO+STAnVfrANrmjBb36TMTDstsz7MSK+HVaYKv4=
-github.com/miekg/dns v1.1.61 h1:nLxbwF3XxhwVSm8g9Dghm9MHPaUZuqhPiGL+675ZmEs=
-github.com/miekg/dns v1.1.61/go.mod h1:mnAarhS3nWaW+NVP2wTkYVIZyHNJ098SJZUki3eykwQ=
+github.com/miekg/dns v1.1.64 h1:wuZgD9wwCE6XMT05UU/mlSko71eRSXEAm2EbjQXLKnQ=
+github.com/miekg/dns v1.1.64/go.mod h1:Dzw9769uoKVaLuODMDZz9M6ynFU6Em65csPuoi8G0ck=
 github.com/minio/cli v1.24.2 h1:J+fCUh9mhPLjN3Lj/YhklXvxj8mnyE/D6FpFduXJ2jg=
 github.com/minio/cli v1.24.2/go.mod h1:bYxnK0uS629N3Bq+AOZZ+6lwF77Sodk4+UL9vNuXhOY=
+github.com/minio/crc64nvme v1.0.1 h1:DHQPrYPdqK7jQG/Ls5CTBZWeex/2FMS3G5XGkycuFrY=
+github.com/minio/crc64nvme v1.0.1/go.mod h1:eVfm2fAzLlxMdUGc0EEBGSMmPwmXD5XiNRpnu9J3bvg=
 github.com/minio/kes-go v0.2.1 h1:KnqS+p6xoSFJZbQhmJaz/PbxeA6nQyRqT/ywrn5lU2o=
 github.com/minio/kes-go v0.2.1/go.mod h1:76xf7l41Wrh+IifisABXK2S8uZWYgWV1IGBKC3GdOJk=
-github.com/minio/madmin-go/v3 v3.0.57 h1:fXoOnYP8/k9x0MWWowXkAQWYu59hongieCcT3urUaAQ=
-github.com/minio/madmin-go/v3 v3.0.57/go.mod h1:IFAwr0XMrdsLovxAdCcuq/eoL4nRuMVQQv0iubJANQw=
+github.com/minio/madmin-go/v3 v3.0.100 h1:1gsy1kHgk8v9ZQyEU/L9k1ZoImFid+hlzwrOgUULB88=
+github.com/minio/madmin-go/v3 v3.0.100/go.mod h1:pMLdj9OtN0CANNs5tdm6opvOlDFfj0WhbztboZAjRWE=
 github.com/minio/md5-simd v1.1.2 h1:Gdi1DZK69+ZVMoNHRXJyNcxrMA4dSxoYHZSQbirFg34=
 github.com/minio/md5-simd v1.1.2/go.mod h1:MzdKDxYpY2BT9XQFocsiZf/NKVtR7nkE4RoEpN+20RM=
-github.com/minio/minio-go/v7 v7.0.72 h1:ZSbxs2BfJensLyHdVOgHv+pfmvxYraaUy07ER04dWnA=
-github.com/minio/minio-go/v7 v7.0.72/go.mod h1:4yBA8v80xGA30cfM3fz0DKYMXunWl/AV/6tWEs9ryzo=
+github.com/minio/minio-go/v7 v7.0.89 h1:hx4xV5wwTUfyv8LarhJAwNecnXpoTsj9v3f3q/ZkiJU=
+github.com/minio/minio-go/v7 v7.0.89/go.mod h1:2rFnGAp02p7Dddo1Fq4S2wYOfpF0MUTSeLTRC90I204=
 github.com/minio/mux v1.9.0 h1:dWafQFyEfGhJvK6AwLOt83bIG5bxKxKJnKMCi0XAaoA=
 github.com/minio/mux v1.9.0/go.mod h1:1pAare17ZRL5GpmNL+9YmqHoWnLmMZF9C/ioUCfy0BQ=
 github.com/minio/pkg v1.7.5 h1:UOUJjewE5zoaDPlCMJtNx/swc1jT1ZR+IajT7hrLd44=
@@ -146,16 +140,16 @@ github.com/modern-go/reflect2 v1.0.2 h1:xBagoLtFs94CBntxluKeaWgTMpvLxC4ur3nMaC9G
 github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk=
 github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 h1:C3w9PqII01/Oq1c1nUAm88MOHcQC9l5mIlSMApZMrHA=
 github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ=
-github.com/onsi/ginkgo/v2 v2.21.0 h1:7rg/4f3rB88pb5obDgNZrNHrQ4e6WpjonchcpuBRnZM=
-github.com/onsi/ginkgo/v2 v2.21.0/go.mod h1:7Du3c42kxCUegi0IImZ1wUQzMBVecgIHjR1C+NkhLQo=
-github.com/onsi/gomega v1.35.1 h1:Cwbd75ZBPxFSuZ6T+rN/WCb/gOc6YgFBXLlZLhC7Ds4=
-github.com/onsi/gomega v1.35.1/go.mod h1:PvZbdDc8J6XJEpDK4HCuRBm8a6Fzp9/DmhC9C7yFlog=
+github.com/onsi/ginkgo/v2 v2.22.0 h1:Yed107/8DjTr0lKCNt7Dn8yQ6ybuDRQoMGrNFKzMfHg=
+github.com/onsi/ginkgo/v2 v2.22.0/go.mod h1:7Du3c42kxCUegi0IImZ1wUQzMBVecgIHjR1C+NkhLQo=
+github.com/onsi/gomega v1.36.1 h1:bJDPBO7ibjxcbHMgSCoo4Yj18UWbKDlLwX1x9sybDcw=
+github.com/onsi/gomega v1.36.1/go.mod h1:PvZbdDc8J6XJEpDK4HCuRBm8a6Fzp9/DmhC9C7yFlog=
 github.com/opencontainers/go-digest v1.0.0 h1:apOUWs51W5PlhuyGyz9FCeeBIOUDA/6nW8Oi/yOhh5U=
 github.com/opencontainers/go-digest v1.0.0/go.mod h1:0JzlMkj0TRzQZfJkVvzbP0HBR3IKzErnv2BNG4W4MAM=
-github.com/opencontainers/image-spec v1.1.0 h1:8SG7/vwALn54lVB/0yZ/MMwhFrPYtpEHQb2IpWsCzug=
-github.com/opencontainers/image-spec v1.1.0/go.mod h1:W4s4sFTMaBeK1BQLXbG4AdM2szdn85PY75RI83NrTrM=
-github.com/philhofer/fwd v1.1.2 h1:bnDivRJ1EWPjUIRXV5KfORO897HTbpFAQddBdE8t7Gw=
-github.com/philhofer/fwd v1.1.2/go.mod h1:qkPdfjR2SIEbspLqpe1tO4n5yICnr2DY7mqEx2tUTP0=
+github.com/opencontainers/image-spec v1.1.1 h1:y0fUlFfIZhPF1W537XOLg0/fcx6zcHCJwooC2xJA040=
+github.com/opencontainers/image-spec v1.1.1/go.mod h1:qpqAh3Dmcf36wStyyWU+kCeDgrGnAve2nCC8+7h8Q0M=
+github.com/philhofer/fwd v1.1.3-0.20240916144458-20a13a1f6b7c h1:dAMKvw0MlJT1GshSTtih8C2gDs04w8dReiOGXrGLNoY=
+github.com/philhofer/fwd v1.1.3-0.20240916144458-20a13a1f6b7c/go.mod h1:RqIHx9QI14HlwKwm98g9Re5prTQ6LdeRQn+gXJFxsJM=
 github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4=
 github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
 github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
@@ -163,26 +157,28 @@ github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 h1:Jamvg5psRI
 github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
 github.com/power-devops/perfstat v0.0.0-20240221224432-82ca36839d55 h1:o4JXh1EVt9k/+g42oCprj/FisM4qX9L3sZB3upGN2ZU=
 github.com/power-devops/perfstat v0.0.0-20240221224432-82ca36839d55/go.mod h1:OmDBASR4679mdNQnz2pUhc2G8CO2JrUAVFDRBDP/hJE=
-github.com/prometheus-operator/prometheus-operator/pkg/apis/monitoring v0.74.0 h1:AHzMWDxNiAVscJL6+4wkvFRTpMnJqiaZFEKA/osaBXE=
-github.com/prometheus-operator/prometheus-operator/pkg/apis/monitoring v0.74.0/go.mod h1:wAR5JopumPtAZnu0Cjv2PSqV4p4QB09LMhc6fZZTXuA=
-github.com/prometheus-operator/prometheus-operator/pkg/client v0.74.0 h1:SyBTzvFuVshDNjDVALs6+NgOy3qh8/xlAsyqB1SzHbI=
-github.com/prometheus-operator/prometheus-operator/pkg/client v0.74.0/go.mod h1:FlcnLo14zQxL6P1yPrV22kYBqyAT0ZRRytv98+B7lBQ=
+github.com/prometheus-operator/prometheus-operator/pkg/apis/monitoring v0.76.2 h1:BpGDC87A2SaxbKgONsFLEX3kRcRJee2aLQbjXsuz0hA=
+github.com/prometheus-operator/prometheus-operator/pkg/apis/monitoring v0.76.2/go.mod h1:Rd8YnCqz+2FYsiGmE2DMlaLjQRB4v2jFNnzCt9YY4IM=
+github.com/prometheus-operator/prometheus-operator/pkg/client v0.76.2 h1:yncs8NglhE3hB+viNsabCAF9TBBDOBljHUyxHC5fSGY=
+github.com/prometheus-operator/prometheus-operator/pkg/client v0.76.2/go.mod h1:AfbzyEUFxJmSoTiMcgNHHjDKcorBVd9TIwx0viURgEw=
 github.com/prometheus/client_model v0.6.1 h1:ZKSh/rekM+n3CeS952MLRAdFwIKqeY8b62p8ais2e9E=
 github.com/prometheus/client_model v0.6.1/go.mod h1:OrxVMOVHjw3lKMa8+x6HeMGkHMQyHDk9E3jmP2AmGiY=
-github.com/prometheus/common v0.55.0 h1:KEi6DK7lXW/m7Ig5i47x0vRzuBsHuvJdi5ee6Y3G1dc=
-github.com/prometheus/common v0.55.0/go.mod h1:2SECS4xJG1kd8XF9IcM1gMX6510RAEL65zxzNImwdc8=
-github.com/prometheus/procfs v0.15.1 h1:YagwOFzUgYfKKHX6Dr+sHT7km/hxC76UB0learggepc=
-github.com/prometheus/procfs v0.15.1/go.mod h1:fB45yRUv8NstnjriLhBQLuOUt+WW4BsoGhij/e3PBqk=
-github.com/prometheus/prom2json v1.3.3 h1:IYfSMiZ7sSOfliBoo89PcufjWO4eAR0gznGcETyaUgo=
-github.com/prometheus/prom2json v1.3.3/go.mod h1:Pv4yIPktEkK7btWsrUTWDDDrnpUrAELaOCj+oFwlgmc=
+github.com/prometheus/common v0.63.0 h1:YR/EIY1o3mEFP/kZCD7iDMnLPlGyuU2Gb3HIcXnA98k=
+github.com/prometheus/common v0.63.0/go.mod h1:VVFF/fBIoToEnWRVkYoXEkq3R3paCoxG9PXP74SnV18=
+github.com/prometheus/procfs v0.16.0 h1:xh6oHhKwnOJKMYiYBDWmkHqQPyiY40sny36Cmx2bbsM=
+github.com/prometheus/procfs v0.16.0/go.mod h1:8veyXUu3nGP7oaCxhX6yeaM5u4stL2FeMXnCqhDthZg=
+github.com/prometheus/prom2json v1.4.1 h1:7McxdrHgPEOtMwWjkKtd0v5AhpR2Q6QAnlHKVxq0+tQ=
+github.com/prometheus/prom2json v1.4.1/go.mod h1:CzOQykSKFxXuC7ELUZHOHQvwKesQ3eN0p2PWLhFitQM=
+github.com/prometheus/prometheus v0.302.1 h1:xqVdrwrB4WNpdgJqxsz5loqFWNUZitsK8myqLuSZ6Ag=
+github.com/prometheus/prometheus v0.302.1/go.mod h1:YcyCoTbUR/TM8rY3Aoeqr0AWTu/pu1Ehh+trpX3eRzg=
 github.com/rjeczalik/notify v0.9.3 h1:6rJAzHTGKXGj76sbRgDiDcYj/HniypXmSJo1SWakZeY=
 github.com/rjeczalik/notify v0.9.3/go.mod h1:gF3zSOrafR9DQEWSE8TjfI9NkooDxbyT4UgRGKZA0lc=
 github.com/rogpeppe/go-internal v1.12.0 h1:exVL4IDcn6na9z1rAb56Vxr+CgyK3nn3O+epU5NdKM8=
 github.com/rogpeppe/go-internal v1.12.0/go.mod h1:E+RYuTGaKKdloAfM02xzb0FW3Paa99yedzYV+kq4uf4=
-github.com/rs/xid v1.5.0 h1:mKX4bl4iPYJtEIxp6CYiUuLQ/8DYMoz0PUdtGgMFRVc=
-github.com/rs/xid v1.5.0/go.mod h1:trrq9SKmegXys3aeAKXMUTdJsYXVwGY3RLcfgqegfbg=
-github.com/safchain/ethtool v0.4.1 h1:S6mEleTADqgynileXoiapt/nKnatyR6bmIHoF+h2ADo=
-github.com/safchain/ethtool v0.4.1/go.mod h1:XLLnZmy4OCRTkksP/UiMjij96YmIsBfmBQcs7H6tA48=
+github.com/rs/xid v1.6.0 h1:fV591PaemRlL6JfRxGDEPl69wICngIQ3shQtzfy2gxU=
+github.com/rs/xid v1.6.0/go.mod h1:7XoLgs4eV+QndskICGsho+ADou8ySMSjJKDIan90Nz0=
+github.com/safchain/ethtool v0.5.10 h1:Im294gZtuf4pSGJRAOGKaASNi3wMeFaGaWuSaomedpc=
+github.com/safchain/ethtool v0.5.10/go.mod h1:w9jh2Lx7YBR4UwzLkzCmWl85UY0W2uZdd7/DckVE5+c=
 github.com/secure-io/sio-go v0.3.1 h1:dNvY9awjabXTYGsTF1PiCySl9Ltofk9GA3VdWlo7rRc=
 github.com/secure-io/sio-go v0.3.1/go.mod h1:+xbkjDzPjwh4Axd07pRKSNriS9SCiYksWnZqdnfpQxs=
 github.com/shirou/gopsutil/v3 v3.24.5 h1:i0t8kL+kQTvpAYToeuiVk3TgDeKOFioZO3Ztz/iZ9pI=
@@ -196,30 +192,24 @@ github.com/sirupsen/logrus v1.9.3/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVs
 github.com/spf13/pflag v1.0.6 h1:jFzHGLGAlb3ruxLB8MhbI6A8+AQX/2eW4qeyNZXNp2o=
 github.com/spf13/pflag v1.0.6/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg=
 github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
-github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw=
-github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo=
-github.com/stretchr/objx v0.5.2/go.mod h1:FRsXN1f5AsAjCGJKqEizvkpNtU+EGNCLh3NxZ/8L+MA=
 github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI=
 github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
 github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
 github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
-github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU=
-github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo=
-github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsTg=
-github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY=
-github.com/tinylib/msgp v1.1.9 h1:SHf3yoO2sGA0veCJeCBYLHuttAVFHGm2RHgNodW7wQU=
-github.com/tinylib/msgp v1.1.9/go.mod h1:BCXGB54lDD8qUEPmiG0cQQUANC4IUQyB2ItS2UDlO/k=
-github.com/tklauser/go-sysconf v0.3.14 h1:g5vzr9iPFFz24v2KZXs/pvpvh8/V9Fw6vQK5ZZb78yU=
-github.com/tklauser/go-sysconf v0.3.14/go.mod h1:1ym4lWMLUOhuBOPGtRcJm7tEGX4SCYNEEEtghGG/8uY=
-github.com/tklauser/numcpus v0.8.0 h1:Mx4Wwe/FjZLeQsK/6kt2EOepwwSl7SmJrK5bV/dXYgY=
-github.com/tklauser/numcpus v0.8.0/go.mod h1:ZJZlAY+dmR4eut8epnzf0u/VwodKmryxR8txiloSqBE=
-github.com/vbatts/tar-split v0.11.5 h1:3bHCTIheBm1qFTcgh9oPu+nNBtX+XJIupG/vacinCts=
-github.com/vbatts/tar-split v0.11.5/go.mod h1:yZbwRsSeGjusneWgA781EKej9HF8vme8okylkAeNKLk=
+github.com/stretchr/testify v1.10.0 h1:Xv5erBjTwe/5IxqUQTdXv5kgmIvbHo3QQyRwhJsOfJA=
+github.com/stretchr/testify v1.10.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY=
+github.com/tinylib/msgp v1.2.5 h1:WeQg1whrXRFiZusidTQqzETkRpGjFjcIhW6uqWH09po=
+github.com/tinylib/msgp v1.2.5/go.mod h1:ykjzy2wzgrlvpDCRc4LA8UXy6D8bzMSuAF3WD57Gok0=
+github.com/tklauser/go-sysconf v0.3.15 h1:VE89k0criAymJ/Os65CSn1IXaol+1wrsFHEB8Ol49K4=
+github.com/tklauser/go-sysconf v0.3.15/go.mod h1:Dmjwr6tYFIseJw7a3dRLJfsHAMXZ3nEnL/aZY+0IuI4=
+github.com/tklauser/numcpus v0.10.0 h1:18njr6LDBk1zuna922MgdjQuJFjrdppsZG60sHGfjso=
+github.com/tklauser/numcpus v0.10.0/go.mod h1:BiTKazU708GQTYF4mB+cmlpT2Is1gLk7XVuEeem8LsQ=
+github.com/vbatts/tar-split v0.12.1 h1:CqKoORW7BUWBe7UL/iqTVvkTBOF8UvOMKOIZykxnnbo=
+github.com/vbatts/tar-split v0.12.1/go.mod h1:eF6B6i6ftWQcDqEn3/iGFRFRo8cBIMSJVOpnNdfTMFA=
 github.com/x448/float16 v0.8.4 h1:qLwI1I70+NjRFUR3zs1JPUCgaCXSh3SW62uAKT1mSBM=
 github.com/x448/float16 v0.8.4/go.mod h1:14CWIYCyZA/cWjXOioeEpHeN/83MdbZDRQHoFcYsOfg=
 github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
 github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
-github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY=
 github.com/yusufpapurcu/wmi v1.2.4 h1:zFUKzehAFReQwLys1b/iSMl+JQGSCSjtVqQn9bBrPo0=
 github.com/yusufpapurcu/wmi v1.2.4/go.mod h1:SBZ9tNy3G9/m5Oi98Zks0QjeHVDvuK0qfxQmPyzfmi0=
 go.uber.org/goleak v1.3.0 h1:2K3zAYmnTNqV73imy9J1T3WC+gmCePx2hEGkimedGto=
@@ -232,38 +222,24 @@ golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACk
 golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
 golang.org/x/crypto v0.0.0-20200302210943-78000ba7a073/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
 golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
-golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc=
-golang.org/x/crypto v0.19.0/go.mod h1:Iy9bg/ha4yyC70EfRS8jz+B6ybOBKMaSxLj6P6oBDfU=
-golang.org/x/crypto v0.21.0/go.mod h1:0BP7YvVV9gBbVKyeTG0Gyn+gZm94bibOW5BjDEYAOMs=
 golang.org/x/crypto v0.36.0 h1:AnAEvhDddvBdpY+uR+MyHmuZzzNqXSe/GvuDeob5L34=
 golang.org/x/crypto v0.36.0/go.mod h1:Y4J0ReaxCR1IMaabaSMugxJES1EpwhBHhv2bDHklZvc=
-golang.org/x/exp v0.0.0-20230515195305-f3d0a9c9a5cc h1:mCRnTeVUjcrhlRmO0VK8a6k6Rrf6TF9htwo2pJVSjIU=
-golang.org/x/exp v0.0.0-20230515195305-f3d0a9c9a5cc/go.mod h1:V1LtkGg67GoY2N1AnLN78QLrzxkLyJw7RJb1gzOOz9w=
 golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
 golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
-golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4=
-golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs=
 golang.org/x/mod v0.24.0 h1:ZfthKaKaT4NrhGVZHO1/WDTwGES4De8KtWO0SIbNJMU=
 golang.org/x/mod v0.24.0/go.mod h1:IXM97Txy2VM4PJ3gI61r1YEk/gAj6zAHN3AdZt6S9Ww=
 golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
 golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
 golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
 golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU=
-golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg=
-golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c=
-golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs=
-golang.org/x/net v0.10.0/go.mod h1:0qNGK6F8kojg2nk9dLZ2mShWaEBan6FAoqfSigmmuDg=
-golang.org/x/net v0.21.0/go.mod h1:bIjVDfnllIU7BJ2DNgfnXvpSvtn8VRwhlsaeUTyUS44=
-golang.org/x/net v0.37.0 h1:1zLorHbz+LYj7MQlSf1+2tPIIgibq2eL5xkrGk6f+2c=
-golang.org/x/net v0.37.0/go.mod h1:ivrbrMbzFq5J41QOQh0siUuly180yBYtLp+CKbEaFx8=
-golang.org/x/oauth2 v0.21.0 h1:tsimM75w1tF/uws5rbeHzIWxEqElMehnc+iW793zsZs=
-golang.org/x/oauth2 v0.21.0/go.mod h1:XYTD2NtWslqkgxebSiOHnXEap4TF09sJSc7H1sXbhtI=
+golang.org/x/net v0.38.0 h1:vRMAPTMaeGqVhG5QyLJHqNDwecKTomGeqbnfZyKlBI8=
+golang.org/x/net v0.38.0/go.mod h1:ivrbrMbzFq5J41QOQh0siUuly180yBYtLp+CKbEaFx8=
+golang.org/x/oauth2 v0.28.0 h1:CrgCKl8PPAVtLnU3c+EDw6x11699EWlsDeWNWKdIOkc=
+golang.org/x/oauth2 v0.28.0/go.mod h1:onh5ek6nERTohokkhCD/y2cV4Do3fxFHFuAejCkRWT8=
 golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
 golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
 golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
 golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
-golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
-golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
 golang.org/x/sync v0.12.0 h1:MHc5BpPuC30uJk597Ri8TV3CNZcTLu6B6z4lJy+g6Jw=
 golang.org/x/sync v0.12.0/go.mod h1:1dzgHSNfp02xaA81J2MS99Qcpr2w7fw1gpm99rleRqA=
 golang.org/x/sys v0.0.0-20180926160741-c2ed4eda69e7/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
@@ -272,54 +248,33 @@ golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7w
 golang.org/x/sys v0.0.0-20190916202348-b4ddaad3f8a3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
 golang.org/x/sys v0.0.0-20200302150141-5c8b2ff67527/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
 golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
 golang.org/x/sys v0.0.0-20201204225414-ed752295db88/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
-golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
 golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
-golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
-golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
 golang.org/x/sys v0.1.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
-golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
 golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
-golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
-golang.org/x/sys v0.17.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
-golang.org/x/sys v0.18.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
-golang.org/x/sys v0.21.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
+golang.org/x/sys v0.29.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
 golang.org/x/sys v0.31.0 h1:ioabZlmFYtWhL+TRYpcnNlLwhyxaM9kWTDEmfnprqik=
 golang.org/x/sys v0.31.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k=
-golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
-golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
-golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k=
-golang.org/x/term v0.8.0/go.mod h1:xPskH00ivmX89bAKVGSKKtLOWNx2+17Eiy94tnKShWo=
-golang.org/x/term v0.17.0/go.mod h1:lLRBjIVuehSbZlaOtGMbcMncT+aqLLLmKrsjNrUguwk=
-golang.org/x/term v0.18.0/go.mod h1:ILwASektA3OnRv7amZ1xhE/KTR+u50pbXfZ03+6Nx58=
 golang.org/x/term v0.30.0 h1:PQ39fJZ+mfadBm0y5WlL4vlM7Sx1Hgf13sMIY2+QS9Y=
 golang.org/x/term v0.30.0/go.mod h1:NYYFdzHoI5wRh/h5tDMdMqCqPJZEuNqVR5xJLd/n67g=
 golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
 golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
-golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ=
-golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8=
-golang.org/x/text v0.9.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8=
-golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU=
 golang.org/x/text v0.23.0 h1:D71I7dUrlY+VX0gQShAThNGHFxZ13dGLBHQLVl1mJlY=
 golang.org/x/text v0.23.0/go.mod h1:/BLNzu4aZCJ1+kcD0DNRotWKage4q2rGVAg4o22unh4=
-golang.org/x/time v0.7.0 h1:ntUhktv3OPE6TgYxXWv9vKvUSJyIFJlyohwbkEwPrKQ=
-golang.org/x/time v0.7.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM=
+golang.org/x/time v0.11.0 h1:/bpjEDfN9tkoN/ryeYHnv5hcMlc8ncjMcM4XBk5NWV0=
+golang.org/x/time v0.11.0/go.mod h1:CDIdPxbZBQxdj6cxyCIdrNogrJKMJ7pr37NYpMcMDSg=
 golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
 golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
 golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE=
 golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA=
-golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc=
-golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU=
 golang.org/x/tools v0.31.0 h1:0EedkvKDbh+qistFTd0Bcwe/YLh4vHwWEkiI0toFIBU=
 golang.org/x/tools v0.31.0/go.mod h1:naFTU+Cev749tSJRXJlna0T3WxKvb1kWEx15xA4SdmQ=
 golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
 golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
 golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
 golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
-google.golang.org/protobuf v1.36.5 h1:tPhr+woSbjfYvY6/GPufUoYizxw1cF/yFoxJ2fmpwlM=
-google.golang.org/protobuf v1.36.5/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE=
+google.golang.org/protobuf v1.36.6 h1:z1NpPI8ku2WgiWnf+t9wTPsn6eP1L7ksHUlkfLvd9xY=
+google.golang.org/protobuf v1.36.6/go.mod h1:jduwjTPXsFjZGTmRluh+L6NjiWu7pchiJ2/5YcXBHnY=
 gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
 gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk=
 gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q=
@@ -327,8 +282,6 @@ gopkg.in/evanphx/json-patch.v4 v4.12.0 h1:n6jtcsulIzXPJaxegRbvFNNrZDjbij7ny3gmSP
 gopkg.in/evanphx/json-patch.v4 v4.12.0/go.mod h1:p8EYWUEYMpynmqDbY58zCKCFZw8pRWMG4EsWvDvM72M=
 gopkg.in/inf.v0 v0.9.1 h1:73M5CoZyi3ZLMOyDlQh031Cx6N9NDJ2Vvfl76EDAgDc=
 gopkg.in/inf.v0 v0.9.1/go.mod h1:cWUDdTG/fYaXco+Dcufb5Vnc6Gp2YChqWtbxRZE0mXw=
-gopkg.in/ini.v1 v1.67.0 h1:Dgnx+6+nfE+IfzjUEISNeydPJh9AXNNsWbGP9KzCsOA=
-gopkg.in/ini.v1 v1.67.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k=
 gopkg.in/urfave/cli.v1 v1.20.0/go.mod h1:vuBzUtMdQeixQj8LVd+/98pzhxNGQoyuPBlsXHOQNO0=
 gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
 gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY=
@@ -338,28 +291,28 @@ gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
 gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
 gotest.tools/v3 v3.0.3 h1:4AuOwCGf4lLR9u3YOe2awrHygurzhO/HeQ6laiA6Sx0=
 gotest.tools/v3 v3.0.3/go.mod h1:Z7Lb0S5l+klDB31fvDQX8ss/FlKDxtlFlw3Oa8Ymbl8=
-k8s.io/api v0.31.1 h1:Xe1hX/fPW3PXYYv8BlozYqw63ytA92snr96zMW9gWTU=
-k8s.io/api v0.31.1/go.mod h1:sbN1g6eY6XVLeqNsZGLnI5FwVseTrZX7Fv3O26rhAaI=
-k8s.io/apiextensions-apiserver v0.31.0 h1:fZgCVhGwsclj3qCw1buVXCV6khjRzKC5eCFt24kyLSk=
-k8s.io/apiextensions-apiserver v0.31.0/go.mod h1:b9aMDEYaEe5sdK+1T0KU78ApR/5ZVp4i56VacZYEHxk=
-k8s.io/apimachinery v0.32.2 h1:yoQBR9ZGkA6Rgmhbp/yuT9/g+4lxtsGYwW6dR6BDPLQ=
-k8s.io/apimachinery v0.32.2/go.mod h1:GpHVgxoKlTxClKcteaeuF1Ul/lDVb74KpZcxcmLDElE=
-k8s.io/client-go v0.31.1 h1:f0ugtWSbWpxHR7sjVpQwuvw9a3ZKLXX0u0itkFXufb0=
-k8s.io/client-go v0.31.1/go.mod h1:sKI8871MJN2OyeqRlmA4W4KM9KBdBUpDLu/43eGemCg=
-k8s.io/code-generator v0.32.2 h1:CIvyPrLWP7cMgrqval2qYT839YAwCDeSvGfXgWSNpHQ=
-k8s.io/code-generator v0.32.2/go.mod h1:plh7bWk7JztAUkHM4zpbdy0KOMdrhsePcZL2HLWFH7Y=
+k8s.io/api v0.32.3 h1:Hw7KqxRusq+6QSplE3NYG4MBxZw1BZnq4aP4cJVINls=
+k8s.io/api v0.32.3/go.mod h1:2wEDTXADtm/HA7CCMD8D8bK4yuBUptzaRhYcYEEYA3k=
+k8s.io/apiextensions-apiserver v0.32.3 h1:4D8vy+9GWerlErCwVIbcQjsWunF9SUGNu7O7hiQTyPY=
+k8s.io/apiextensions-apiserver v0.32.3/go.mod h1:8YwcvVRMVzw0r1Stc7XfGAzB/SIVLunqApySV5V7Dss=
+k8s.io/apimachinery v0.32.3 h1:JmDuDarhDmA/Li7j3aPrwhpNBA94Nvk5zLeOge9HH1U=
+k8s.io/apimachinery v0.32.3/go.mod h1:GpHVgxoKlTxClKcteaeuF1Ul/lDVb74KpZcxcmLDElE=
+k8s.io/client-go v0.32.3 h1:RKPVltzopkSgHS7aS98QdscAgtgah/+zmpAogooIqVU=
+k8s.io/client-go v0.32.3/go.mod h1:3v0+3k4IcT9bXTc4V2rt+d2ZPPG700Xy6Oi0Gdl2PaY=
+k8s.io/code-generator v0.32.3 h1:31p2TVzC9+hVdSkAFruAk3JY+iSfzrJ83Qij1yZutyw=
+k8s.io/code-generator v0.32.3/go.mod h1:+mbiYID5NLsBuqxjQTygKM/DAdKpAjvBzrJd64NU1G8=
 k8s.io/gengo/v2 v2.0.0-20250207200755-1244d31929d7 h1:2OX19X59HxDprNCVrWi6jb7LW1PoqTlYqEq5H2oetog=
 k8s.io/gengo/v2 v2.0.0-20250207200755-1244d31929d7/go.mod h1:EJykeLsmFC60UQbYJezXkEsG2FLrt0GPNkU5iK5GWxU=
 k8s.io/klog/v2 v2.130.1 h1:n9Xl7H1Xvksem4KFG4PYbdQCQxqc/tTUyrgXaOhHSzk=
 k8s.io/klog/v2 v2.130.1/go.mod h1:3Jpz1GvMt720eyJH1ckRHK1EDfpxISzJ7I9OYgaDtPE=
-k8s.io/kube-openapi v0.0.0-20250304201544-e5f78fe3ede9 h1:t0huyHnz6HsokckRxAF1bY0cqPFwzINKCL7yltEjZQc=
-k8s.io/kube-openapi v0.0.0-20250304201544-e5f78fe3ede9/go.mod h1:5jIi+8yX4RIb8wk3XwBo5Pq2ccx4FP10ohkbSKCZoK8=
-k8s.io/utils v0.0.0-20241104100929-3ea5e8cea738 h1:M3sRQVHv7vB20Xc2ybTt7ODCeFj6JSWYFzOFnYeS6Ro=
-k8s.io/utils v0.0.0-20241104100929-3ea5e8cea738/go.mod h1:OLgZIPagt7ERELqWJFomSt595RzquPNLL48iOWgYOg0=
-sigs.k8s.io/controller-runtime v0.19.0 h1:nWVM7aq+Il2ABxwiCizrVDSlmDcshi9llbaFbC0ji/Q=
-sigs.k8s.io/controller-runtime v0.19.0/go.mod h1:iRmWllt8IlaLjvTTDLhRBXIEtkCK6hwVBJJsYS9Ajf4=
-sigs.k8s.io/json v0.0.0-20241010143419-9aa6b5e7a4b3 h1:/Rv+M11QRah1itp8VhT6HoVx1Ray9eB4DBr+K+/sCJ8=
-sigs.k8s.io/json v0.0.0-20241010143419-9aa6b5e7a4b3/go.mod h1:18nIHnGi6636UCz6m8i4DhaJ65T6EruyzmoQqI2BVDo=
+k8s.io/kube-openapi v0.0.0-20250318190949-c8a335a9a2ff h1:/usPimJzUKKu+m+TE36gUyGcf03XZEP0ZIKgKj35LS4=
+k8s.io/kube-openapi v0.0.0-20250318190949-c8a335a9a2ff/go.mod h1:5jIi+8yX4RIb8wk3XwBo5Pq2ccx4FP10ohkbSKCZoK8=
+k8s.io/utils v0.0.0-20250321185631-1f6e0b77f77e h1:KqK5c/ghOm8xkHYhlodbp6i6+r+ChV2vuAuVRdFbLro=
+k8s.io/utils v0.0.0-20250321185631-1f6e0b77f77e/go.mod h1:OLgZIPagt7ERELqWJFomSt595RzquPNLL48iOWgYOg0=
+sigs.k8s.io/controller-runtime v0.20.4 h1:X3c+Odnxz+iPTRobG4tp092+CvBU9UK0t/bRf+n0DGU=
+sigs.k8s.io/controller-runtime v0.20.4/go.mod h1:xg2XB0K5ShQzAgsoujxuKN4LNXR2LfwwHsPj7Iaw+XY=
+sigs.k8s.io/json v0.0.0-20241014173422-cfa47c3a1cc8 h1:gBQPwqORJ8d8/YNZWEjoZs7npUVDpVXUUOFfW6CgAqE=
+sigs.k8s.io/json v0.0.0-20241014173422-cfa47c3a1cc8/go.mod h1:mdzfpAEoE6DHQEN0uh9ZbOCuHbLK5wOm7dK4ctXE9Tg=
 sigs.k8s.io/randfill v0.0.0-20250304075658-069ef1bbf016/go.mod h1:XeLlZ/jmk4i1HRopwe7/aU3H5n1zNUcX6TM94b3QxOY=
 sigs.k8s.io/randfill v1.0.0 h1:JfjMILfT8A6RbawdsK2JXGBR5AQVfd+9TbzrlneTyrU=
 sigs.k8s.io/randfill v1.0.0/go.mod h1:XeLlZ/jmk4i1HRopwe7/aU3H5n1zNUcX6TM94b3QxOY=
diff --git a/helm-releases/operator-7.0.1.tgz b/helm-releases/operator-7.0.1.tgz
new file mode 100644
index 00000000..65537dcd
Binary files /dev/null and b/helm-releases/operator-7.0.1.tgz differ
diff --git a/helm-releases/tenant-7.0.1.tgz b/helm-releases/tenant-7.0.1.tgz
new file mode 100644
index 00000000..b5e4df6b
Binary files /dev/null and b/helm-releases/tenant-7.0.1.tgz differ
diff --git a/helm/operator/Chart.yaml b/helm/operator/Chart.yaml
index 48163ef8..30e3d970 100644
--- a/helm/operator/Chart.yaml
+++ b/helm/operator/Chart.yaml
@@ -1,8 +1,8 @@
 apiVersion: v2
 description: A Helm chart for MinIO Operator
 name: operator
-version: 7.0.0
-appVersion: v7.0.0
+version: 7.0.1
+appVersion: v7.0.1
 keywords:
   - storage
   - object-storage
diff --git a/helm/operator/templates/minio.min.io_tenants.yaml b/helm/operator/templates/minio.min.io_tenants.yaml
index 72d7e591..edcfab6e 100644
--- a/helm/operator/templates/minio.min.io_tenants.yaml
+++ b/helm/operator/templates/minio.min.io_tenants.yaml
@@ -3,8 +3,8 @@ apiVersion: apiextensions.k8s.io/v1
 kind: CustomResourceDefinition
 metadata:
   annotations:
-    controller-gen.kubebuilder.io/version: v0.16.5
-    operator.min.io/version: v7.0.0
+    controller-gen.kubebuilder.io/version: v0.17.2
+    operator.min.io/version: v7.0.1
   name: tenants.minio.min.io
 spec:
   group: minio.min.io
@@ -2408,6 +2408,8 @@ spec:
                       runAsUser:
                         format: int64
                         type: integer
+                      seLinuxChangePolicy:
+                        type: string
                       seLinuxOptions:
                         properties:
                           level:
@@ -3341,6 +3343,8 @@ spec:
                         runAsUser:
                           format: int64
                           type: integer
+                        seLinuxChangePolicy:
+                          type: string
                         seLinuxOptions:
                           properties:
                             level:
@@ -3682,6 +3686,10 @@ spec:
                 type: string
               prometheusOperator:
                 type: boolean
+              prometheusOperatorScrapeMetricsPaths:
+                items:
+                  type: string
+                type: array
               readiness:
                 properties:
                   exec:
diff --git a/helm/operator/templates/operator-deployment.yaml b/helm/operator/templates/operator-deployment.yaml
index 5ffbd317..c43ef0ab 100644
--- a/helm/operator/templates/operator-deployment.yaml
+++ b/helm/operator/templates/operator-deployment.yaml
@@ -48,12 +48,13 @@ spec:
           imagePullPolicy: {{ .Values.operator.image.pullPolicy }}
           args:
             - controller
-          {{- with .Values.operator.env }}
-          env: {{- toYaml . | nindent 12 }}
-          {{- end }}
+          env:
           {{- if .Values.operator.sidecarImage }}
-            - name: "OPERATOR_SIDECAR_IMAGE"
-              value: "{{ .Values.operator.sidecarImage.repository }}:{{ .Values.operator.sidecarImage.digest | default .Values.operator.sidecarImage.tag }}"
+          - name: "OPERATOR_SIDECAR_IMAGE"
+            value: "{{ .Values.operator.sidecarImage.repository }}:{{ .Values.operator.sidecarImage.digest | default .Values.operator.sidecarImage.tag }}"
+          {{- end }}
+          {{- with .Values.operator.env }}
+          {{- toYaml . | nindent 12 }}
           {{- end }}
           resources: {{- toYaml .Values.operator.resources | nindent 12 }}
           {{- with .Values.operator.containerSecurityContext }}
diff --git a/helm/operator/templates/sts.min.io_policybindings.yaml b/helm/operator/templates/sts.min.io_policybindings.yaml
index 1dc6be59..672319cc 100644
--- a/helm/operator/templates/sts.min.io_policybindings.yaml
+++ b/helm/operator/templates/sts.min.io_policybindings.yaml
@@ -3,8 +3,8 @@ apiVersion: apiextensions.k8s.io/v1
 kind: CustomResourceDefinition
 metadata:
   annotations:
-    controller-gen.kubebuilder.io/version: v0.16.5
-    operator.min.io/version: v7.0.0
+    controller-gen.kubebuilder.io/version: v0.17.2
+    operator.min.io/version: v7.0.1
   name: policybindings.sts.min.io
 spec:
   group: sts.min.io
diff --git a/helm/operator/values.yaml b/helm/operator/values.yaml
index 5d08e8f7..1f354537 100644
--- a/helm/operator/values.yaml
+++ b/helm/operator/values.yaml
@@ -28,14 +28,14 @@ operator:
   ###
   # Specify the Operator container image to use for the deployment.
   # ``image.tag``
-  # For example, the following sets the image to the ``quay.io/minio/operator`` repo and the v7.0.0 tag.
+  # For example, the following sets the image to the ``quay.io/minio/operator`` repo and the v7.0.1 tag.
   # The container pulls the image if not already present:
   #
   # .. code-block:: yaml
   #
   #    image:
   #      repository: quay.io/minio/operator
-  #      tag: v7.0.0
+  #      tag: v7.0.1
   #      pullPolicy: IfNotPresent
   #
   # The chart also supports specifying an image based on digest value:
@@ -49,20 +49,20 @@ operator:
   #
   image:
     repository: quay.io/minio/operator
-    tag: v7.0.0
+    tag: v7.0.1
     pullPolicy: IfNotPresent
   ###
   # Specify the sidecar container image to deploy on tenant pods for init container and sidecar.
   # Only need to change this if want to use a different version that the default, or want to set a custom registry.
   # ``sidecarImage.tag``
-  # For example, the following sets the image to the ``quay.io/minio/operator-sidecar`` repo and the v7.0.0 tag.
+  # For example, the following sets the image to the ``quay.io/minio/operator-sidecar`` repo and the v7.0.1 tag.
   # The container pulls the image if not already present:
   #
   # .. code-block:: yaml
   #
   #    sidecarImage:
   #      repository: quay.io/minio/operator-sidecar
-  #      tag: v7.0.0
+  #      tag: v7.0.1
   #      pullPolicy: IfNotPresent
   #
   # The chart also supports specifying an image based on digest value:
diff --git a/helm/tenant/Chart.yaml b/helm/tenant/Chart.yaml
index 3a006f76..90a7178a 100644
--- a/helm/tenant/Chart.yaml
+++ b/helm/tenant/Chart.yaml
@@ -1,8 +1,8 @@
 apiVersion: v2
 description: A Helm chart for MinIO Operator
 name: tenant
-version: 7.0.0
-appVersion: v7.0.0
+version: 7.0.1
+appVersion: v7.0.1
 keywords:
   - storage
   - object-storage
diff --git a/helm/tenant/templates/checks.yaml b/helm/tenant/templates/checks.yaml
new file mode 100644
index 00000000..1ac4a361
--- /dev/null
+++ b/helm/tenant/templates/checks.yaml
@@ -0,0 +1,24 @@
+{{- with .Values.tenant }}
+
+# If an existing secret is used, do not set access-key and secret-key explicitly
+# (note that we allow the default settings in values.yaml)
+{{- with .configSecret }}
+{{- if .existingSecret }}
+{{- if and .accessKey (ne .accessKey "minio") }}
+{{- fail "Cannot set access-key when an existing secret is used" }}
+{{- end }}
+{{- if and .secretKey (ne .secretKey "minio123") }}
+{{- fail "Cannot set secret-key when an existing secret is used" }}
+{{- end }}
+{{- end }}
+{{- end }}
+
+# If configuration.name is set and not the same as configSecret.name,
+# then we should raise an error and abort
+{{- if and .configuration .configuration.name }}
+{{- if and .configSecret (ne .configuration.name .configSecret.name) -}}
+{{- fail "configuration.name is deprecated and doesn't match .tenant.configSecret.name" }}
+{{- end -}}
+{{- end }}
+
+{{- end }}
diff --git a/helm/tenant/templates/tenant-configuration.yaml b/helm/tenant/templates/tenant-configuration.yaml
index 1638f9f7..f38403e8 100644
--- a/helm/tenant/templates/tenant-configuration.yaml
+++ b/helm/tenant/templates/tenant-configuration.yaml
@@ -16,13 +16,6 @@ stringData:
     export MINIO_ROOT_USER={{ .Values.tenant.configSecret.accessKey | quote }}
     export MINIO_ROOT_PASSWORD={{ .Values.tenant.configSecret.secretKey | quote }}
 
-{{- else }}
-{{- if (.Values.tenant.configSecret.accessKey) }}
-{{- fail "# ERROR: cannot set access-key when an existing secret is used" }}
-{{- end }}
-{{- if (.Values.tenant.configSecret.secretKey) }}
-{{- fail "# ERROR: cannot set secret-key when an existing secret is used" }}
-{{- end }}
 {{- end }}
 {{- end }}
 {{- end }}
diff --git a/helm/tenant/templates/tenant.yaml b/helm/tenant/templates/tenant.yaml
index 173e44f4..a21613d3 100644
--- a/helm/tenant/templates/tenant.yaml
+++ b/helm/tenant/templates/tenant.yaml
@@ -30,7 +30,7 @@ spec:
   {{- end }}
   ## Secret with default environment variable configurations
   configuration:
-    name: {{ .configuration.name }}
+    name: {{ .configSecret.name }}
   {{- if hasKey . "poolsMetadata" }}
   poolsMetadata: {{- if eq (len .poolsMetadata) 0 }} {} {{- end }}
   {{- with (dig "poolsMetadata" (dict) .) }}
diff --git a/helm/tenant/values.yaml b/helm/tenant/values.yaml
index 616515f3..1dd82c64 100644
--- a/helm/tenant/values.yaml
+++ b/helm/tenant/values.yaml
@@ -8,14 +8,14 @@ tenant:
   ###
   # Specify the Operator container image to use for the deployment.
   # ``image.tag`` 
-  # For example, the following sets the image to the ``quay.io/minio/operator`` repo and the v7.0.0 tag.
+  # For example, the following sets the image to the ``quay.io/minio/operator`` repo and the v7.0.1 tag.
   # The container pulls the image if not already present:
   #
   # .. code-block:: yaml
   # 
   #    image:
   #       repository: quay.io/minio/minio
-  #       tag: RELEASE.2024-11-07T00-52-20Z
+  #       tag: RELEASE.2025-04-03T14-56-28Z
   #       pullPolicy: IfNotPresent
   #
   # The chart also supports specifying an image based on digest value:
@@ -30,7 +30,7 @@ tenant:
   #
   image:
     repository: quay.io/minio/minio
-    tag: RELEASE.2024-11-07T00-52-20Z
+    tag: RELEASE.2025-04-03T14-56-28Z
     pullPolicy: IfNotPresent
   ###
   #
@@ -67,11 +67,6 @@ tenant:
   # Specify an empty dictionary ``{}`` to dispatch pods with the default scheduler.
   scheduler: { }
   ###
-  # The Kubernetes secret name that contains MinIO environment variable configurations.
-  # The secret is expected to have a key named config.env containing environment variables exports.
-  configuration:
-    name: myminio-env-configuration
-  ###
   # Root key for dynamically creating a secret for use with configuring root MinIO User
   # Specify the ``name`` and then a list of environment variables.
   #
@@ -386,14 +381,14 @@ tenant:
   #  # Image from tag (original behavior), for example:
   #  # image:
   #  #   repository: quay.io/minio/kes
-  #  #   tag: 2024-11-25T13-44-31Z
+  #  #   tag: 2025-03-12T09-35-18Z
   #  # Image from digest (added after original behavior), for example:
   #  # image:
   #  #   repository: quay.io/minio/kes@sha256
   #  #   digest: fb15af611149892f357a8a99d1bcd8bf5dae713bd64c15e6eb27fbdb88fc208b
   #  image:
   #    repository: quay.io/minio/kes
-  #    tag: 2024-11-25T13-44-31Z
+  #    tag: 2025-03-12T09-35-18Z
   #    pullPolicy: IfNotPresent
   #  env: [ ]
   #  replicas: 2
diff --git a/index.yaml b/index.yaml
index fd832315..a56f6147 100644
--- a/index.yaml
+++ b/index.yaml
@@ -3,7 +3,7 @@ entries:
   minio-operator:
   - apiVersion: v2
     appVersion: v4.3.7
-    created: "2025-01-22T23:10:51.720712864Z"
+    created: "2025-03-21T05:33:07.141446999Z"
     description: A Helm chart for MinIO Operator
     digest: 594f746a54d6ced86b0147135afed425c453e015a15228b634bd79add0d24982
     home: https://min.io
@@ -24,7 +24,7 @@ entries:
     version: 4.3.7
   - apiVersion: v2
     appVersion: v4.3.6
-    created: "2025-01-22T23:10:51.718729228Z"
+    created: "2025-03-21T05:33:07.137640598Z"
     description: A Helm chart for MinIO Operator
     digest: 15bb40e086f5e562b7c588dac48a5399fadc1b9f6895f913bbd5a2993c683da7
     home: https://min.io
@@ -45,7 +45,7 @@ entries:
     version: 4.3.6
   - apiVersion: v2
     appVersion: v4.3.5
-    created: "2025-01-22T23:10:51.716707717Z"
+    created: "2025-03-21T05:33:07.135812153Z"
     description: A Helm chart for MinIO Operator
     digest: d561a1a3f0d900b721a73a7f17bc1ceda06b00328a5d31786bd8a8a92a20b08b
     home: https://min.io
@@ -66,7 +66,7 @@ entries:
     version: 4.3.5
   - apiVersion: v2
     appVersion: v4.3.4
-    created: "2025-01-22T23:10:51.714683304Z"
+    created: "2025-03-21T05:33:07.133971663Z"
     description: A Helm chart for MinIO Operator
     digest: 8cbfa6aa2264a5ab03e81e65391f22970c38f26b68c6292b8e77f1936bf7f0c0
     home: https://min.io
@@ -87,7 +87,7 @@ entries:
     version: 4.3.4
   - apiVersion: v2
     appVersion: v4.3.3
-    created: "2025-01-22T23:10:51.711500539Z"
+    created: "2025-03-21T05:33:07.12988181Z"
     description: A Helm chart for MinIO Operator
     digest: 399e916491f7b3297afb6a85baf4f305547f46e7df2674b542cb1a8873abef62
     home: https://min.io
@@ -108,7 +108,7 @@ entries:
     version: 4.3.3
   - apiVersion: v2
     appVersion: v4.3.2
-    created: "2025-01-22T23:10:51.709234373Z"
+    created: "2025-03-21T05:33:07.125058571Z"
     description: A Helm chart for MinIO Operator
     digest: b446473b9814288f4f356afa12053b2bce0cbdf014be74ab21b31b36cb0ac15a
     home: https://min.io
@@ -129,7 +129,7 @@ entries:
     version: 4.3.2
   - apiVersion: v2
     appVersion: v4.3.1
-    created: "2025-01-22T23:10:51.707417123Z"
+    created: "2025-03-21T05:33:07.122883Z"
     description: A Helm chart for MinIO Operator
     digest: 4a325c6a47173e66b986db47b5d8235fd3c5eff788e252b5ca40b3ce27f4cc87
     home: https://min.io
@@ -150,7 +150,7 @@ entries:
     version: 4.3.1
   - apiVersion: v2
     appVersion: v4.3.0
-    created: "2025-01-22T23:10:51.705496802Z"
+    created: "2025-03-21T05:33:07.11946943Z"
     description: A Helm chart for MinIO Operator
     digest: 52ca8a53360481b54e67912da6a757e060b50b85cece003101e90c16f426f972
     home: https://min.io
@@ -171,7 +171,7 @@ entries:
     version: 4.3.0
   - apiVersion: v2
     appVersion: v4.2.14
-    created: "2025-01-22T23:10:51.688705366Z"
+    created: "2025-03-21T05:33:07.096687144Z"
     description: A Helm chart for MinIO Operator
     digest: 72527bd5088ec619ca1da54f2e296bd76ffab8a9473ec619ca2c05c6e0679e87
     home: https://min.io
@@ -192,7 +192,7 @@ entries:
     version: 4.2.14
   - apiVersion: v2
     appVersion: v4.2.12
-    created: "2025-01-22T23:10:51.686722399Z"
+    created: "2025-03-21T05:33:07.094636865Z"
     description: A Helm chart for MinIO Operator
     digest: a1233b80a3658502d6871e12b7c0a2897d12cf8df859c9c531efc32e62d48c9d
     home: https://min.io
@@ -213,7 +213,7 @@ entries:
     version: 4.2.12
   - apiVersion: v2
     appVersion: v4.2.10
-    created: "2025-01-22T23:10:51.684763522Z"
+    created: "2025-03-21T05:33:07.09183755Z"
     description: A Helm chart for MinIO Operator
     digest: cba1a0b6fdb56c5fd084f81721285b8c2d9710d8a616bad7d421d2f5c8f6cac0
     home: https://min.io
@@ -234,7 +234,7 @@ entries:
     version: 4.2.10
   - apiVersion: v2
     appVersion: v4.2.9
-    created: "2025-01-22T23:10:51.703636602Z"
+    created: "2025-03-21T05:33:07.116389429Z"
     description: A Helm chart for MinIO Operator
     digest: e4d7a289e4933aec88457243c8a1cc9bb191148421cdc2804a954cf4158f90fb
     home: https://min.io
@@ -255,7 +255,7 @@ entries:
     version: 4.2.9
   - apiVersion: v2
     appVersion: v4.2.8
-    created: "2025-01-22T23:10:51.700747346Z"
+    created: "2025-03-21T05:33:07.11191384Z"
     description: A Helm chart for MinIO Operator
     digest: 35c4888f3b2bf75b79c1e7f12d4b0dd35138045c7b62c3824a307ce4814f5d4a
     home: https://min.io
@@ -276,7 +276,7 @@ entries:
     version: 4.2.8
   - apiVersion: v2
     appVersion: v4.2.7
-    created: "2025-01-22T23:10:51.698932837Z"
+    created: "2025-03-21T05:33:07.109066872Z"
     description: A Helm chart for MinIO Operator
     digest: 99a024d5ae4339752a823ae80b9d1d0fdd5994e16f1ec6acce4f7ad4945c0eb9
     home: https://min.io
@@ -297,7 +297,7 @@ entries:
     version: 4.2.7
   - apiVersion: v2
     appVersion: v4.2.6
-    created: "2025-01-22T23:10:51.697123951Z"
+    created: "2025-03-21T05:33:07.106349582Z"
     description: A Helm chart for MinIO Operator
     digest: 9137a28ad10f199777f104f89a1c10af763d9087fbc733ba4d295a118d112f2d
     home: https://min.io
@@ -318,7 +318,7 @@ entries:
     version: 4.2.6
   - apiVersion: v2
     appVersion: v4.2.5
-    created: "2025-01-22T23:10:51.695364911Z"
+    created: "2025-03-21T05:33:07.103091249Z"
     description: A Helm chart for MinIO Operator
     digest: 02b29aeae4586edcada3864514a788c2862b8bad3922e80cde2e557f8901c259
     home: https://min.io
@@ -339,7 +339,7 @@ entries:
     version: 4.2.5
   - apiVersion: v2
     appVersion: v4.2.4
-    created: "2025-01-22T23:10:51.692561823Z"
+    created: "2025-03-21T05:33:07.099886895Z"
     description: A Helm chart for MinIO Operator
     digest: 99620af40a461197d7fd43c937266fe1ed742c3dd10123e420371cc5592d26d2
     home: https://min.io
@@ -360,7 +360,7 @@ entries:
     version: 4.2.4
   - apiVersion: v2
     appVersion: v4.2.3
-    created: "2025-01-22T23:10:51.690609074Z"
+    created: "2025-03-21T05:33:07.098351351Z"
     description: A Helm chart for MinIO Operator
     digest: d4a8e536a7b01b83c87cff872881b11c72d7d9d0aa05201420b69c0a4ee169dc
     home: https://min.io
@@ -381,7 +381,7 @@ entries:
     version: 4.2.3
   - apiVersion: v2
     appVersion: v4.2.3
-    created: "2025-01-22T23:10:51.681864001Z"
+    created: "2025-03-21T05:33:07.08998995Z"
     description: A Helm chart for MinIO Operator
     digest: 1e3683587801162d989217c019d3e5bf8ecc03116431643fa4876889973549fd
     home: https://min.io
@@ -402,7 +402,7 @@ entries:
     version: 4.1.8
   - apiVersion: v2
     appVersion: v4.1.3
-    created: "2025-01-22T23:10:51.680064021Z"
+    created: "2025-03-21T05:33:07.087696247Z"
     description: A Helm chart for MinIO Operator
     digest: 0cf6f5c3724facc74cfeb32c17a798099f72baff9869ae6d6fb5422557fe40b7
     home: https://min.io
@@ -423,7 +423,7 @@ entries:
     version: 4.1.7
   - apiVersion: v2
     appVersion: v4.1.2
-    created: "2025-01-22T23:10:51.678153735Z"
+    created: "2025-03-21T05:33:07.085351332Z"
     description: A Helm chart for MinIO Operator
     digest: 979717ddc254f24fe4561a4642162de3d4e847cf7f2b26b1592ca0e8d0bdb6e2
     home: https://min.io
@@ -444,7 +444,7 @@ entries:
     version: 4.1.6
   - apiVersion: v2
     appVersion: v4.1.2
-    created: "2025-01-22T23:10:51.676372521Z"
+    created: "2025-03-21T05:33:07.08090464Z"
     description: A Helm chart for MinIO Operator
     digest: 3dff7502f24ce641048c849ab1da226854fb8afa34d05b40d7c46dd2725e2cfe
     home: https://min.io
@@ -465,7 +465,7 @@ entries:
     version: 4.1.5
   - apiVersion: v2
     appVersion: v4.1.1
-    created: "2025-01-22T23:10:51.673671631Z"
+    created: "2025-03-21T05:33:07.07856119Z"
     description: A Helm chart for MinIO Operator
     digest: 7082e25eff205c2596e4902361ca370f1e12b7e28e881b88b672d4bb0c02b075
     home: https://min.io
@@ -486,7 +486,7 @@ entries:
     version: 4.1.4
   - apiVersion: v2
     appVersion: v4.1.1
-    created: "2025-01-22T23:10:51.671963034Z"
+    created: "2025-03-21T05:33:07.076485227Z"
     description: A Helm chart for MinIO Operator
     digest: d9cbb94e31fcc726ebb3281a06d85ea3ee941bf36237972b6ae38e4d4c2f205b
     home: https://min.io
@@ -507,7 +507,7 @@ entries:
     version: 4.1.3
   - apiVersion: v2
     appVersion: v4.1.1
-    created: "2025-01-22T23:10:51.670221623Z"
+    created: "2025-03-21T05:33:07.074415002Z"
     description: A Helm chart for MinIO Operator
     digest: 6bf8dd70e500ea0970a477cc12c6a40fc062102055c911b96eef6dc748500b03
     home: https://min.io
@@ -528,7 +528,7 @@ entries:
     version: 4.1.2
   - apiVersion: v2
     appVersion: v4.1.1
-    created: "2025-01-22T23:10:51.668533812Z"
+    created: "2025-03-21T05:33:07.070931994Z"
     description: A Helm chart for MinIO Operator
     digest: 8fa3dcd6c40ee405127f1836526b78d473b1f02e690213072fde78712d63c655
     home: https://min.io
@@ -549,7 +549,7 @@ entries:
     version: 4.1.1
   - apiVersion: v2
     appVersion: v4.1.1
-    created: "2025-01-22T23:10:51.666832185Z"
+    created: "2025-03-21T05:33:07.068633866Z"
     description: A Helm chart for MinIO Operator
     digest: 5926ba1a622fc2887f3fb24c43f567bb308ef652941e592f58371224759b3e24
     home: https://min.io
@@ -570,7 +570,7 @@ entries:
     version: 4.1.0
   - apiVersion: v2
     appVersion: v4.0.11
-    created: "2025-01-22T23:10:51.648294189Z"
+    created: "2025-03-21T05:33:07.045861002Z"
     description: A Helm chart for MinIO Operator
     digest: cbae4fb31f83e426a7ea0decdfd57f6eb64a43e5b6e2726ab899d1d72c9f54e0
     home: https://min.io
@@ -591,7 +591,7 @@ entries:
     version: 4.0.11
   - apiVersion: v2
     appVersion: v4.0.9
-    created: "2025-01-22T23:10:51.644963491Z"
+    created: "2025-03-21T05:33:07.043926504Z"
     description: A Helm chart for MinIO Operator
     digest: b74d8011ce86b534c7ebae8d84e7eb0552c701b511e32f0cebdab56551e30638
     home: https://min.io
@@ -611,7 +611,7 @@ entries:
     - https://operator.min.io/helm-releases/minio-operator-4.0.10.tgz
     version: 4.0.10
   - apiVersion: v2
-    created: "2025-01-22T23:10:51.663958112Z"
+    created: "2025-03-21T05:33:07.066483198Z"
     description: A Helm chart for MinIO Operator
     digest: 40bd65d9a8144a5bda8f1e7a74720f526bbaf540e812e7eabc2ccad3ca7b439c
     home: https://min.io
@@ -631,7 +631,7 @@ entries:
     - https://operator.min.io/helm-releases/minio-operator-4.0.9.tgz
     version: 4.0.9
   - apiVersion: v2
-    created: "2025-01-22T23:10:51.662065724Z"
+    created: "2025-03-21T05:33:07.064236612Z"
     description: A Helm chart for MinIO Operator
     digest: a7dd16236a42c6b6731542e9c19744da76a50ac3a7524cb2ce64e95e8e3e5d30
     home: https://min.io
@@ -651,7 +651,7 @@ entries:
     - https://operator.min.io/helm-releases/minio-operator-4.0.8.tgz
     version: 4.0.8
   - apiVersion: v2
-    created: "2025-01-22T23:10:51.660167282Z"
+    created: "2025-03-21T05:33:07.060628378Z"
     description: A Helm chart for MinIO Operator
     digest: 87f6ac2a98a96dd6ce20fded82f45e4eed79c0933ebed069d6f2167079597c27
     home: https://min.io
@@ -671,7 +671,7 @@ entries:
     - https://operator.min.io/helm-releases/minio-operator-4.0.7.tgz
     version: 4.0.7
   - apiVersion: v2
-    created: "2025-01-22T23:10:51.658254871Z"
+    created: "2025-03-21T05:33:07.058155392Z"
     description: A Helm chart for MinIO Operator
     digest: 2c7dbe86e2950f48d7b44e702969b67c8b1b5308f18e8e16cdc52e4ec7b6cdbd
     home: https://min.io
@@ -691,7 +691,7 @@ entries:
     - https://operator.min.io/helm-releases/minio-operator-4.0.7-1.tgz
     version: 4.0.7-1
   - apiVersion: v2
-    created: "2025-01-22T23:10:51.655431352Z"
+    created: "2025-03-21T05:33:07.056069297Z"
     description: A Helm chart for MinIO Operator
     digest: b25a95e0312b16fab2097db2f45cec540d39d416ce05adcb142dba2f8f300ace
     home: https://min.io
@@ -711,7 +711,7 @@ entries:
     - https://operator.min.io/helm-releases/minio-operator-4.0.6.tgz
     version: 4.0.6
   - apiVersion: v2
-    created: "2025-01-22T23:10:51.653429154Z"
+    created: "2025-03-21T05:33:07.053173056Z"
     description: A Helm chart for MinIO Operator
     digest: 4407196cc9a3e6cea8ddb719e8308985cb49789a3e77c023f0bc680c31f11de3
     home: https://min.io
@@ -731,7 +731,7 @@ entries:
     - https://operator.min.io/helm-releases/minio-operator-4.0.5.tgz
     version: 4.0.5
   - apiVersion: v2
-    created: "2025-01-22T23:10:51.65157206Z"
+    created: "2025-03-21T05:33:07.049678626Z"
     description: A Helm chart for MinIO Operator
     digest: ce4a4d68e66cec8af18c28eee339dd2adf3bb4a7beba851eaa3b8b7783e26cd1
     home: https://min.io
@@ -751,7 +751,7 @@ entries:
     - https://operator.min.io/helm-releases/minio-operator-4.0.3.tgz
     version: 4.0.3
   - apiVersion: v2
-    created: "2025-01-22T23:10:51.649753067Z"
+    created: "2025-03-21T05:33:07.047338597Z"
     description: A Helm chart for MinIO Operator
     digest: b488b7faac263a1d7c70374b20435b6ec3a0288f28a845647f0d5c57bc349c43
     home: https://min.io
@@ -771,7 +771,7 @@ entries:
     - https://operator.min.io/helm-releases/minio-operator-4.0.2.tgz
     version: 4.0.2
   - apiVersion: v2
-    created: "2025-01-22T23:10:51.642860888Z"
+    created: "2025-03-21T05:33:07.042237114Z"
     description: A Helm chart for MinIO Operator
     digest: f69b67cd3dcc8d819994fc4473d07be1e8fd11e8428914195a7f59f17321ea46
     home: https://min.io
@@ -791,7 +791,7 @@ entries:
     - https://operator.min.io/helm-releases/minio-operator-4.0.1.tgz
     version: 4.0.1
   - apiVersion: v2
-    created: "2025-01-22T23:10:51.641257136Z"
+    created: "2025-03-21T05:33:07.039540803Z"
     description: A Helm chart for MinIO Operator
     digest: 8bc6f068743480ed1cecae0ec896ac6f46ffec5e7ed6e4efbb241bc3b47c7f21
     home: https://min.io
@@ -811,9 +811,30 @@ entries:
     - https://operator.min.io/helm-releases/minio-operator-4.0.0.tgz
     version: 4.0.0
   operator:
+  - apiVersion: v2
+    appVersion: v7.0.1
+    created: "2025-03-21T05:33:07.391446174Z"
+    description: A Helm chart for MinIO Operator
+    digest: 41f4db5213edbd64c7a0d6faee502a01200cbbebb02296f858f96ab89b43231a
+    home: https://min.io
+    icon: https://min.io/resources/img/logo/MINIO_wordmark.png
+    keywords:
+    - storage
+    - object-storage
+    - S3
+    maintainers:
+    - email: dev@minio.io
+      name: MinIO, Inc
+    name: operator
+    sources:
+    - https://github.com/minio/operator
+    type: application
+    urls:
+    - https://operator.min.io/helm-releases/operator-7.0.1.tgz
+    version: 7.0.1
   - apiVersion: v2
     appVersion: v7.0.0
-    created: "2025-01-22T23:10:51.841863983Z"
+    created: "2025-03-21T05:33:07.301375005Z"
     description: A Helm chart for MinIO Operator
     digest: 28582dd4f3fb040211472cb248b31d9aebd000b444f2f266a3da1bf8c529dcf5
     home: https://min.io
@@ -834,7 +855,7 @@ entries:
     version: 7.0.0
   - apiVersion: v2
     appVersion: v6.0.4
-    created: "2025-01-22T23:10:51.840278322Z"
+    created: "2025-03-21T05:33:07.299673986Z"
     description: A Helm chart for MinIO Operator
     digest: d530a305b76e236baff1488b115172d85ae6ecd76161fd7daf13d1349f62d9fb
     home: https://min.io
@@ -855,7 +876,7 @@ entries:
     version: 6.0.4
   - apiVersion: v2
     appVersion: v6.0.3
-    created: "2025-01-22T23:10:51.837579519Z"
+    created: "2025-03-21T05:33:07.297552036Z"
     description: A Helm chart for MinIO Operator
     digest: 3f81e25df0245008c2b228276e0caa003608b57400328184af43756815214547
     home: https://min.io
@@ -876,7 +897,7 @@ entries:
     version: 6.0.3
   - apiVersion: v2
     appVersion: v6.0.2
-    created: "2025-01-22T23:10:51.836040762Z"
+    created: "2025-03-21T05:33:07.295465619Z"
     description: A Helm chart for MinIO Operator
     digest: c2c7ca842d91ee7442cea531f9b3d1a0d8d04fa5e23aa2b0f852038e016292b5
     home: https://min.io
@@ -897,7 +918,7 @@ entries:
     version: 6.0.2
   - apiVersion: v2
     appVersion: v6.0.1
-    created: "2025-01-22T23:10:51.834493103Z"
+    created: "2025-03-21T05:33:07.293204111Z"
     description: A Helm chart for MinIO Operator
     digest: df9d920acd4a1e97da58ce5155b7ddc142dd4ae66a59e570864ea6413dedc42c
     home: https://min.io
@@ -918,7 +939,7 @@ entries:
     version: 6.0.1
   - apiVersion: v2
     appVersion: v6.0.0
-    created: "2025-01-22T23:10:51.832944833Z"
+    created: "2025-03-21T05:33:07.289299845Z"
     description: A Helm chart for MinIO Operator
     digest: c17fbdc07f6928abc64651658c0b396d996730bb585fb170aac0d2557bd6693f
     home: https://min.io
@@ -939,7 +960,7 @@ entries:
     version: 6.0.0
   - apiVersion: v2
     appVersion: v5.0.17
-    created: "2025-01-22T23:10:51.819127906Z"
+    created: "2025-03-21T05:33:07.272363138Z"
     description: A Helm chart for MinIO Operator
     digest: 19f149eb27c86fbf2d3fc8a3667815806ed0305a87c1e73507550cb182f0df5b
     home: https://min.io
@@ -960,7 +981,7 @@ entries:
     version: 5.0.17
   - apiVersion: v2
     appVersion: v5.0.16
-    created: "2025-01-22T23:10:51.816689371Z"
+    created: "2025-03-21T05:33:07.269568908Z"
     description: A Helm chart for MinIO Operator
     digest: a6cbfd0c5c70eba9b23cd217d60fdee483a491ff152d0dea5edefe2ff885efc5
     home: https://min.io
@@ -981,7 +1002,7 @@ entries:
     version: 5.0.16
   - apiVersion: v2
     appVersion: v5.0.15
-    created: "2025-01-22T23:10:51.814672468Z"
+    created: "2025-03-21T05:33:07.266784736Z"
     description: A Helm chart for MinIO Operator
     digest: 8c174de0947acf39c4482def9249730db7f44a9ed57e0b2207c8cf6cc794c51f
     home: https://min.io
@@ -1002,7 +1023,7 @@ entries:
     version: 5.0.15
   - apiVersion: v2
     appVersion: v5.0.14
-    created: "2025-01-22T23:10:51.812705575Z"
+    created: "2025-03-21T05:33:07.264163526Z"
     description: A Helm chart for MinIO Operator
     digest: f254c6cb6ab5fcb0089689b6b51979eec306220275c614ab1e50bb83103f5c1c
     home: https://min.io
@@ -1023,7 +1044,7 @@ entries:
     version: 5.0.14
   - apiVersion: v2
     appVersion: v5.0.13
-    created: "2025-01-22T23:10:51.810852034Z"
+    created: "2025-03-21T05:33:07.260717533Z"
     description: A Helm chart for MinIO Operator
     digest: 8f4d25a00becce25a1bf3f35a4729072a9f560629e0ab9d1c16d74de0f4d379d
     home: https://min.io
@@ -1044,7 +1065,7 @@ entries:
     version: 5.0.13
   - apiVersion: v2
     appVersion: v5.0.12
-    created: "2025-01-22T23:10:51.808881292Z"
+    created: "2025-03-21T05:33:07.258813966Z"
     description: A Helm chart for MinIO Operator
     digest: 010e2054bcb864e32763f0be0350f498f44b51bba8f313e1893abd9a8ef5d325
     home: https://min.io
@@ -1065,7 +1086,7 @@ entries:
     version: 5.0.12
   - apiVersion: v2
     appVersion: v5.0.11
-    created: "2025-01-22T23:10:51.806878817Z"
+    created: "2025-03-21T05:33:07.256562683Z"
     description: A Helm chart for MinIO Operator
     digest: 0198f0939b54a44face01b3f54fc8f12ff176e8a371114608856a1d0e53fe01a
     home: https://min.io
@@ -1086,7 +1107,7 @@ entries:
     version: 5.0.11
   - apiVersion: v2
     appVersion: v5.0.10
-    created: "2025-01-22T23:10:51.803957196Z"
+    created: "2025-03-21T05:33:07.254275546Z"
     description: A Helm chart for MinIO Operator
     digest: 5a989ef3e1c1a7d43350012bd7ddb305232b3bd804788a8874cc2742eae80a80
     home: https://min.io
@@ -1107,7 +1128,7 @@ entries:
     version: 5.0.10
   - apiVersion: v2
     appVersion: v5.0.9
-    created: "2025-01-22T23:10:51.83141322Z"
+    created: "2025-03-21T05:33:07.287394805Z"
     description: A Helm chart for MinIO Operator
     digest: 515fb406a6b08f90b04fa1b844e7a0ad2aac77f73320d9c484f2e19fc0a32d73
     home: https://min.io
@@ -1128,7 +1149,7 @@ entries:
     version: 5.0.9
   - apiVersion: v2
     appVersion: v5.0.8
-    created: "2025-01-22T23:10:51.829898401Z"
+    created: "2025-03-21T05:33:07.28562542Z"
     description: A Helm chart for MinIO Operator
     digest: 65b020e15979b03c7f013e307bbe0d4e6e14727019e17bdb2e2604af8056856d
     home: https://min.io
@@ -1149,7 +1170,7 @@ entries:
     version: 5.0.8
   - apiVersion: v2
     appVersion: v5.0.7
-    created: "2025-01-22T23:10:51.827429863Z"
+    created: "2025-03-21T05:33:07.283811655Z"
     description: A Helm chart for MinIO Operator
     digest: 5c72b03b17b5af84a98d92fb10496449ffe2e77c598a7159e44941f86318e49d
     home: https://min.io
@@ -1170,7 +1191,7 @@ entries:
     version: 5.0.7
   - apiVersion: v2
     appVersion: v5.0.6
-    created: "2025-01-22T23:10:51.826012453Z"
+    created: "2025-03-21T05:33:07.282134892Z"
     description: A Helm chart for MinIO Operator
     digest: 76d925894253644cdea9bdd04772e23e2c6bd08f695ee3d879ee9f4749a1b46a
     home: https://min.io
@@ -1191,7 +1212,7 @@ entries:
     version: 5.0.6
   - apiVersion: v2
     appVersion: v5.0.5
-    created: "2025-01-22T23:10:51.824714494Z"
+    created: "2025-03-21T05:33:07.280296765Z"
     description: A Helm chart for MinIO Operator
     digest: 95be83e629b8012cfc5bcbbf9f74d2d681c50f27d64113e7a1345df65f5ea231
     home: https://min.io
@@ -1212,7 +1233,7 @@ entries:
     version: 5.0.5
   - apiVersion: v2
     appVersion: v5.0.4
-    created: "2025-01-22T23:10:51.823470805Z"
+    created: "2025-03-21T05:33:07.278435148Z"
     description: A Helm chart for MinIO Operator
     digest: b95039620fae7106aef2f0b3a038269f831dfc62aebb009de440bb2dbaa50029
     home: https://min.io
@@ -1233,7 +1254,7 @@ entries:
     version: 5.0.4
   - apiVersion: v2
     appVersion: v5.0.3
-    created: "2025-01-22T23:10:51.822177927Z"
+    created: "2025-03-21T05:33:07.275611399Z"
     description: A Helm chart for MinIO Operator
     digest: 6c7fc60878d0cf4c79889bd21d6a1bfde322c8f7987c294bc0eb0d95a18169b2
     home: https://min.io
@@ -1254,7 +1275,7 @@ entries:
     version: 5.0.3
   - apiVersion: v2
     appVersion: v5.0.2
-    created: "2025-01-22T23:10:51.820925472Z"
+    created: "2025-03-21T05:33:07.274162298Z"
     description: A Helm chart for MinIO Operator
     digest: aab64d84fc51473212af5dbd353c440debdf014d60b8af065da9a7478fe2e486
     home: https://min.io
@@ -1275,7 +1296,7 @@ entries:
     version: 5.0.2
   - apiVersion: v2
     appVersion: v5.0.1
-    created: "2025-01-22T23:10:51.802278837Z"
+    created: "2025-03-21T05:33:07.252374423Z"
     description: A Helm chart for MinIO Operator
     digest: 2be349f743983af26bf0d5385b268f2e819dff9975d4476da0961f706a1795f7
     home: https://min.io
@@ -1296,7 +1317,7 @@ entries:
     version: 5.0.1
   - apiVersion: v2
     appVersion: v5.0.0
-    created: "2025-01-22T23:10:51.800804842Z"
+    created: "2025-03-21T05:33:07.250520176Z"
     description: A Helm chart for MinIO Operator
     digest: b39696e784156aff4424d6c08381c1080487e06dfe6c9269dd8244560b70c5b1
     home: https://min.io
@@ -1317,7 +1338,7 @@ entries:
     version: 5.0.0
   - apiVersion: v2
     appVersion: v4.5.8
-    created: "2025-01-22T23:10:51.799374879Z"
+    created: "2025-03-21T05:33:07.247562679Z"
     description: A Helm chart for MinIO Operator
     digest: a0ddfc8a48a00cba431617a61bc8e1d2a3d7cb461cf7232b92f9bbb9f068324a
     home: https://min.io
@@ -1338,7 +1359,7 @@ entries:
     version: 4.5.8
   - apiVersion: v2
     appVersion: v4.5.7
-    created: "2025-01-22T23:10:51.797276922Z"
+    created: "2025-03-21T05:33:07.245106245Z"
     description: A Helm chart for MinIO Operator
     digest: 41513d7b1e15d40256641baea0641293fc8f0e05a2bbe565b4c13377e618b8e0
     home: https://min.io
@@ -1359,7 +1380,7 @@ entries:
     version: 4.5.7
   - apiVersion: v2
     appVersion: v4.5.6
-    created: "2025-01-22T23:10:51.795188445Z"
+    created: "2025-03-21T05:33:07.242914473Z"
     description: A Helm chart for MinIO Operator
     digest: b87e72fbb0d846239983be9654822fdb89519d5cfe17506f983743b6e4f89aa1
     home: https://min.io
@@ -1380,7 +1401,7 @@ entries:
     version: 4.5.6
   - apiVersion: v2
     appVersion: v4.5.5
-    created: "2025-01-22T23:10:51.792279162Z"
+    created: "2025-03-21T05:33:07.240710619Z"
     description: A Helm chart for MinIO Operator
     digest: f1adecf0d94f5181917205f1aaeff3cc86c9037fd3f2dddb0cbeeb0ca4af4068
     home: https://min.io
@@ -1401,7 +1422,7 @@ entries:
     version: 4.5.5
   - apiVersion: v2
     appVersion: v4.5.4
-    created: "2025-01-22T23:10:51.790541544Z"
+    created: "2025-03-21T05:33:07.23746192Z"
     description: A Helm chart for MinIO Operator
     digest: 7671c2e3d5242fe9f09c28119818ffac43e36b40a3117c839dd7cffb81645312
     home: https://min.io
@@ -1422,7 +1443,7 @@ entries:
     version: 4.5.4
   - apiVersion: v2
     appVersion: v4.5.3
-    created: "2025-01-22T23:10:51.788812326Z"
+    created: "2025-03-21T05:33:07.235402399Z"
     description: A Helm chart for MinIO Operator
     digest: b684dc8b61518cc4b4a94c4821fda84a6d5d62dec80dcda8ddfa87362a0e11cd
     home: https://min.io
@@ -1443,7 +1464,7 @@ entries:
     version: 4.5.3
   - apiVersion: v2
     appVersion: v4.5.2
-    created: "2025-01-22T23:10:51.787062554Z"
+    created: "2025-03-21T05:33:07.233330729Z"
     description: A Helm chart for MinIO Operator
     digest: a51dad184718cf01521d7c75d18bee75aa3f6d097d6ccab89db6a6d4c4d89223
     home: https://min.io
@@ -1464,7 +1485,7 @@ entries:
     version: 4.5.2
   - apiVersion: v2
     appVersion: v4.5.1
-    created: "2025-01-22T23:10:51.784506411Z"
+    created: "2025-03-21T05:33:07.231174469Z"
     description: A Helm chart for MinIO Operator
     digest: d1be481f3701bc53041e0b6f23e0b9a94f6af0f2cc3da9034d609c608958f892
     home: https://min.io
@@ -1485,7 +1506,7 @@ entries:
     version: 4.5.1
   - apiVersion: v2
     appVersion: v4.5.0
-    created: "2025-01-22T23:10:51.782732542Z"
+    created: "2025-03-21T05:33:07.226855547Z"
     description: A Helm chart for MinIO Operator
     digest: cee44179e562c94b494747af1dddf6b20d4ccdfa951207e53add75c7402c3925
     home: https://min.io
@@ -1506,7 +1527,7 @@ entries:
     version: 4.5.0
   - apiVersion: v2
     appVersion: v4.4.28
-    created: "2025-01-22T23:10:51.767163369Z"
+    created: "2025-03-21T05:33:07.206421642Z"
     description: A Helm chart for MinIO Operator
     digest: a018da827765df710c7b78c2c6dc3a8c68ea80f9806ab595b65a11d3acb88aec
     home: https://min.io
@@ -1527,7 +1548,7 @@ entries:
     version: 4.4.28
   - apiVersion: v2
     appVersion: v4.4.27
-    created: "2025-01-22T23:10:51.765205939Z"
+    created: "2025-03-21T05:33:07.20422934Z"
     description: A Helm chart for MinIO Operator
     digest: ebd3e2df74ac714d9238bb5f6c76ccaecfbf022b1381f4c3ebf6a6183ca80bf8
     home: https://min.io
@@ -1548,7 +1569,7 @@ entries:
     version: 4.4.27
   - apiVersion: v2
     appVersion: v4.4.26
-    created: "2025-01-22T23:10:51.763386827Z"
+    created: "2025-03-21T05:33:07.201891104Z"
     description: A Helm chart for MinIO Operator
     digest: d29e08108f60bb26c4ba198144128bfd72b811d9c2a38440b45089b99ddf8ab4
     home: https://min.io
@@ -1569,7 +1590,7 @@ entries:
     version: 4.4.26
   - apiVersion: v2
     appVersion: v4.4.25
-    created: "2025-01-22T23:10:51.761557839Z"
+    created: "2025-03-21T05:33:07.199729686Z"
     description: A Helm chart for MinIO Operator
     digest: fab2f0395ae74430b22dc4293ec6846cd77e5193e6265defcdce41ed43ecffd6
     home: https://min.io
@@ -1590,7 +1611,7 @@ entries:
     version: 4.4.25
   - apiVersion: v2
     appVersion: v4.4.24
-    created: "2025-01-22T23:10:51.759687855Z"
+    created: "2025-03-21T05:33:07.197819632Z"
     description: A Helm chart for MinIO Operator
     digest: eaa1e7814cc57a7522bf37d1aad8d2558647482cc17e6eccd187ad129732bb0f
     home: https://min.io
@@ -1611,7 +1632,7 @@ entries:
     version: 4.4.24
   - apiVersion: v2
     appVersion: v4.4.23
-    created: "2025-01-22T23:10:51.756342012Z"
+    created: "2025-03-21T05:33:07.194509569Z"
     description: A Helm chart for MinIO Operator
     digest: d68d464d63d76d7547fd484425cff0a147d9813e081811c095850742a97c0c79
     home: https://min.io
@@ -1632,7 +1653,7 @@ entries:
     version: 4.4.23
   - apiVersion: v2
     appVersion: v4.4.22
-    created: "2025-01-22T23:10:51.754569605Z"
+    created: "2025-03-21T05:33:07.192247593Z"
     description: A Helm chart for MinIO Operator
     digest: 7aea39787ee933f3886544a4c0aadafe10e6faeed8b4faa4cc67e9f59bd8527a
     home: https://min.io
@@ -1653,7 +1674,7 @@ entries:
     version: 4.4.22
   - apiVersion: v2
     appVersion: v4.4.21
-    created: "2025-01-22T23:10:51.752666887Z"
+    created: "2025-03-21T05:33:07.189897161Z"
     description: A Helm chart for MinIO Operator
     digest: c13aadc25a6c8140df82b6778a38b5b4cff8b09c4f3227b3479419f3abd0f6f0
     home: https://min.io
@@ -1674,7 +1695,7 @@ entries:
     version: 4.4.21
   - apiVersion: v2
     appVersion: v4.4.20
-    created: "2025-01-22T23:10:51.750951021Z"
+    created: "2025-03-21T05:33:07.187726982Z"
     description: A Helm chart for MinIO Operator
     digest: 3dece764e01c5b64802a8f9d85f2bff526429f8ceb425b3e831bfbcafb474e32
     home: https://min.io
@@ -1695,7 +1716,7 @@ entries:
     version: 4.4.20
   - apiVersion: v2
     appVersion: v4.4.19
-    created: "2025-01-22T23:10:51.746662503Z"
+    created: "2025-03-21T05:33:07.182344671Z"
     description: A Helm chart for MinIO Operator
     digest: 2279d2f725552281a7237e0f5a784298ab07b5dee5e7d6a4b3e4248ff0cffed6
     home: https://min.io
@@ -1716,7 +1737,7 @@ entries:
     version: 4.4.19
   - apiVersion: v2
     appVersion: v4.4.18
-    created: "2025-01-22T23:10:51.745019262Z"
+    created: "2025-03-21T05:33:07.180065893Z"
     description: A Helm chart for MinIO Operator
     digest: 76ac4effba9eec872147a5df9a3d98fc5f4c436a228d90fd4da0ccc70e79f48e
     home: https://min.io
@@ -1737,7 +1758,7 @@ entries:
     version: 4.4.18
   - apiVersion: v2
     appVersion: v4.4.17
-    created: "2025-01-22T23:10:51.743368152Z"
+    created: "2025-03-21T05:33:07.177945916Z"
     description: A Helm chart for MinIO Operator
     digest: f6130cdd591debd916b148c627eddb0324c07f83c2e7625afa0fb03bdf60007a
     home: https://min.io
@@ -1758,7 +1779,7 @@ entries:
     version: 4.4.17
   - apiVersion: v2
     appVersion: v4.4.16
-    created: "2025-01-22T23:10:51.741692652Z"
+    created: "2025-03-21T05:33:07.174209281Z"
     description: A Helm chart for MinIO Operator
     digest: 4c030fbfd273d005ce968136cddd39a75714dfe1c364dc30d84a15af70793604
     home: https://min.io
@@ -1779,7 +1800,7 @@ entries:
     version: 4.4.16
   - apiVersion: v2
     appVersion: v4.4.15
-    created: "2025-01-22T23:10:51.739225818Z"
+    created: "2025-03-21T05:33:07.171797699Z"
     description: A Helm chart for MinIO Operator
     digest: c1df137527f28d8aaa3e9456bbfdca2fceddeb16d3ebfe986b9a9cf016050c70
     home: https://min.io
@@ -1800,7 +1821,7 @@ entries:
     version: 4.4.15
   - apiVersion: v2
     appVersion: v4.4.14
-    created: "2025-01-22T23:10:51.737544428Z"
+    created: "2025-03-21T05:33:07.169211058Z"
     description: A Helm chart for MinIO Operator
     digest: 2cb8d2c9b9dcbf7b34f7f94d505d1d40382523c5081c90ff4efaa63c153982f2
     home: https://min.io
@@ -1821,7 +1842,7 @@ entries:
     version: 4.4.14
   - apiVersion: v2
     appVersion: v4.4.13
-    created: "2025-01-22T23:10:51.735869286Z"
+    created: "2025-03-21T05:33:07.166655943Z"
     description: A Helm chart for MinIO Operator
     digest: 31611b5cae6996da61ea7dfbdb67d7e2c2fae3f0caba6bb7332930f381913a14
     home: https://min.io
@@ -1842,7 +1863,7 @@ entries:
     version: 4.4.13
   - apiVersion: v2
     appVersion: v4.4.10
-    created: "2025-01-22T23:10:51.734156202Z"
+    created: "2025-03-21T05:33:07.161969408Z"
     description: A Helm chart for MinIO Operator
     digest: dfe68285d8582172a8752fd1d98de21ef2c73f102965204fe08560e17eb1b623
     home: https://min.io
@@ -1863,7 +1884,7 @@ entries:
     version: 4.4.10
   - apiVersion: v2
     appVersion: v4.4.9
-    created: "2025-01-22T23:10:51.780915703Z"
+    created: "2025-03-21T05:33:07.22450946Z"
     description: A Helm chart for MinIO Operator
     digest: 48871a9b6700410da44472cdee3c613d4ed664a146790162f0e645d195209fad
     home: https://min.io
@@ -1884,7 +1905,7 @@ entries:
     version: 4.4.9
   - apiVersion: v2
     appVersion: v4.4.8
-    created: "2025-01-22T23:10:51.779261196Z"
+    created: "2025-03-21T05:33:07.222512497Z"
     description: A Helm chart for MinIO Operator
     digest: 679d40cca06a8c5f2b08fdbd842f3f22fb33ebc459b7f0146d6c156b58514c20
     home: https://min.io
@@ -1905,7 +1926,7 @@ entries:
     version: 4.4.8
   - apiVersion: v2
     appVersion: v4.4.7
-    created: "2025-01-22T23:10:51.777475251Z"
+    created: "2025-03-21T05:33:07.220194995Z"
     description: A Helm chart for MinIO Operator
     digest: 53896f8155cb13169b525cb8e2b18decfd52695db36fa353538cb7f2ffbe9df4
     home: https://min.io
@@ -1926,7 +1947,7 @@ entries:
     version: 4.4.7
   - apiVersion: v2
     appVersion: v4.4.6
-    created: "2025-01-22T23:10:51.774806888Z"
+    created: "2025-03-21T05:33:07.217065217Z"
     description: A Helm chart for MinIO Operator
     digest: 13c03c440be7c5106316b3a331b876b390328261d3b1c1c97012d1a38d82386a
     home: https://min.io
@@ -1947,7 +1968,7 @@ entries:
     version: 4.4.6
   - apiVersion: v2
     appVersion: v4.4.5
-    created: "2025-01-22T23:10:51.773145532Z"
+    created: "2025-03-21T05:33:07.21487212Z"
     description: A Helm chart for MinIO Operator
     digest: 31b5f65acc5b00e7a044cc56ed0b96b731d9d37e657b26b8610bf369003627e1
     home: https://min.io
@@ -1968,7 +1989,7 @@ entries:
     version: 4.4.5
   - apiVersion: v2
     appVersion: v4.4.4
-    created: "2025-01-22T23:10:51.771488363Z"
+    created: "2025-03-21T05:33:07.212930209Z"
     description: A Helm chart for MinIO Operator
     digest: 638b415dbf8e12cecb6729f93024dfcb500b9afff96994f4b91c9abca147919c
     home: https://min.io
@@ -1989,7 +2010,7 @@ entries:
     version: 4.4.4
   - apiVersion: v2
     appVersion: v4.4.3
-    created: "2025-01-22T23:10:51.769797759Z"
+    created: "2025-03-21T05:33:07.211157027Z"
     description: A Helm chart for MinIO Operator
     digest: ab435f529db28f5160ca7e41b65cf1fd6ffdcf264aee87c6552c2fbf6ed7ff22
     home: https://min.io
@@ -2010,7 +2031,7 @@ entries:
     version: 4.4.3
   - apiVersion: v2
     appVersion: v4.4.2
-    created: "2025-01-22T23:10:51.748278664Z"
+    created: "2025-03-21T05:33:07.184614581Z"
     description: A Helm chart for MinIO Operator
     digest: f77db593851240225fab7616fe0e6f8ed490eaa4f7154694fd7a89d54fc4bb77
     home: https://min.io
@@ -2031,7 +2052,7 @@ entries:
     version: 4.4.2
   - apiVersion: v2
     appVersion: v4.4.1
-    created: "2025-01-22T23:10:51.732473977Z"
+    created: "2025-03-21T05:33:07.159408459Z"
     description: A Helm chart for MinIO Operator
     digest: 56198f5b196e41e50f5c5bce12ad9b17438192356ca925a67f637479b7a964a9
     home: https://min.io
@@ -2052,7 +2073,7 @@ entries:
     version: 4.4.1
   - apiVersion: v2
     appVersion: v4.4.0
-    created: "2025-01-22T23:10:51.729739472Z"
+    created: "2025-03-21T05:33:07.156888223Z"
     description: A Helm chart for MinIO Operator
     digest: 94c6cb95f3a5869e8eecc5a8b93e0faca737fbcb9ffc85d9b2b84703020c8ff7
     home: https://min.io
@@ -2073,7 +2094,7 @@ entries:
     version: 4.4.0
   - apiVersion: v2
     appVersion: v4.3.9
-    created: "2025-01-22T23:10:51.728047259Z"
+    created: "2025-03-21T05:33:07.154687568Z"
     description: A Helm chart for MinIO Operator
     digest: d29f9312f637f81f0bd59e06083aab0fa811b18069a0a7e97ecacbd4e26e2396
     home: https://min.io
@@ -2094,7 +2115,7 @@ entries:
     version: 4.3.9
   - apiVersion: v2
     appVersion: v4.3.8
-    created: "2025-01-22T23:10:51.726427781Z"
+    created: "2025-03-21T05:33:07.151382753Z"
     description: A Helm chart for MinIO Operator
     digest: a5b77bff10ab24fa8a64967169f1fa85fcc228380467fb2563f15ba0a27eae3e
     home: https://min.io
@@ -2115,7 +2136,7 @@ entries:
     version: 4.3.8
   - apiVersion: v2
     appVersion: v4.3.7
-    created: "2025-01-22T23:10:51.724767812Z"
+    created: "2025-03-21T05:33:07.147152448Z"
     description: A Helm chart for MinIO Operator
     digest: fc7eb9d46ea779e8b5478c54b8976764e1e8abaa5a6130be413ae946c3a1b23c
     home: https://min.io
@@ -2136,7 +2157,7 @@ entries:
     version: 4.3.7
   - apiVersion: v2
     appVersion: v4.3.6
-    created: "2025-01-22T23:10:51.723139055Z"
+    created: "2025-03-21T05:33:07.144392519Z"
     description: A Helm chart for MinIO Operator
     digest: aec2d538e0fb4cfe0a4397d4d7ef64a129adaa8b490a526d047d98ee9ebbf292
     home: https://min.io
@@ -2156,9 +2177,30 @@ entries:
     - https://operator.min.io/helm-releases/operator-4.3.6.tgz
     version: 4.3.6
   tenant:
+  - apiVersion: v2
+    appVersion: v7.0.1
+    created: "2025-03-21T05:33:07.484788478Z"
+    description: A Helm chart for MinIO Operator
+    digest: d15017022bf6ada70cc6a127f61b543af5084daf339bf2322b0d02fe83b219e3
+    home: https://min.io
+    icon: https://min.io/resources/img/logo/MINIO_wordmark.png
+    keywords:
+    - storage
+    - object-storage
+    - S3
+    maintainers:
+    - email: dev@minio.io
+      name: MinIO, Inc
+    name: tenant
+    sources:
+    - https://github.com/minio/operator
+    type: application
+    urls:
+    - https://operator.min.io/helm-releases/tenant-7.0.1.tgz
+    version: 7.0.1
   - apiVersion: v2
     appVersion: v7.0.0
-    created: "2025-01-22T23:10:51.920923911Z"
+    created: "2025-03-21T05:33:07.483630588Z"
     description: A Helm chart for MinIO Operator
     digest: 149223898720658b821302e698138b451ba18108026511e5bd70abb648a6c64c
     home: https://min.io
@@ -2179,7 +2221,7 @@ entries:
     version: 7.0.0
   - apiVersion: v2
     appVersion: v6.0.4
-    created: "2025-01-22T23:10:51.919503147Z"
+    created: "2025-03-21T05:33:07.482525637Z"
     description: A Helm chart for MinIO Operator
     digest: d4d22e1e2992cd2147e07417192b22079122236d325b10ff54d0878c6e11bc8b
     home: https://min.io
@@ -2200,7 +2242,7 @@ entries:
     version: 6.0.4
   - apiVersion: v2
     appVersion: v6.0.3
-    created: "2025-01-22T23:10:51.918170645Z"
+    created: "2025-03-21T05:33:07.481474153Z"
     description: A Helm chart for MinIO Operator
     digest: 01bc0e6d1aba277fb9390b86403517efdfa797f48279886196674cc1d21f545c
     home: https://min.io
@@ -2221,7 +2263,7 @@ entries:
     version: 6.0.3
   - apiVersion: v2
     appVersion: v6.0.2
-    created: "2025-01-22T23:10:51.916837057Z"
+    created: "2025-03-21T05:33:07.48040578Z"
     description: A Helm chart for MinIO Operator
     digest: b409d0bb7559cb56530ccbfd8f24b1684890744d03340194e1e3e84e33ffcfd0
     home: https://min.io
@@ -2242,7 +2284,7 @@ entries:
     version: 6.0.2
   - apiVersion: v2
     appVersion: v6.0.1
-    created: "2025-01-22T23:10:51.915492069Z"
+    created: "2025-03-21T05:33:07.479240815Z"
     description: A Helm chart for MinIO Operator
     digest: 8be335e5eed83d542f1c77b66fcbb59804d539e3a21b8eac90e85c70390540ac
     home: https://min.io
@@ -2263,7 +2305,7 @@ entries:
     version: 6.0.1
   - apiVersion: v2
     appVersion: v6.0.0
-    created: "2025-01-22T23:10:51.914126537Z"
+    created: "2025-03-21T05:33:07.478149261Z"
     description: A Helm chart for MinIO Operator
     digest: df9619071c06767e0a158aa274a8d700f605e54450dd202d035673e2d8e45761
     home: https://min.io
@@ -2284,7 +2326,7 @@ entries:
     version: 6.0.0
   - apiVersion: v2
     appVersion: v5.0.17
-    created: "2025-01-22T23:10:51.901689439Z"
+    created: "2025-03-21T05:33:07.465601803Z"
     description: A Helm chart for MinIO Operator
     digest: c2f7674dcdb6ce429e8dd801c7ef00f572a8d3271d1d10d5256e9282a64ebf0e
     home: https://min.io
@@ -2305,7 +2347,7 @@ entries:
     version: 5.0.17
   - apiVersion: v2
     appVersion: v5.0.16
-    created: "2025-01-22T23:10:51.90028807Z"
+    created: "2025-03-21T05:33:07.4641795Z"
     description: A Helm chart for MinIO Operator
     digest: 182a6ae421171184f7e362fc4dc63f97ad686a8cf8b453cc6f06c60d9ff6dc38
     home: https://min.io
@@ -2326,7 +2368,7 @@ entries:
     version: 5.0.16
   - apiVersion: v2
     appVersion: v5.0.15
-    created: "2025-01-22T23:10:51.898860814Z"
+    created: "2025-03-21T05:33:07.462391249Z"
     description: A Helm chart for MinIO Operator
     digest: 5b1079db1eceac87029140e515e775f0a0570a895930aa698a5083709a772a6e
     home: https://min.io
@@ -2347,7 +2389,7 @@ entries:
     version: 5.0.15
   - apiVersion: v2
     appVersion: v5.0.14
-    created: "2025-01-22T23:10:51.897424156Z"
+    created: "2025-03-21T05:33:07.461080724Z"
     description: A Helm chart for MinIO Operator
     digest: 0054b5ceaa861813ece1d07f7a77ac804c50a82dbca88a1792695c5de1e93faf
     home: https://min.io
@@ -2368,7 +2410,7 @@ entries:
     version: 5.0.14
   - apiVersion: v2
     appVersion: v5.0.13
-    created: "2025-01-22T23:10:51.896108437Z"
+    created: "2025-03-21T05:33:07.460072659Z"
     description: A Helm chart for MinIO Operator
     digest: 5f7704ddee60cf0e612a963fd5a6277668c0847414195d4ad0ae00447ee1373e
     home: https://min.io
@@ -2389,7 +2431,7 @@ entries:
     version: 5.0.13
   - apiVersion: v2
     appVersion: v5.0.12
-    created: "2025-01-22T23:10:51.894523958Z"
+    created: "2025-03-21T05:33:07.458871177Z"
     description: A Helm chart for MinIO Operator
     digest: 0200d03b1c4a3b6fe7b13f2765a9ef2be414447aec93c48ccef5a7a74f0f20c3
     home: https://min.io
@@ -2410,7 +2452,7 @@ entries:
     version: 5.0.12
   - apiVersion: v2
     appVersion: v5.0.11
-    created: "2025-01-22T23:10:51.892974393Z"
+    created: "2025-03-21T05:33:07.457657838Z"
     description: A Helm chart for MinIO Operator
     digest: 1dc7ff2e03d1c5895cd14c2746a6de52ae85feafff11f9b81b313c4401986ae2
     home: https://min.io
@@ -2431,7 +2473,7 @@ entries:
     version: 5.0.11
   - apiVersion: v2
     appVersion: v5.0.10
-    created: "2025-01-22T23:10:51.891398132Z"
+    created: "2025-03-21T05:33:07.45635541Z"
     description: A Helm chart for MinIO Operator
     digest: 423be0e3af854bbecafd2c694ca398ae9e21c8397662991fb097dd3cc0e8e40a
     home: https://min.io
@@ -2452,7 +2494,7 @@ entries:
     version: 5.0.10
   - apiVersion: v2
     appVersion: v5.0.9
-    created: "2025-01-22T23:10:51.912778772Z"
+    created: "2025-03-21T05:33:07.477035623Z"
     description: A Helm chart for MinIO Operator
     digest: c5d0376d2b34a4cbdd5595f1b63e691d48313e5107327661b3548aeee3747e67
     home: https://min.io
@@ -2473,7 +2515,7 @@ entries:
     version: 5.0.9
   - apiVersion: v2
     appVersion: v5.0.8
-    created: "2025-01-22T23:10:51.911461233Z"
+    created: "2025-03-21T05:33:07.475894986Z"
     description: A Helm chart for MinIO Operator
     digest: 538b884edf55c9f5818f09eeb62219222307927402374dcf74daf7999ad3a1ff
     home: https://min.io
@@ -2494,7 +2536,7 @@ entries:
     version: 5.0.8
   - apiVersion: v2
     appVersion: v5.0.7
-    created: "2025-01-22T23:10:51.910109531Z"
+    created: "2025-03-21T05:33:07.474705598Z"
     description: A Helm chart for MinIO Operator
     digest: a579f8305b766110c80c81882e6d87e9a2ba4531dc47258576300d823c7e79b0
     home: https://min.io
@@ -2515,7 +2557,7 @@ entries:
     version: 5.0.7
   - apiVersion: v2
     appVersion: v5.0.6
-    created: "2025-01-22T23:10:51.908844129Z"
+    created: "2025-03-21T05:33:07.473631385Z"
     description: A Helm chart for MinIO Operator
     digest: c5030727cbafd3b51cb8801103832ccd84f1bb02897b635a3528d9bc983ee3a2
     home: https://min.io
@@ -2536,7 +2578,7 @@ entries:
     version: 5.0.6
   - apiVersion: v2
     appVersion: v5.0.5
-    created: "2025-01-22T23:10:51.907610222Z"
+    created: "2025-03-21T05:33:07.472535614Z"
     description: A Helm chart for MinIO Operator
     digest: 849a51d2792f598d09f6f233eb80fa189a9dd8a3f72a14255e2e662a2c720053
     home: https://min.io
@@ -2557,7 +2599,7 @@ entries:
     version: 5.0.5
   - apiVersion: v2
     appVersion: v5.0.4
-    created: "2025-01-22T23:10:51.906354541Z"
+    created: "2025-03-21T05:33:07.471452369Z"
     description: A Helm chart for MinIO Operator
     digest: ca747f759eaad2d97a713b902da863728d9621834cb7cf211fef74764716d77d
     home: https://min.io
@@ -2578,7 +2620,7 @@ entries:
     version: 5.0.4
   - apiVersion: v2
     appVersion: v5.0.3
-    created: "2025-01-22T23:10:51.905142361Z"
+    created: "2025-03-21T05:33:07.46854781Z"
     description: A Helm chart for MinIO Operator
     digest: ab7c1020e4c99db199df0bb91f8f0c5c9b3f7fde9d10b8aa81bde663fb7fba44
     home: https://min.io
@@ -2599,7 +2641,7 @@ entries:
     version: 5.0.3
   - apiVersion: v2
     appVersion: v5.0.2
-    created: "2025-01-22T23:10:51.903418391Z"
+    created: "2025-03-21T05:33:07.466992177Z"
     description: A Helm chart for MinIO Operator
     digest: cc1c1e7c7540f0cf4ab6c4e1a23842daf63b3a7a9678a0213277d3fd702d1744
     home: https://min.io
@@ -2620,7 +2662,7 @@ entries:
     version: 5.0.2
   - apiVersion: v2
     appVersion: v5.0.1
-    created: "2025-01-22T23:10:51.889880505Z"
+    created: "2025-03-21T05:33:07.455077064Z"
     description: A Helm chart for MinIO Operator
     digest: 127925004dc5ac1e6be08b4f7f64c368f51ca356c858bcfad4afba0d465c78eb
     home: https://min.io
@@ -2641,7 +2683,7 @@ entries:
     version: 5.0.1
   - apiVersion: v2
     appVersion: v5.0.0
-    created: "2025-01-22T23:10:51.888596385Z"
+    created: "2025-03-21T05:33:07.453373366Z"
     description: A Helm chart for MinIO Operator
     digest: 05faaa4aadd3e6dfeadc7218745900427073fb1a7d3ab53554dcb9d4e11b519a
     home: https://min.io
@@ -2662,7 +2704,7 @@ entries:
     version: 5.0.0
   - apiVersion: v2
     appVersion: v4.5.8
-    created: "2025-01-22T23:10:51.887279013Z"
+    created: "2025-03-21T05:33:07.452180819Z"
     description: A Helm chart for MinIO Operator
     digest: 32603b9e86f22ad1f2c47eb321126e622ac596246d3108997d476ae0ec98b25a
     home: https://min.io
@@ -2683,7 +2725,7 @@ entries:
     version: 4.5.8
   - apiVersion: v2
     appVersion: v4.5.7
-    created: "2025-01-22T23:10:51.885547749Z"
+    created: "2025-03-21T05:33:07.44969337Z"
     description: A Helm chart for MinIO Operator
     digest: b4005b0f52c6dbed01121e855bbebcd75ab027119579cd1590c506f3cc9052a4
     home: https://min.io
@@ -2704,7 +2746,7 @@ entries:
     version: 4.5.7
   - apiVersion: v2
     appVersion: v4.5.6
-    created: "2025-01-22T23:10:51.884023044Z"
+    created: "2025-03-21T05:33:07.447912834Z"
     description: A Helm chart for MinIO Operator
     digest: 0dd26ce74e188e8e910ada14fd0c53261b305ce081afeceaa331ff4199f84f43
     home: https://min.io
@@ -2725,7 +2767,7 @@ entries:
     version: 4.5.6
   - apiVersion: v2
     appVersion: v4.5.5
-    created: "2025-01-22T23:10:51.882435102Z"
+    created: "2025-03-21T05:33:07.445228762Z"
     description: A Helm chart for MinIO Operator
     digest: 79138fad6c8ad0a609e2bf8663dd06b4a72ed43a2689cbfa7ec6f77c84a9bb79
     home: https://min.io
@@ -2746,7 +2788,7 @@ entries:
     version: 4.5.5
   - apiVersion: v2
     appVersion: v4.5.4
-    created: "2025-01-22T23:10:51.880894782Z"
+    created: "2025-03-21T05:33:07.443472932Z"
     description: A Helm chart for MinIO Operator
     digest: 9f7a01771791680d6d2de90a0d20f43c28ebc103f4256e61a228ca79522caa16
     home: https://min.io
@@ -2767,7 +2809,7 @@ entries:
     version: 4.5.4
   - apiVersion: v2
     appVersion: v4.5.3
-    created: "2025-01-22T23:10:51.876759314Z"
+    created: "2025-03-21T05:33:07.441239205Z"
     description: A Helm chart for MinIO Operator
     digest: 28535cebc7394d4106a3cbd9adb32aa8eaff22a3436219a91713a8e06e4854bb
     home: https://min.io
@@ -2788,7 +2830,7 @@ entries:
     version: 4.5.3
   - apiVersion: v2
     appVersion: v4.5.2
-    created: "2025-01-22T23:10:51.875477109Z"
+    created: "2025-03-21T05:33:07.438933999Z"
     description: A Helm chart for MinIO Operator
     digest: f46708b94148ceeed66c6c3630c519c61f2f7999b537e794a8f7dd8eee4fe87a
     home: https://min.io
@@ -2809,7 +2851,7 @@ entries:
     version: 4.5.2
   - apiVersion: v2
     appVersion: v4.5.1
-    created: "2025-01-22T23:10:51.874162205Z"
+    created: "2025-03-21T05:33:07.436847875Z"
     description: A Helm chart for MinIO Operator
     digest: 1079cda85fb27caf0323e22af5d6604b3efb0bdc004d8ae4130adf39981e7bc6
     home: https://min.io
@@ -2830,7 +2872,7 @@ entries:
     version: 4.5.1
   - apiVersion: v2
     appVersion: v4.5.0
-    created: "2025-01-22T23:10:51.872865812Z"
+    created: "2025-03-21T05:33:07.434573522Z"
     description: A Helm chart for MinIO Operator
     digest: 71daf13a3430536c32d302baf7d1b15b85aae0ba9b9665a936190e78bcd29a37
     home: https://min.io
@@ -2851,7 +2893,7 @@ entries:
     version: 4.5.0
   - apiVersion: v2
     appVersion: v4.4.28
-    created: "2025-01-22T23:10:51.866538454Z"
+    created: "2025-03-21T05:33:07.424344179Z"
     description: A Helm chart for MinIO Operator
     digest: 10506f0101f7b8a83eaf1c9323faaed09f24e4fbed70489f1510b73de1e8a37d
     home: https://min.io
@@ -2872,7 +2914,7 @@ entries:
     version: 4.4.28
   - apiVersion: v2
     appVersion: v4.4.27
-    created: "2025-01-22T23:10:51.865257504Z"
+    created: "2025-03-21T05:33:07.421627796Z"
     description: A Helm chart for MinIO Operator
     digest: 00b5cebcb06880f0ac7e968db60f30aa8f7ce708676d75886294e444263e0d91
     home: https://min.io
@@ -2893,7 +2935,7 @@ entries:
     version: 4.4.27
   - apiVersion: v2
     appVersion: v4.4.26
-    created: "2025-01-22T23:10:51.863947795Z"
+    created: "2025-03-21T05:33:07.419334314Z"
     description: A Helm chart for MinIO Operator
     digest: 901d018eb3a7d5869980b7eb9e3ee98f6e6e03d87916888824195ecf99034e6f
     home: https://min.io
@@ -2914,7 +2956,7 @@ entries:
     version: 4.4.26
   - apiVersion: v2
     appVersion: v4.4.25
-    created: "2025-01-22T23:10:51.862657378Z"
+    created: "2025-03-21T05:33:07.416583445Z"
     description: A Helm chart for MinIO Operator
     digest: 739df832f89ba832082bd31ede3a278a1d5320f53bf2851a87c39565447ca899
     home: https://min.io
@@ -2935,7 +2977,7 @@ entries:
     version: 4.4.25
   - apiVersion: v2
     appVersion: v4.4.24
-    created: "2025-01-22T23:10:51.861375707Z"
+    created: "2025-03-21T05:33:07.412599764Z"
     description: A Helm chart for MinIO Operator
     digest: a5cf656ddf429b1798102c71b14222eda587d8c84a5bc8f498344dcd3991fbe8
     home: https://min.io
@@ -2956,7 +2998,7 @@ entries:
     version: 4.4.24
   - apiVersion: v2
     appVersion: v4.4.23
-    created: "2025-01-22T23:10:51.860068795Z"
+    created: "2025-03-21T05:33:07.409084337Z"
     description: A Helm chart for MinIO Operator
     digest: 82936fe6caaefc1420dabec0bad23f7cbd7bad0e18d91177f4be2c8dd7c42f97
     home: https://min.io
@@ -2977,7 +3019,7 @@ entries:
     version: 4.4.23
   - apiVersion: v2
     appVersion: v4.4.22
-    created: "2025-01-22T23:10:51.857941446Z"
+    created: "2025-03-21T05:33:07.408001226Z"
     description: A Helm chart for MinIO Operator
     digest: 53f14c8a25da32736b97bc454f10f64a24540e54298b40422ce369c89d524d82
     home: https://min.io
@@ -2998,7 +3040,7 @@ entries:
     version: 4.4.22
   - apiVersion: v2
     appVersion: v4.4.21
-    created: "2025-01-22T23:10:51.856752102Z"
+    created: "2025-03-21T05:33:07.406957014Z"
     description: A Helm chart for MinIO Operator
     digest: d2e7fce3dc9bf61e06a2934cc1baa3257d9394cffa423febe115773065b34eba
     home: https://min.io
@@ -3019,7 +3061,7 @@ entries:
     version: 4.4.21
   - apiVersion: v2
     appVersion: v4.4.20
-    created: "2025-01-22T23:10:51.855562058Z"
+    created: "2025-03-21T05:33:07.405659294Z"
     description: A Helm chart for MinIO Operator
     digest: 451880d3863cf4010e1012dd371af0c18d0f18cf6d535c7f9622db4554558e39
     home: https://min.io
@@ -3040,7 +3082,7 @@ entries:
     version: 4.4.20
   - apiVersion: v2
     appVersion: v4.4.19
-    created: "2025-01-22T23:10:51.853625098Z"
+    created: "2025-03-21T05:33:07.403374101Z"
     description: A Helm chart for MinIO Operator
     digest: 03f3cbcfd81ac6de399d5e12ee3e9149a3121c1a13c205a9d211a5ca6bb80f3a
     home: https://min.io
@@ -3061,7 +3103,7 @@ entries:
     version: 4.4.19
   - apiVersion: v2
     appVersion: v4.4.18
-    created: "2025-01-22T23:10:51.852429007Z"
+    created: "2025-03-21T05:33:07.40206603Z"
     description: A Helm chart for MinIO Operator
     digest: f57c293a026147b416095d3d71dd5351c5bcbb15ba1a67ff98a23a6ea55cd811
     home: https://min.io
@@ -3082,7 +3124,7 @@ entries:
     version: 4.4.18
   - apiVersion: v2
     appVersion: v4.4.17
-    created: "2025-01-22T23:10:51.851230083Z"
+    created: "2025-03-21T05:33:07.400380986Z"
     description: A Helm chart for MinIO Operator
     digest: ef875252c6a25d2d88a6f6c9b469ceb0502e215698ddf349e6162d5cea3f7454
     home: https://min.io
@@ -3103,7 +3145,7 @@ entries:
     version: 4.4.17
   - apiVersion: v2
     appVersion: v4.4.16
-    created: "2025-01-22T23:10:51.85022579Z"
+    created: "2025-03-21T05:33:07.399303977Z"
     description: A Helm chart for MinIO Operator
     digest: 4006976cce87448e1f98eaab2e03ff94a149448569272c3b090043e1784f5a0d
     home: https://min.io
@@ -3124,7 +3166,7 @@ entries:
     version: 4.4.16
   - apiVersion: v2
     appVersion: v4.4.15
-    created: "2025-01-22T23:10:51.84924297Z"
+    created: "2025-03-21T05:33:07.398299424Z"
     description: A Helm chart for MinIO Operator
     digest: d32c2a18765f77073f8f68a00c4f59340b505e7a0ff039e7bdf9c984dfa4fac8
     home: https://min.io
@@ -3145,7 +3187,7 @@ entries:
     version: 4.4.15
   - apiVersion: v2
     appVersion: v4.4.14
-    created: "2025-01-22T23:10:51.848374768Z"
+    created: "2025-03-21T05:33:07.397134766Z"
     description: A Helm chart for MinIO Operator
     digest: 564c971cc0a6fc8d8e28f4410adad7f24ddb638199ec30360057d6442cb5d5d2
     home: https://min.io
@@ -3166,7 +3208,7 @@ entries:
     version: 4.4.14
   - apiVersion: v2
     appVersion: v4.4.13
-    created: "2025-01-22T23:10:51.847634888Z"
+    created: "2025-03-21T05:33:07.396483214Z"
     description: A Helm chart for MinIO Operator
     digest: 124b1d7e4bbf5b97542721da1b6ce522026ced596e5c3da0b4b71e6137ca9f20
     home: https://min.io
@@ -3187,7 +3229,7 @@ entries:
     version: 4.4.13
   - apiVersion: v2
     appVersion: v4.4.10
-    created: "2025-01-22T23:10:51.846874591Z"
+    created: "2025-03-21T05:33:07.395789033Z"
     description: A Helm chart for MinIO Operator
     digest: 7ddf8840cf0b6998d2b0f5eb72fb586cc0dceaf55583528912d5d572df6914bc
     home: https://min.io
@@ -3208,7 +3250,7 @@ entries:
     version: 4.4.10
   - apiVersion: v2
     appVersion: v4.4.9
-    created: "2025-01-22T23:10:51.871576903Z"
+    created: "2025-03-21T05:33:07.432237101Z"
     description: A Helm chart for MinIO Operator
     digest: 9c84dc9ea5122b24c5ef52a597c22213151baf74e4c91c95f90570fa0358d824
     home: https://min.io
@@ -3229,7 +3271,7 @@ entries:
     version: 4.4.9
   - apiVersion: v2
     appVersion: v4.4.8
-    created: "2025-01-22T23:10:51.870879908Z"
+    created: "2025-03-21T05:33:07.430941251Z"
     description: A Helm chart for MinIO Operator
     digest: 51779e38d74b919d1eb48c21d51174ecc34a3d9e602b53c9ca5f05ad8fd6a02e
     home: https://min.io
@@ -3250,7 +3292,7 @@ entries:
     version: 4.4.8
   - apiVersion: v2
     appVersion: v4.4.7
-    created: "2025-01-22T23:10:51.870172507Z"
+    created: "2025-03-21T05:33:07.42989878Z"
     description: A Helm chart for MinIO Operator
     digest: 6bec3bd8e464c946be4d7de756e23743660686ecc52b7b516509be0f1d80f33b
     home: https://min.io
@@ -3271,7 +3313,7 @@ entries:
     version: 4.4.7
   - apiVersion: v2
     appVersion: v4.4.6
-    created: "2025-01-22T23:10:51.869475784Z"
+    created: "2025-03-21T05:33:07.429075454Z"
     description: A Helm chart for MinIO Operator
     digest: a84048ce81e3b6dc9b7214f6d95f08768985c2aedc7ba377383b0e55bb72ad82
     home: https://min.io
@@ -3292,7 +3334,7 @@ entries:
     version: 4.4.6
   - apiVersion: v2
     appVersion: v4.4.5
-    created: "2025-01-22T23:10:51.868767382Z"
+    created: "2025-03-21T05:33:07.427645562Z"
     description: A Helm chart for MinIO Operator
     digest: 10337d8d9375bfd87b231b2696f6ee6d3e43bef96bd3ada1db015975da8053c5
     home: https://min.io
@@ -3313,7 +3355,7 @@ entries:
     version: 4.4.5
   - apiVersion: v2
     appVersion: v4.4.4
-    created: "2025-01-22T23:10:51.868066055Z"
+    created: "2025-03-21T05:33:07.426632026Z"
     description: A Helm chart for MinIO Operator
     digest: 3d28b27c3102f0994b4b1ae7db40f33f79d70cc7d22febfebe11a68bf507a5f8
     home: https://min.io
@@ -3334,7 +3376,7 @@ entries:
     version: 4.4.4
   - apiVersion: v2
     appVersion: v4.4.3
-    created: "2025-01-22T23:10:51.867276785Z"
+    created: "2025-03-21T05:33:07.425401249Z"
     description: A Helm chart for MinIO Operator
     digest: 528cde9cb02ffd6ebe5820f5f540b019599aa55affbff43627d3524d50825ff1
     home: https://min.io
@@ -3355,7 +3397,7 @@ entries:
     version: 4.4.3
   - apiVersion: v2
     appVersion: v4.4.2
-    created: "2025-01-22T23:10:51.854352828Z"
+    created: "2025-03-21T05:33:07.404042639Z"
     description: A Helm chart for MinIO Operator
     digest: 1f71d438b2363aafaa4232a8b8d2461f306179b5ec628e0126a52724d25d9138
     home: https://min.io
@@ -3376,7 +3418,7 @@ entries:
     version: 4.4.2
   - apiVersion: v2
     appVersion: v4.4.1
-    created: "2025-01-22T23:10:51.846106553Z"
+    created: "2025-03-21T05:33:07.395152259Z"
     description: A Helm chart for MinIO Operator
     digest: 2fcb816afa72a3aba0deba2992827a0ad4b3b0e9b19903ac3fc35f461f5cb6b7
     home: https://min.io
@@ -3397,7 +3439,7 @@ entries:
     version: 4.4.1
   - apiVersion: v2
     appVersion: v4.4.0
-    created: "2025-01-22T23:10:51.845386414Z"
+    created: "2025-03-21T05:33:07.394574973Z"
     description: A Helm chart for MinIO Operator
     digest: c2885c20e28b46609ac1def9bf529ce84275b85521798f254eb410bcdaca8314
     home: https://min.io
@@ -3418,7 +3460,7 @@ entries:
     version: 4.4.0
   - apiVersion: v2
     appVersion: v4.3.9
-    created: "2025-01-22T23:10:51.844673251Z"
+    created: "2025-03-21T05:33:07.393983975Z"
     description: A Helm chart for MinIO Operator
     digest: ee1c348c272903ea2562650a92cc4654db2bb1f5b617b329dad1586ccbfdb5bb
     home: https://min.io
@@ -3439,7 +3481,7 @@ entries:
     version: 4.3.9
   - apiVersion: v2
     appVersion: v4.3.8
-    created: "2025-01-22T23:10:51.8439948Z"
+    created: "2025-03-21T05:33:07.393404124Z"
     description: A Helm chart for MinIO Operator
     digest: 85ecf1beae2505e993ec939fc7df6fedf55708c665359de3b67b3ef35d768aaf
     home: https://min.io
@@ -3460,7 +3502,7 @@ entries:
     version: 4.3.8
   - apiVersion: v2
     appVersion: v4.3.7
-    created: "2025-01-22T23:10:51.843313794Z"
+    created: "2025-03-21T05:33:07.392849135Z"
     description: A Helm chart for MinIO Operator
     digest: 08fb42ece9b9b356f28c1261620726a7056840527df0c036ed64dd511595c024
     home: https://min.io
@@ -3481,7 +3523,7 @@ entries:
     version: 4.3.7
   - apiVersion: v2
     appVersion: v4.3.6
-    created: "2025-01-22T23:10:51.842569594Z"
+    created: "2025-03-21T05:33:07.392246648Z"
     description: A Helm chart for MinIO Operator
     digest: 1da42b15ba375963bbc6908a7e5f6fc6605eba059cebf0706da09565e463e2c4
     home: https://min.io
@@ -3500,4 +3542,4 @@ entries:
     urls:
     - https://operator.min.io/helm-releases/tenant-4.3.6.tgz
     version: 4.3.6
-generated: "2025-01-22T23:10:51.639552331Z"
+generated: "2025-03-21T05:33:07.037502069Z"
diff --git a/pkg/apis/minio.min.io/v2/constants.go b/pkg/apis/minio.min.io/v2/constants.go
index ad435467..8f393462 100644
--- a/pkg/apis/minio.min.io/v2/constants.go
+++ b/pkg/apis/minio.min.io/v2/constants.go
@@ -106,7 +106,7 @@ const MinIOVolumeMountPath = "/export"
 const MinIOVolumeSubPath = ""
 
 // DefaultMinIOImage specifies the default MinIO Docker hub image
-const DefaultMinIOImage = "minio/minio:RELEASE.2024-11-07T00-52-20Z"
+const DefaultMinIOImage = "minio/minio:RELEASE.2025-04-03T14-56-28Z"
 
 // DefaultMinIOUpdateURL specifies the default MinIO URL where binaries are
 // pulled from during MinIO upgrades
@@ -143,8 +143,8 @@ const ConsoleAdminPolicyName = "consoleAdmin"
 
 // KES Related Constants
 
-// DefaultKESImage specifies the 2024-11-25T13-44-31Z KES Docker hub image
-const DefaultKESImage = "minio/kes:2024-11-25T13-44-31Z"
+// DefaultKESImage specifies the 2025-03-12T09-35-18Z KES Docker hub image
+const DefaultKESImage = "minio/kes:2025-03-12T09-35-18Z"
 
 // KESInstanceLabel is applied to the KES pods of a Tenant cluster
 const KESInstanceLabel = "v1.min.io/kes"
@@ -197,9 +197,6 @@ const StatefulSetPrefix = "ss"
 // StatefulSetLegacyPrefix by old operators
 const StatefulSetLegacyPrefix = "zone"
 
-// MinIOPrometheusPathCluster is the path where MinIO tenant exposes cluster Prometheus metrics
-const MinIOPrometheusPathCluster = "/minio/v2/metrics/cluster"
-
 // MinIOPrometheusScrapeInterval defines how frequently to scrape targets.
 const MinIOPrometheusScrapeInterval = 30 * time.Second
 
diff --git a/pkg/apis/minio.min.io/v2/helper.go b/pkg/apis/minio.min.io/v2/helper.go
index c4f85436..43843d16 100644
--- a/pkg/apis/minio.min.io/v2/helper.go
+++ b/pkg/apis/minio.min.io/v2/helper.go
@@ -47,7 +47,7 @@ import (
 	"k8s.io/apimachinery/pkg/runtime/schema"
 	"k8s.io/klog/v2"
 
-	"github.com/golang-jwt/jwt"
+	"github.com/golang-jwt/jwt/v4"
 	"github.com/minio/madmin-go/v3"
 	"github.com/minio/minio-go/v7"
 	"github.com/minio/minio-go/v7/pkg/credentials"
@@ -399,8 +399,8 @@ func (t *Tenant) MinIOEndpoints(hostsTemplate string) (endpoints []string) {
 
 // GenBearerToken returns the JWT token for current Tenant for Prometheus authentication
 func (t *Tenant) GenBearerToken(accessKey, secretKey string) string {
-	jwt := jwt.NewWithClaims(jwt.SigningMethodHS512, jwt.StandardClaims{
-		ExpiresAt: time.Now().UTC().Add(defaultPrometheusJWTExpiry).Unix(),
+	jwt := jwt.NewWithClaims(jwt.SigningMethodHS512, jwt.RegisteredClaims{
+		ExpiresAt: jwt.NewNumericDate(time.Now().UTC().Add(defaultPrometheusJWTExpiry)),
 		Subject:   accessKey,
 		Issuer:    "prometheus",
 	})
@@ -413,6 +413,23 @@ func (t *Tenant) GenBearerToken(accessKey, secretKey string) string {
 	return token
 }
 
+// GetAccessKeyFromBearerToken parses the BearerToken with secretKey to extract accessKey
+func GetAccessKeyFromBearerToken(bearerToken string, secretKey string) (string, error) {
+	claims := &jwt.StandardClaims{}
+	token, err := jwt.ParseWithClaims(bearerToken, claims, func(_ *jwt.Token) (interface{}, error) {
+		return []byte(secretKey), nil
+	})
+	if err != nil {
+		return "", fmt.Errorf("failed to parse token: %v", err)
+	}
+
+	if !token.Valid {
+		return "", errors.New("invalid token")
+	}
+
+	return claims.Subject, nil
+}
+
 // MinIOHosts returns the domain names in ellipses format created for current Tenant
 func (t *Tenant) MinIOHosts() (hosts []string) {
 	// Create the ellipses style URL
diff --git a/pkg/apis/minio.min.io/v2/types.go b/pkg/apis/minio.min.io/v2/types.go
index 115a390f..f4fd688b 100644
--- a/pkg/apis/minio.min.io/v2/types.go
+++ b/pkg/apis/minio.min.io/v2/types.go
@@ -31,7 +31,7 @@ import (
 // +kubebuilder:printcolumn:name="State",type="string",JSONPath=".status.currentState"
 // +kubebuilder:printcolumn:name="Health",type="string",JSONPath=".status.healthStatus"
 // +kubebuilder:printcolumn:name="Age",type="date",JSONPath=".metadata.creationTimestamp"
-// +kubebuilder:metadata:annotations=operator.min.io/version=v7.0.0
+// +kubebuilder:metadata:annotations=operator.min.io/version=v7.0.1
 // +kubebuilder:storageversion
 type Tenant struct {
 	metav1.TypeMeta   `json:",inline"`
@@ -278,6 +278,13 @@ type TenantSpec struct {
 	PrometheusOperator bool `json:"prometheusOperator,omitempty"`
 	// *Optional* +
 	//
+	// API end point(s) to scrape metrics from PrometheusOperatorScrapeMetricsPaths
+	// If PrometheusOperator: true and PrometheusOperatorScrapeMetricsPaths is empty, will add `/minio/v2/metrics/cluster` to the list of paths to scrape as default like before.
+	//
+	// +optional
+	PrometheusOperatorScrapeMetricsPaths []string `json:"prometheusOperatorScrapeMetricsPaths,omitempty"`
+	// *Optional* +
+	//
 	// The https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/[Kubernetes Service Account] to use for running MinIO pods created as part of the Tenant. +
 	// +optional
 	ServiceAccountName string `json:"serviceAccountName,omitempty"`
diff --git a/pkg/apis/minio.min.io/v2/zz_generated.deepcopy.go b/pkg/apis/minio.min.io/v2/zz_generated.deepcopy.go
index cec7292a..a0c8bc73 100644
--- a/pkg/apis/minio.min.io/v2/zz_generated.deepcopy.go
+++ b/pkg/apis/minio.min.io/v2/zz_generated.deepcopy.go
@@ -771,6 +771,11 @@ func (in *TenantSpec) DeepCopyInto(out *TenantSpec) {
 		*out = new(KESConfig)
 		(*in).DeepCopyInto(*out)
 	}
+	if in.PrometheusOperatorScrapeMetricsPaths != nil {
+		in, out := &in.PrometheusOperatorScrapeMetricsPaths, &out.PrometheusOperatorScrapeMetricsPaths
+		*out = make([]string, len(*in))
+		copy(*out, *in)
+	}
 	if in.SideCars != nil {
 		in, out := &in.SideCars, &out.SideCars
 		*out = new(SideCars)
diff --git a/pkg/apis/sts.min.io/v1beta1/types.go b/pkg/apis/sts.min.io/v1beta1/types.go
index 7d8b5538..4425f75f 100644
--- a/pkg/apis/sts.min.io/v1beta1/types.go
+++ b/pkg/apis/sts.min.io/v1beta1/types.go
@@ -26,7 +26,7 @@ import (
 // +kubebuilder:resource:scope=Namespaced,shortName=policybinding,singular=policybinding
 // +kubebuilder:printcolumn:name="State",type="string",JSONPath=".status.currentState"
 // +kubebuilder:printcolumn:name="Age",type="date",JSONPath=".metadata.creationTimestamp"
-// +kubebuilder:metadata:annotations=operator.min.io/version=v7.0.0
+// +kubebuilder:metadata:annotations=operator.min.io/version=v7.0.1
 // +kubebuilder:storageversion
 // +groupName=policybinding.sts.min.io
 // +versionName=v1beta1
diff --git a/pkg/client/applyconfiguration/internal/internal.go b/pkg/client/applyconfiguration/internal/internal.go
index 23912394..1c43f76f 100644
--- a/pkg/client/applyconfiguration/internal/internal.go
+++ b/pkg/client/applyconfiguration/internal/internal.go
@@ -19,8 +19,8 @@
 package internal
 
 import (
-	"fmt"
-	"sync"
+	fmt "fmt"
+	sync "sync"
 
 	typed "sigs.k8s.io/structured-merge-diff/v4/typed"
 )
diff --git a/pkg/client/applyconfiguration/minio.min.io/v2/customcertificates.go b/pkg/client/applyconfiguration/minio.min.io/v2/customcertificates.go
index 4ea5d95a..6350a9cb 100644
--- a/pkg/client/applyconfiguration/minio.min.io/v2/customcertificates.go
+++ b/pkg/client/applyconfiguration/minio.min.io/v2/customcertificates.go
@@ -19,15 +19,15 @@
 package v2
 
 import (
-	v2 "github.com/minio/operator/pkg/apis/minio.min.io/v2"
+	miniominiov2 "github.com/minio/operator/pkg/apis/minio.min.io/v2"
 )
 
 // CustomCertificatesApplyConfiguration represents a declarative configuration of the CustomCertificates type for use
 // with apply.
 type CustomCertificatesApplyConfiguration struct {
-	Client   []*v2.CustomCertificateConfig `json:"client,omitempty"`
-	Minio    []*v2.CustomCertificateConfig `json:"minio,omitempty"`
-	MinioCAs []*v2.CustomCertificateConfig `json:"minioCAs,omitempty"`
+	Client   []*miniominiov2.CustomCertificateConfig `json:"client,omitempty"`
+	Minio    []*miniominiov2.CustomCertificateConfig `json:"minio,omitempty"`
+	MinioCAs []*miniominiov2.CustomCertificateConfig `json:"minioCAs,omitempty"`
 }
 
 // CustomCertificatesApplyConfiguration constructs a declarative configuration of the CustomCertificates type for use with
@@ -39,7 +39,7 @@ func CustomCertificates() *CustomCertificatesApplyConfiguration {
 // WithClient adds the given value to the Client field in the declarative configuration
 // and returns the receiver, so that objects can be build by chaining "With" function invocations.
 // If called multiple times, values provided by each call will be appended to the Client field.
-func (b *CustomCertificatesApplyConfiguration) WithClient(values ...**v2.CustomCertificateConfig) *CustomCertificatesApplyConfiguration {
+func (b *CustomCertificatesApplyConfiguration) WithClient(values ...**miniominiov2.CustomCertificateConfig) *CustomCertificatesApplyConfiguration {
 	for i := range values {
 		if values[i] == nil {
 			panic("nil value passed to WithClient")
@@ -52,7 +52,7 @@ func (b *CustomCertificatesApplyConfiguration) WithClient(values ...**v2.CustomC
 // WithMinio adds the given value to the Minio field in the declarative configuration
 // and returns the receiver, so that objects can be build by chaining "With" function invocations.
 // If called multiple times, values provided by each call will be appended to the Minio field.
-func (b *CustomCertificatesApplyConfiguration) WithMinio(values ...**v2.CustomCertificateConfig) *CustomCertificatesApplyConfiguration {
+func (b *CustomCertificatesApplyConfiguration) WithMinio(values ...**miniominiov2.CustomCertificateConfig) *CustomCertificatesApplyConfiguration {
 	for i := range values {
 		if values[i] == nil {
 			panic("nil value passed to WithMinio")
@@ -65,7 +65,7 @@ func (b *CustomCertificatesApplyConfiguration) WithMinio(values ...**v2.CustomCe
 // WithMinioCAs adds the given value to the MinioCAs field in the declarative configuration
 // and returns the receiver, so that objects can be build by chaining "With" function invocations.
 // If called multiple times, values provided by each call will be appended to the MinioCAs field.
-func (b *CustomCertificatesApplyConfiguration) WithMinioCAs(values ...**v2.CustomCertificateConfig) *CustomCertificatesApplyConfiguration {
+func (b *CustomCertificatesApplyConfiguration) WithMinioCAs(values ...**miniominiov2.CustomCertificateConfig) *CustomCertificatesApplyConfiguration {
 	for i := range values {
 		if values[i] == nil {
 			panic("nil value passed to WithMinioCAs")
diff --git a/pkg/client/applyconfiguration/minio.min.io/v2/poolstatus.go b/pkg/client/applyconfiguration/minio.min.io/v2/poolstatus.go
index 217a3e15..bf09c129 100644
--- a/pkg/client/applyconfiguration/minio.min.io/v2/poolstatus.go
+++ b/pkg/client/applyconfiguration/minio.min.io/v2/poolstatus.go
@@ -19,15 +19,15 @@
 package v2
 
 import (
-	v2 "github.com/minio/operator/pkg/apis/minio.min.io/v2"
+	miniominiov2 "github.com/minio/operator/pkg/apis/minio.min.io/v2"
 )
 
 // PoolStatusApplyConfiguration represents a declarative configuration of the PoolStatus type for use
 // with apply.
 type PoolStatusApplyConfiguration struct {
-	SSName                *string       `json:"ssName,omitempty"`
-	State                 *v2.PoolState `json:"state,omitempty"`
-	LegacySecurityContext *bool         `json:"legacySecurityContext,omitempty"`
+	SSName                *string                 `json:"ssName,omitempty"`
+	State                 *miniominiov2.PoolState `json:"state,omitempty"`
+	LegacySecurityContext *bool                   `json:"legacySecurityContext,omitempty"`
 }
 
 // PoolStatusApplyConfiguration constructs a declarative configuration of the PoolStatus type for use with
@@ -47,7 +47,7 @@ func (b *PoolStatusApplyConfiguration) WithSSName(value string) *PoolStatusApply
 // WithState sets the State field in the declarative configuration to the given value
 // and returns the receiver, so that objects can be built by chaining "With" function invocations.
 // If called multiple times, the State field is set to the value of the last call.
-func (b *PoolStatusApplyConfiguration) WithState(value v2.PoolState) *PoolStatusApplyConfiguration {
+func (b *PoolStatusApplyConfiguration) WithState(value miniominiov2.PoolState) *PoolStatusApplyConfiguration {
 	b.State = &value
 	return b
 }
diff --git a/pkg/client/applyconfiguration/minio.min.io/v2/tenant.go b/pkg/client/applyconfiguration/minio.min.io/v2/tenant.go
index 40a222fd..a60ef488 100644
--- a/pkg/client/applyconfiguration/minio.min.io/v2/tenant.go
+++ b/pkg/client/applyconfiguration/minio.min.io/v2/tenant.go
@@ -49,7 +49,7 @@ func Tenant(name, namespace string) *TenantApplyConfiguration {
 // and returns the receiver, so that objects can be built by chaining "With" function invocations.
 // If called multiple times, the Kind field is set to the value of the last call.
 func (b *TenantApplyConfiguration) WithKind(value string) *TenantApplyConfiguration {
-	b.Kind = &value
+	b.TypeMetaApplyConfiguration.Kind = &value
 	return b
 }
 
@@ -57,7 +57,7 @@ func (b *TenantApplyConfiguration) WithKind(value string) *TenantApplyConfigurat
 // and returns the receiver, so that objects can be built by chaining "With" function invocations.
 // If called multiple times, the APIVersion field is set to the value of the last call.
 func (b *TenantApplyConfiguration) WithAPIVersion(value string) *TenantApplyConfiguration {
-	b.APIVersion = &value
+	b.TypeMetaApplyConfiguration.APIVersion = &value
 	return b
 }
 
@@ -66,7 +66,7 @@ func (b *TenantApplyConfiguration) WithAPIVersion(value string) *TenantApplyConf
 // If called multiple times, the Name field is set to the value of the last call.
 func (b *TenantApplyConfiguration) WithName(value string) *TenantApplyConfiguration {
 	b.ensureObjectMetaApplyConfigurationExists()
-	b.Name = &value
+	b.ObjectMetaApplyConfiguration.Name = &value
 	return b
 }
 
@@ -75,7 +75,7 @@ func (b *TenantApplyConfiguration) WithName(value string) *TenantApplyConfigurat
 // If called multiple times, the GenerateName field is set to the value of the last call.
 func (b *TenantApplyConfiguration) WithGenerateName(value string) *TenantApplyConfiguration {
 	b.ensureObjectMetaApplyConfigurationExists()
-	b.GenerateName = &value
+	b.ObjectMetaApplyConfiguration.GenerateName = &value
 	return b
 }
 
@@ -84,7 +84,7 @@ func (b *TenantApplyConfiguration) WithGenerateName(value string) *TenantApplyCo
 // If called multiple times, the Namespace field is set to the value of the last call.
 func (b *TenantApplyConfiguration) WithNamespace(value string) *TenantApplyConfiguration {
 	b.ensureObjectMetaApplyConfigurationExists()
-	b.Namespace = &value
+	b.ObjectMetaApplyConfiguration.Namespace = &value
 	return b
 }
 
@@ -93,7 +93,7 @@ func (b *TenantApplyConfiguration) WithNamespace(value string) *TenantApplyConfi
 // If called multiple times, the UID field is set to the value of the last call.
 func (b *TenantApplyConfiguration) WithUID(value types.UID) *TenantApplyConfiguration {
 	b.ensureObjectMetaApplyConfigurationExists()
-	b.UID = &value
+	b.ObjectMetaApplyConfiguration.UID = &value
 	return b
 }
 
@@ -102,7 +102,7 @@ func (b *TenantApplyConfiguration) WithUID(value types.UID) *TenantApplyConfigur
 // If called multiple times, the ResourceVersion field is set to the value of the last call.
 func (b *TenantApplyConfiguration) WithResourceVersion(value string) *TenantApplyConfiguration {
 	b.ensureObjectMetaApplyConfigurationExists()
-	b.ResourceVersion = &value
+	b.ObjectMetaApplyConfiguration.ResourceVersion = &value
 	return b
 }
 
@@ -111,7 +111,7 @@ func (b *TenantApplyConfiguration) WithResourceVersion(value string) *TenantAppl
 // If called multiple times, the Generation field is set to the value of the last call.
 func (b *TenantApplyConfiguration) WithGeneration(value int64) *TenantApplyConfiguration {
 	b.ensureObjectMetaApplyConfigurationExists()
-	b.Generation = &value
+	b.ObjectMetaApplyConfiguration.Generation = &value
 	return b
 }
 
@@ -120,7 +120,7 @@ func (b *TenantApplyConfiguration) WithGeneration(value int64) *TenantApplyConfi
 // If called multiple times, the CreationTimestamp field is set to the value of the last call.
 func (b *TenantApplyConfiguration) WithCreationTimestamp(value metav1.Time) *TenantApplyConfiguration {
 	b.ensureObjectMetaApplyConfigurationExists()
-	b.CreationTimestamp = &value
+	b.ObjectMetaApplyConfiguration.CreationTimestamp = &value
 	return b
 }
 
@@ -129,7 +129,7 @@ func (b *TenantApplyConfiguration) WithCreationTimestamp(value metav1.Time) *Ten
 // If called multiple times, the DeletionTimestamp field is set to the value of the last call.
 func (b *TenantApplyConfiguration) WithDeletionTimestamp(value metav1.Time) *TenantApplyConfiguration {
 	b.ensureObjectMetaApplyConfigurationExists()
-	b.DeletionTimestamp = &value
+	b.ObjectMetaApplyConfiguration.DeletionTimestamp = &value
 	return b
 }
 
@@ -138,7 +138,7 @@ func (b *TenantApplyConfiguration) WithDeletionTimestamp(value metav1.Time) *Ten
 // If called multiple times, the DeletionGracePeriodSeconds field is set to the value of the last call.
 func (b *TenantApplyConfiguration) WithDeletionGracePeriodSeconds(value int64) *TenantApplyConfiguration {
 	b.ensureObjectMetaApplyConfigurationExists()
-	b.DeletionGracePeriodSeconds = &value
+	b.ObjectMetaApplyConfiguration.DeletionGracePeriodSeconds = &value
 	return b
 }
 
@@ -148,11 +148,11 @@ func (b *TenantApplyConfiguration) WithDeletionGracePeriodSeconds(value int64) *
 // overwriting an existing map entries in Labels field with the same key.
 func (b *TenantApplyConfiguration) WithLabels(entries map[string]string) *TenantApplyConfiguration {
 	b.ensureObjectMetaApplyConfigurationExists()
-	if b.Labels == nil && len(entries) > 0 {
-		b.Labels = make(map[string]string, len(entries))
+	if b.ObjectMetaApplyConfiguration.Labels == nil && len(entries) > 0 {
+		b.ObjectMetaApplyConfiguration.Labels = make(map[string]string, len(entries))
 	}
 	for k, v := range entries {
-		b.Labels[k] = v
+		b.ObjectMetaApplyConfiguration.Labels[k] = v
 	}
 	return b
 }
@@ -163,11 +163,11 @@ func (b *TenantApplyConfiguration) WithLabels(entries map[string]string) *Tenant
 // overwriting an existing map entries in Annotations field with the same key.
 func (b *TenantApplyConfiguration) WithAnnotations(entries map[string]string) *TenantApplyConfiguration {
 	b.ensureObjectMetaApplyConfigurationExists()
-	if b.Annotations == nil && len(entries) > 0 {
-		b.Annotations = make(map[string]string, len(entries))
+	if b.ObjectMetaApplyConfiguration.Annotations == nil && len(entries) > 0 {
+		b.ObjectMetaApplyConfiguration.Annotations = make(map[string]string, len(entries))
 	}
 	for k, v := range entries {
-		b.Annotations[k] = v
+		b.ObjectMetaApplyConfiguration.Annotations[k] = v
 	}
 	return b
 }
@@ -181,7 +181,7 @@ func (b *TenantApplyConfiguration) WithOwnerReferences(values ...*v1.OwnerRefere
 		if values[i] == nil {
 			panic("nil value passed to WithOwnerReferences")
 		}
-		b.OwnerReferences = append(b.OwnerReferences, *values[i])
+		b.ObjectMetaApplyConfiguration.OwnerReferences = append(b.ObjectMetaApplyConfiguration.OwnerReferences, *values[i])
 	}
 	return b
 }
@@ -192,7 +192,7 @@ func (b *TenantApplyConfiguration) WithOwnerReferences(values ...*v1.OwnerRefere
 func (b *TenantApplyConfiguration) WithFinalizers(values ...string) *TenantApplyConfiguration {
 	b.ensureObjectMetaApplyConfigurationExists()
 	for i := range values {
-		b.Finalizers = append(b.Finalizers, values[i])
+		b.ObjectMetaApplyConfiguration.Finalizers = append(b.ObjectMetaApplyConfiguration.Finalizers, values[i])
 	}
 	return b
 }
@@ -230,5 +230,5 @@ func (b *TenantApplyConfiguration) WithStatus(value *TenantStatusApplyConfigurat
 // GetName retrieves the value of the Name field in the declarative configuration.
 func (b *TenantApplyConfiguration) GetName() *string {
 	b.ensureObjectMetaApplyConfigurationExists()
-	return b.Name
+	return b.ObjectMetaApplyConfiguration.Name
 }
diff --git a/pkg/client/applyconfiguration/minio.min.io/v2/tenantspec.go b/pkg/client/applyconfiguration/minio.min.io/v2/tenantspec.go
index 74acd245..e241708a 100644
--- a/pkg/client/applyconfiguration/minio.min.io/v2/tenantspec.go
+++ b/pkg/client/applyconfiguration/minio.min.io/v2/tenantspec.go
@@ -27,41 +27,42 @@ import (
 // TenantSpecApplyConfiguration represents a declarative configuration of the TenantSpec type for use
 // with apply.
 type TenantSpecApplyConfiguration struct {
-	Pools                     []PoolApplyConfiguration                     `json:"pools,omitempty"`
-	Image                     *string                                      `json:"image,omitempty"`
-	ImagePullSecret           *v1.LocalObjectReference                     `json:"imagePullSecret,omitempty"`
-	PodManagementPolicy       *appsv1.PodManagementPolicyType              `json:"podManagementPolicy,omitempty"`
-	Env                       []v1.EnvVar                                  `json:"env,omitempty"`
-	ExternalCertSecret        []*miniominiov2.LocalCertificateReference    `json:"externalCertSecret,omitempty"`
-	ExternalCaCertSecret      []*miniominiov2.LocalCertificateReference    `json:"externalCaCertSecret,omitempty"`
-	ExternalClientCertSecret  *LocalCertificateReferenceApplyConfiguration `json:"externalClientCertSecret,omitempty"`
-	ExternalClientCertSecrets []*miniominiov2.LocalCertificateReference    `json:"externalClientCertSecrets,omitempty"`
-	Mountpath                 *string                                      `json:"mountPath,omitempty"`
-	Subpath                   *string                                      `json:"subPath,omitempty"`
-	RequestAutoCert           *bool                                        `json:"requestAutoCert,omitempty"`
-	CertExpiryAlertThreshold  *int32                                       `json:"certExpiryAlertThreshold,omitempty"`
-	Liveness                  *v1.Probe                                    `json:"liveness,omitempty"`
-	Readiness                 *v1.Probe                                    `json:"readiness,omitempty"`
-	Startup                   *v1.Probe                                    `json:"startup,omitempty"`
-	Lifecycle                 *v1.Lifecycle                                `json:"lifecycle,omitempty"`
-	Features                  *FeaturesApplyConfiguration                  `json:"features,omitempty"`
-	CertConfig                *CertificateConfigApplyConfiguration         `json:"certConfig,omitempty"`
-	KES                       *KESConfigApplyConfiguration                 `json:"kes,omitempty"`
-	PrometheusOperator        *bool                                        `json:"prometheusOperator,omitempty"`
-	ServiceAccountName        *string                                      `json:"serviceAccountName,omitempty"`
-	PriorityClassName         *string                                      `json:"priorityClassName,omitempty"`
-	ImagePullPolicy           *v1.PullPolicy                               `json:"imagePullPolicy,omitempty"`
-	SideCars                  *SideCarsApplyConfiguration                  `json:"sideCars,omitempty"`
-	ExposeServices            *ExposeServicesApplyConfiguration            `json:"exposeServices,omitempty"`
-	ServiceMetadata           *ServiceMetadataApplyConfiguration           `json:"serviceMetadata,omitempty"`
-	PoolsMetadata             *PoolsMetadataApplyConfiguration             `json:"poolsMetadata,omitempty"`
-	Users                     []v1.LocalObjectReference                    `json:"users,omitempty"`
-	Buckets                   []BucketApplyConfiguration                   `json:"buckets,omitempty"`
-	Logging                   *LoggingApplyConfiguration                   `json:"logging,omitempty"`
-	Configuration             *v1.LocalObjectReference                     `json:"configuration,omitempty"`
-	InitContainers            []v1.Container                               `json:"initContainers,omitempty"`
-	AdditionalVolumes         []v1.Volume                                  `json:"additionalVolumes,omitempty"`
-	AdditionalVolumeMounts    []v1.VolumeMount                             `json:"additionalVolumeMounts,omitempty"`
+	Pools                               []PoolApplyConfiguration                     `json:"pools,omitempty"`
+	Image                               *string                                      `json:"image,omitempty"`
+	ImagePullSecret                     *v1.LocalObjectReference                     `json:"imagePullSecret,omitempty"`
+	PodManagementPolicy                 *appsv1.PodManagementPolicyType              `json:"podManagementPolicy,omitempty"`
+	Env                                 []v1.EnvVar                                  `json:"env,omitempty"`
+	ExternalCertSecret                  []*miniominiov2.LocalCertificateReference    `json:"externalCertSecret,omitempty"`
+	ExternalCaCertSecret                []*miniominiov2.LocalCertificateReference    `json:"externalCaCertSecret,omitempty"`
+	ExternalClientCertSecret            *LocalCertificateReferenceApplyConfiguration `json:"externalClientCertSecret,omitempty"`
+	ExternalClientCertSecrets           []*miniominiov2.LocalCertificateReference    `json:"externalClientCertSecrets,omitempty"`
+	Mountpath                           *string                                      `json:"mountPath,omitempty"`
+	Subpath                             *string                                      `json:"subPath,omitempty"`
+	RequestAutoCert                     *bool                                        `json:"requestAutoCert,omitempty"`
+	CertExpiryAlertThreshold            *int32                                       `json:"certExpiryAlertThreshold,omitempty"`
+	Liveness                            *v1.Probe                                    `json:"liveness,omitempty"`
+	Readiness                           *v1.Probe                                    `json:"readiness,omitempty"`
+	Startup                             *v1.Probe                                    `json:"startup,omitempty"`
+	Lifecycle                           *v1.Lifecycle                                `json:"lifecycle,omitempty"`
+	Features                            *FeaturesApplyConfiguration                  `json:"features,omitempty"`
+	CertConfig                          *CertificateConfigApplyConfiguration         `json:"certConfig,omitempty"`
+	KES                                 *KESConfigApplyConfiguration                 `json:"kes,omitempty"`
+	PrometheusOperator                  *bool                                        `json:"prometheusOperator,omitempty"`
+	PrometheusOperatorScrapeMetricsPath []string                                     `json:"prometheusOperatorScrapeMetricsPath,omitempty"`
+	ServiceAccountName                  *string                                      `json:"serviceAccountName,omitempty"`
+	PriorityClassName                   *string                                      `json:"priorityClassName,omitempty"`
+	ImagePullPolicy                     *v1.PullPolicy                               `json:"imagePullPolicy,omitempty"`
+	SideCars                            *SideCarsApplyConfiguration                  `json:"sideCars,omitempty"`
+	ExposeServices                      *ExposeServicesApplyConfiguration            `json:"exposeServices,omitempty"`
+	ServiceMetadata                     *ServiceMetadataApplyConfiguration           `json:"serviceMetadata,omitempty"`
+	PoolsMetadata                       *PoolsMetadataApplyConfiguration             `json:"poolsMetadata,omitempty"`
+	Users                               []v1.LocalObjectReference                    `json:"users,omitempty"`
+	Buckets                             []BucketApplyConfiguration                   `json:"buckets,omitempty"`
+	Logging                             *LoggingApplyConfiguration                   `json:"logging,omitempty"`
+	Configuration                       *v1.LocalObjectReference                     `json:"configuration,omitempty"`
+	InitContainers                      []v1.Container                               `json:"initContainers,omitempty"`
+	AdditionalVolumes                   []v1.Volume                                  `json:"additionalVolumes,omitempty"`
+	AdditionalVolumeMounts              []v1.VolumeMount                             `json:"additionalVolumeMounts,omitempty"`
 }
 
 // TenantSpecApplyConfiguration constructs a declarative configuration of the TenantSpec type for use with
@@ -260,6 +261,16 @@ func (b *TenantSpecApplyConfiguration) WithPrometheusOperator(value bool) *Tenan
 	return b
 }
 
+// WithPrometheusOperatorScrapeMetricsPath adds the given value to the PrometheusOperatorScrapeMetricsPath field in the declarative configuration
+// and returns the receiver, so that objects can be build by chaining "With" function invocations.
+// If called multiple times, values provided by each call will be appended to the PrometheusOperatorScrapeMetricsPath field.
+func (b *TenantSpecApplyConfiguration) WithPrometheusOperatorScrapeMetricsPath(values ...string) *TenantSpecApplyConfiguration {
+	for i := range values {
+		b.PrometheusOperatorScrapeMetricsPath = append(b.PrometheusOperatorScrapeMetricsPath, values[i])
+	}
+	return b
+}
+
 // WithServiceAccountName sets the ServiceAccountName field in the declarative configuration to the given value
 // and returns the receiver, so that objects can be built by chaining "With" function invocations.
 // If called multiple times, the ServiceAccountName field is set to the value of the last call.
diff --git a/pkg/client/applyconfiguration/sts.min.io/v1alpha1/policybinding.go b/pkg/client/applyconfiguration/sts.min.io/v1alpha1/policybinding.go
index abd80d8d..e6691151 100644
--- a/pkg/client/applyconfiguration/sts.min.io/v1alpha1/policybinding.go
+++ b/pkg/client/applyconfiguration/sts.min.io/v1alpha1/policybinding.go
@@ -48,7 +48,7 @@ func PolicyBinding(name, namespace string) *PolicyBindingApplyConfiguration {
 // and returns the receiver, so that objects can be built by chaining "With" function invocations.
 // If called multiple times, the Kind field is set to the value of the last call.
 func (b *PolicyBindingApplyConfiguration) WithKind(value string) *PolicyBindingApplyConfiguration {
-	b.Kind = &value
+	b.TypeMetaApplyConfiguration.Kind = &value
 	return b
 }
 
@@ -56,7 +56,7 @@ func (b *PolicyBindingApplyConfiguration) WithKind(value string) *PolicyBindingA
 // and returns the receiver, so that objects can be built by chaining "With" function invocations.
 // If called multiple times, the APIVersion field is set to the value of the last call.
 func (b *PolicyBindingApplyConfiguration) WithAPIVersion(value string) *PolicyBindingApplyConfiguration {
-	b.APIVersion = &value
+	b.TypeMetaApplyConfiguration.APIVersion = &value
 	return b
 }
 
@@ -65,7 +65,7 @@ func (b *PolicyBindingApplyConfiguration) WithAPIVersion(value string) *PolicyBi
 // If called multiple times, the Name field is set to the value of the last call.
 func (b *PolicyBindingApplyConfiguration) WithName(value string) *PolicyBindingApplyConfiguration {
 	b.ensureObjectMetaApplyConfigurationExists()
-	b.Name = &value
+	b.ObjectMetaApplyConfiguration.Name = &value
 	return b
 }
 
@@ -74,7 +74,7 @@ func (b *PolicyBindingApplyConfiguration) WithName(value string) *PolicyBindingA
 // If called multiple times, the GenerateName field is set to the value of the last call.
 func (b *PolicyBindingApplyConfiguration) WithGenerateName(value string) *PolicyBindingApplyConfiguration {
 	b.ensureObjectMetaApplyConfigurationExists()
-	b.GenerateName = &value
+	b.ObjectMetaApplyConfiguration.GenerateName = &value
 	return b
 }
 
@@ -83,7 +83,7 @@ func (b *PolicyBindingApplyConfiguration) WithGenerateName(value string) *Policy
 // If called multiple times, the Namespace field is set to the value of the last call.
 func (b *PolicyBindingApplyConfiguration) WithNamespace(value string) *PolicyBindingApplyConfiguration {
 	b.ensureObjectMetaApplyConfigurationExists()
-	b.Namespace = &value
+	b.ObjectMetaApplyConfiguration.Namespace = &value
 	return b
 }
 
@@ -92,7 +92,7 @@ func (b *PolicyBindingApplyConfiguration) WithNamespace(value string) *PolicyBin
 // If called multiple times, the UID field is set to the value of the last call.
 func (b *PolicyBindingApplyConfiguration) WithUID(value types.UID) *PolicyBindingApplyConfiguration {
 	b.ensureObjectMetaApplyConfigurationExists()
-	b.UID = &value
+	b.ObjectMetaApplyConfiguration.UID = &value
 	return b
 }
 
@@ -101,7 +101,7 @@ func (b *PolicyBindingApplyConfiguration) WithUID(value types.UID) *PolicyBindin
 // If called multiple times, the ResourceVersion field is set to the value of the last call.
 func (b *PolicyBindingApplyConfiguration) WithResourceVersion(value string) *PolicyBindingApplyConfiguration {
 	b.ensureObjectMetaApplyConfigurationExists()
-	b.ResourceVersion = &value
+	b.ObjectMetaApplyConfiguration.ResourceVersion = &value
 	return b
 }
 
@@ -110,7 +110,7 @@ func (b *PolicyBindingApplyConfiguration) WithResourceVersion(value string) *Pol
 // If called multiple times, the Generation field is set to the value of the last call.
 func (b *PolicyBindingApplyConfiguration) WithGeneration(value int64) *PolicyBindingApplyConfiguration {
 	b.ensureObjectMetaApplyConfigurationExists()
-	b.Generation = &value
+	b.ObjectMetaApplyConfiguration.Generation = &value
 	return b
 }
 
@@ -119,7 +119,7 @@ func (b *PolicyBindingApplyConfiguration) WithGeneration(value int64) *PolicyBin
 // If called multiple times, the CreationTimestamp field is set to the value of the last call.
 func (b *PolicyBindingApplyConfiguration) WithCreationTimestamp(value metav1.Time) *PolicyBindingApplyConfiguration {
 	b.ensureObjectMetaApplyConfigurationExists()
-	b.CreationTimestamp = &value
+	b.ObjectMetaApplyConfiguration.CreationTimestamp = &value
 	return b
 }
 
@@ -128,7 +128,7 @@ func (b *PolicyBindingApplyConfiguration) WithCreationTimestamp(value metav1.Tim
 // If called multiple times, the DeletionTimestamp field is set to the value of the last call.
 func (b *PolicyBindingApplyConfiguration) WithDeletionTimestamp(value metav1.Time) *PolicyBindingApplyConfiguration {
 	b.ensureObjectMetaApplyConfigurationExists()
-	b.DeletionTimestamp = &value
+	b.ObjectMetaApplyConfiguration.DeletionTimestamp = &value
 	return b
 }
 
@@ -137,7 +137,7 @@ func (b *PolicyBindingApplyConfiguration) WithDeletionTimestamp(value metav1.Tim
 // If called multiple times, the DeletionGracePeriodSeconds field is set to the value of the last call.
 func (b *PolicyBindingApplyConfiguration) WithDeletionGracePeriodSeconds(value int64) *PolicyBindingApplyConfiguration {
 	b.ensureObjectMetaApplyConfigurationExists()
-	b.DeletionGracePeriodSeconds = &value
+	b.ObjectMetaApplyConfiguration.DeletionGracePeriodSeconds = &value
 	return b
 }
 
@@ -147,11 +147,11 @@ func (b *PolicyBindingApplyConfiguration) WithDeletionGracePeriodSeconds(value i
 // overwriting an existing map entries in Labels field with the same key.
 func (b *PolicyBindingApplyConfiguration) WithLabels(entries map[string]string) *PolicyBindingApplyConfiguration {
 	b.ensureObjectMetaApplyConfigurationExists()
-	if b.Labels == nil && len(entries) > 0 {
-		b.Labels = make(map[string]string, len(entries))
+	if b.ObjectMetaApplyConfiguration.Labels == nil && len(entries) > 0 {
+		b.ObjectMetaApplyConfiguration.Labels = make(map[string]string, len(entries))
 	}
 	for k, v := range entries {
-		b.Labels[k] = v
+		b.ObjectMetaApplyConfiguration.Labels[k] = v
 	}
 	return b
 }
@@ -162,11 +162,11 @@ func (b *PolicyBindingApplyConfiguration) WithLabels(entries map[string]string)
 // overwriting an existing map entries in Annotations field with the same key.
 func (b *PolicyBindingApplyConfiguration) WithAnnotations(entries map[string]string) *PolicyBindingApplyConfiguration {
 	b.ensureObjectMetaApplyConfigurationExists()
-	if b.Annotations == nil && len(entries) > 0 {
-		b.Annotations = make(map[string]string, len(entries))
+	if b.ObjectMetaApplyConfiguration.Annotations == nil && len(entries) > 0 {
+		b.ObjectMetaApplyConfiguration.Annotations = make(map[string]string, len(entries))
 	}
 	for k, v := range entries {
-		b.Annotations[k] = v
+		b.ObjectMetaApplyConfiguration.Annotations[k] = v
 	}
 	return b
 }
@@ -180,7 +180,7 @@ func (b *PolicyBindingApplyConfiguration) WithOwnerReferences(values ...*v1.Owne
 		if values[i] == nil {
 			panic("nil value passed to WithOwnerReferences")
 		}
-		b.OwnerReferences = append(b.OwnerReferences, *values[i])
+		b.ObjectMetaApplyConfiguration.OwnerReferences = append(b.ObjectMetaApplyConfiguration.OwnerReferences, *values[i])
 	}
 	return b
 }
@@ -191,7 +191,7 @@ func (b *PolicyBindingApplyConfiguration) WithOwnerReferences(values ...*v1.Owne
 func (b *PolicyBindingApplyConfiguration) WithFinalizers(values ...string) *PolicyBindingApplyConfiguration {
 	b.ensureObjectMetaApplyConfigurationExists()
 	for i := range values {
-		b.Finalizers = append(b.Finalizers, values[i])
+		b.ObjectMetaApplyConfiguration.Finalizers = append(b.ObjectMetaApplyConfiguration.Finalizers, values[i])
 	}
 	return b
 }
@@ -221,5 +221,5 @@ func (b *PolicyBindingApplyConfiguration) WithStatus(value *PolicyBindingStatusA
 // GetName retrieves the value of the Name field in the declarative configuration.
 func (b *PolicyBindingApplyConfiguration) GetName() *string {
 	b.ensureObjectMetaApplyConfigurationExists()
-	return b.Name
+	return b.ObjectMetaApplyConfiguration.Name
 }
diff --git a/pkg/client/applyconfiguration/sts.min.io/v1beta1/policybinding.go b/pkg/client/applyconfiguration/sts.min.io/v1beta1/policybinding.go
index 545301dd..fdbec8e4 100644
--- a/pkg/client/applyconfiguration/sts.min.io/v1beta1/policybinding.go
+++ b/pkg/client/applyconfiguration/sts.min.io/v1beta1/policybinding.go
@@ -48,7 +48,7 @@ func PolicyBinding(name, namespace string) *PolicyBindingApplyConfiguration {
 // and returns the receiver, so that objects can be built by chaining "With" function invocations.
 // If called multiple times, the Kind field is set to the value of the last call.
 func (b *PolicyBindingApplyConfiguration) WithKind(value string) *PolicyBindingApplyConfiguration {
-	b.Kind = &value
+	b.TypeMetaApplyConfiguration.Kind = &value
 	return b
 }
 
@@ -56,7 +56,7 @@ func (b *PolicyBindingApplyConfiguration) WithKind(value string) *PolicyBindingA
 // and returns the receiver, so that objects can be built by chaining "With" function invocations.
 // If called multiple times, the APIVersion field is set to the value of the last call.
 func (b *PolicyBindingApplyConfiguration) WithAPIVersion(value string) *PolicyBindingApplyConfiguration {
-	b.APIVersion = &value
+	b.TypeMetaApplyConfiguration.APIVersion = &value
 	return b
 }
 
@@ -65,7 +65,7 @@ func (b *PolicyBindingApplyConfiguration) WithAPIVersion(value string) *PolicyBi
 // If called multiple times, the Name field is set to the value of the last call.
 func (b *PolicyBindingApplyConfiguration) WithName(value string) *PolicyBindingApplyConfiguration {
 	b.ensureObjectMetaApplyConfigurationExists()
-	b.Name = &value
+	b.ObjectMetaApplyConfiguration.Name = &value
 	return b
 }
 
@@ -74,7 +74,7 @@ func (b *PolicyBindingApplyConfiguration) WithName(value string) *PolicyBindingA
 // If called multiple times, the GenerateName field is set to the value of the last call.
 func (b *PolicyBindingApplyConfiguration) WithGenerateName(value string) *PolicyBindingApplyConfiguration {
 	b.ensureObjectMetaApplyConfigurationExists()
-	b.GenerateName = &value
+	b.ObjectMetaApplyConfiguration.GenerateName = &value
 	return b
 }
 
@@ -83,7 +83,7 @@ func (b *PolicyBindingApplyConfiguration) WithGenerateName(value string) *Policy
 // If called multiple times, the Namespace field is set to the value of the last call.
 func (b *PolicyBindingApplyConfiguration) WithNamespace(value string) *PolicyBindingApplyConfiguration {
 	b.ensureObjectMetaApplyConfigurationExists()
-	b.Namespace = &value
+	b.ObjectMetaApplyConfiguration.Namespace = &value
 	return b
 }
 
@@ -92,7 +92,7 @@ func (b *PolicyBindingApplyConfiguration) WithNamespace(value string) *PolicyBin
 // If called multiple times, the UID field is set to the value of the last call.
 func (b *PolicyBindingApplyConfiguration) WithUID(value types.UID) *PolicyBindingApplyConfiguration {
 	b.ensureObjectMetaApplyConfigurationExists()
-	b.UID = &value
+	b.ObjectMetaApplyConfiguration.UID = &value
 	return b
 }
 
@@ -101,7 +101,7 @@ func (b *PolicyBindingApplyConfiguration) WithUID(value types.UID) *PolicyBindin
 // If called multiple times, the ResourceVersion field is set to the value of the last call.
 func (b *PolicyBindingApplyConfiguration) WithResourceVersion(value string) *PolicyBindingApplyConfiguration {
 	b.ensureObjectMetaApplyConfigurationExists()
-	b.ResourceVersion = &value
+	b.ObjectMetaApplyConfiguration.ResourceVersion = &value
 	return b
 }
 
@@ -110,7 +110,7 @@ func (b *PolicyBindingApplyConfiguration) WithResourceVersion(value string) *Pol
 // If called multiple times, the Generation field is set to the value of the last call.
 func (b *PolicyBindingApplyConfiguration) WithGeneration(value int64) *PolicyBindingApplyConfiguration {
 	b.ensureObjectMetaApplyConfigurationExists()
-	b.Generation = &value
+	b.ObjectMetaApplyConfiguration.Generation = &value
 	return b
 }
 
@@ -119,7 +119,7 @@ func (b *PolicyBindingApplyConfiguration) WithGeneration(value int64) *PolicyBin
 // If called multiple times, the CreationTimestamp field is set to the value of the last call.
 func (b *PolicyBindingApplyConfiguration) WithCreationTimestamp(value metav1.Time) *PolicyBindingApplyConfiguration {
 	b.ensureObjectMetaApplyConfigurationExists()
-	b.CreationTimestamp = &value
+	b.ObjectMetaApplyConfiguration.CreationTimestamp = &value
 	return b
 }
 
@@ -128,7 +128,7 @@ func (b *PolicyBindingApplyConfiguration) WithCreationTimestamp(value metav1.Tim
 // If called multiple times, the DeletionTimestamp field is set to the value of the last call.
 func (b *PolicyBindingApplyConfiguration) WithDeletionTimestamp(value metav1.Time) *PolicyBindingApplyConfiguration {
 	b.ensureObjectMetaApplyConfigurationExists()
-	b.DeletionTimestamp = &value
+	b.ObjectMetaApplyConfiguration.DeletionTimestamp = &value
 	return b
 }
 
@@ -137,7 +137,7 @@ func (b *PolicyBindingApplyConfiguration) WithDeletionTimestamp(value metav1.Tim
 // If called multiple times, the DeletionGracePeriodSeconds field is set to the value of the last call.
 func (b *PolicyBindingApplyConfiguration) WithDeletionGracePeriodSeconds(value int64) *PolicyBindingApplyConfiguration {
 	b.ensureObjectMetaApplyConfigurationExists()
-	b.DeletionGracePeriodSeconds = &value
+	b.ObjectMetaApplyConfiguration.DeletionGracePeriodSeconds = &value
 	return b
 }
 
@@ -147,11 +147,11 @@ func (b *PolicyBindingApplyConfiguration) WithDeletionGracePeriodSeconds(value i
 // overwriting an existing map entries in Labels field with the same key.
 func (b *PolicyBindingApplyConfiguration) WithLabels(entries map[string]string) *PolicyBindingApplyConfiguration {
 	b.ensureObjectMetaApplyConfigurationExists()
-	if b.Labels == nil && len(entries) > 0 {
-		b.Labels = make(map[string]string, len(entries))
+	if b.ObjectMetaApplyConfiguration.Labels == nil && len(entries) > 0 {
+		b.ObjectMetaApplyConfiguration.Labels = make(map[string]string, len(entries))
 	}
 	for k, v := range entries {
-		b.Labels[k] = v
+		b.ObjectMetaApplyConfiguration.Labels[k] = v
 	}
 	return b
 }
@@ -162,11 +162,11 @@ func (b *PolicyBindingApplyConfiguration) WithLabels(entries map[string]string)
 // overwriting an existing map entries in Annotations field with the same key.
 func (b *PolicyBindingApplyConfiguration) WithAnnotations(entries map[string]string) *PolicyBindingApplyConfiguration {
 	b.ensureObjectMetaApplyConfigurationExists()
-	if b.Annotations == nil && len(entries) > 0 {
-		b.Annotations = make(map[string]string, len(entries))
+	if b.ObjectMetaApplyConfiguration.Annotations == nil && len(entries) > 0 {
+		b.ObjectMetaApplyConfiguration.Annotations = make(map[string]string, len(entries))
 	}
 	for k, v := range entries {
-		b.Annotations[k] = v
+		b.ObjectMetaApplyConfiguration.Annotations[k] = v
 	}
 	return b
 }
@@ -180,7 +180,7 @@ func (b *PolicyBindingApplyConfiguration) WithOwnerReferences(values ...*v1.Owne
 		if values[i] == nil {
 			panic("nil value passed to WithOwnerReferences")
 		}
-		b.OwnerReferences = append(b.OwnerReferences, *values[i])
+		b.ObjectMetaApplyConfiguration.OwnerReferences = append(b.ObjectMetaApplyConfiguration.OwnerReferences, *values[i])
 	}
 	return b
 }
@@ -191,7 +191,7 @@ func (b *PolicyBindingApplyConfiguration) WithOwnerReferences(values ...*v1.Owne
 func (b *PolicyBindingApplyConfiguration) WithFinalizers(values ...string) *PolicyBindingApplyConfiguration {
 	b.ensureObjectMetaApplyConfigurationExists()
 	for i := range values {
-		b.Finalizers = append(b.Finalizers, values[i])
+		b.ObjectMetaApplyConfiguration.Finalizers = append(b.ObjectMetaApplyConfiguration.Finalizers, values[i])
 	}
 	return b
 }
@@ -221,5 +221,5 @@ func (b *PolicyBindingApplyConfiguration) WithStatus(value *PolicyBindingStatusA
 // GetName retrieves the value of the Name field in the declarative configuration.
 func (b *PolicyBindingApplyConfiguration) GetName() *string {
 	b.ensureObjectMetaApplyConfigurationExists()
-	return b.Name
+	return b.ObjectMetaApplyConfiguration.Name
 }
diff --git a/pkg/client/clientset/versioned/clientset.go b/pkg/client/clientset/versioned/clientset.go
index 6b1ab779..b1bdcb4d 100644
--- a/pkg/client/clientset/versioned/clientset.go
+++ b/pkg/client/clientset/versioned/clientset.go
@@ -19,8 +19,8 @@
 package versioned
 
 import (
-	"fmt"
-	"net/http"
+	fmt "fmt"
+	http "net/http"
 
 	miniov2 "github.com/minio/operator/pkg/client/clientset/versioned/typed/minio.min.io/v2"
 	stsv1alpha1 "github.com/minio/operator/pkg/client/clientset/versioned/typed/sts.min.io/v1alpha1"
diff --git a/pkg/client/clientset/versioned/typed/minio.min.io/v2/fake/fake_minio.min.io_client.go b/pkg/client/clientset/versioned/typed/minio.min.io/v2/fake/fake_minio.min.io_client.go
index 214ae481..dd3ec71f 100644
--- a/pkg/client/clientset/versioned/typed/minio.min.io/v2/fake/fake_minio.min.io_client.go
+++ b/pkg/client/clientset/versioned/typed/minio.min.io/v2/fake/fake_minio.min.io_client.go
@@ -29,7 +29,7 @@ type FakeMinioV2 struct {
 }
 
 func (c *FakeMinioV2) Tenants(namespace string) v2.TenantInterface {
-	return &FakeTenants{c, namespace}
+	return newFakeTenants(c, namespace)
 }
 
 // RESTClient returns a RESTClient that is used to communicate
diff --git a/pkg/client/clientset/versioned/typed/minio.min.io/v2/fake/fake_tenant.go b/pkg/client/clientset/versioned/typed/minio.min.io/v2/fake/fake_tenant.go
index e8f24fd7..cf71f53b 100644
--- a/pkg/client/clientset/versioned/typed/minio.min.io/v2/fake/fake_tenant.go
+++ b/pkg/client/clientset/versioned/typed/minio.min.io/v2/fake/fake_tenant.go
@@ -19,179 +19,31 @@
 package fake
 
 import (
-	"context"
-	json "encoding/json"
-	"fmt"
-
 	v2 "github.com/minio/operator/pkg/apis/minio.min.io/v2"
 	miniominiov2 "github.com/minio/operator/pkg/client/applyconfiguration/minio.min.io/v2"
-	v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
-	labels "k8s.io/apimachinery/pkg/labels"
-	types "k8s.io/apimachinery/pkg/types"
-	watch "k8s.io/apimachinery/pkg/watch"
-	testing "k8s.io/client-go/testing"
+	typedminiominiov2 "github.com/minio/operator/pkg/client/clientset/versioned/typed/minio.min.io/v2"
+	gentype "k8s.io/client-go/gentype"
 )
 
-// FakeTenants implements TenantInterface
-type FakeTenants struct {
+// fakeTenants implements TenantInterface
+type fakeTenants struct {
+	*gentype.FakeClientWithListAndApply[*v2.Tenant, *v2.TenantList, *miniominiov2.TenantApplyConfiguration]
 	Fake *FakeMinioV2
-	ns   string
-}
-
-var tenantsResource = v2.SchemeGroupVersion.WithResource("tenants")
-
-var tenantsKind = v2.SchemeGroupVersion.WithKind("Tenant")
-
-// Get takes name of the tenant, and returns the corresponding tenant object, and an error if there is any.
-func (c *FakeTenants) Get(ctx context.Context, name string, options v1.GetOptions) (result *v2.Tenant, err error) {
-	emptyResult := &v2.Tenant{}
-	obj, err := c.Fake.
-		Invokes(testing.NewGetActionWithOptions(tenantsResource, c.ns, name, options), emptyResult)
-
-	if obj == nil {
-		return emptyResult, err
-	}
-	return obj.(*v2.Tenant), err
-}
-
-// List takes label and field selectors, and returns the list of Tenants that match those selectors.
-func (c *FakeTenants) List(ctx context.Context, opts v1.ListOptions) (result *v2.TenantList, err error) {
-	emptyResult := &v2.TenantList{}
-	obj, err := c.Fake.
-		Invokes(testing.NewListActionWithOptions(tenantsResource, tenantsKind, c.ns, opts), emptyResult)
-
-	if obj == nil {
-		return emptyResult, err
-	}
-
-	label, _, _ := testing.ExtractFromListOptions(opts)
-	if label == nil {
-		label = labels.Everything()
-	}
-	list := &v2.TenantList{ListMeta: obj.(*v2.TenantList).ListMeta}
-	for _, item := range obj.(*v2.TenantList).Items {
-		if label.Matches(labels.Set(item.Labels)) {
-			list.Items = append(list.Items, item)
-		}
-	}
-	return list, err
-}
-
-// Watch returns a watch.Interface that watches the requested tenants.
-func (c *FakeTenants) Watch(ctx context.Context, opts v1.ListOptions) (watch.Interface, error) {
-	return c.Fake.
-		InvokesWatch(testing.NewWatchActionWithOptions(tenantsResource, c.ns, opts))
-
-}
-
-// Create takes the representation of a tenant and creates it.  Returns the server's representation of the tenant, and an error, if there is any.
-func (c *FakeTenants) Create(ctx context.Context, tenant *v2.Tenant, opts v1.CreateOptions) (result *v2.Tenant, err error) {
-	emptyResult := &v2.Tenant{}
-	obj, err := c.Fake.
-		Invokes(testing.NewCreateActionWithOptions(tenantsResource, c.ns, tenant, opts), emptyResult)
-
-	if obj == nil {
-		return emptyResult, err
-	}
-	return obj.(*v2.Tenant), err
-}
-
-// Update takes the representation of a tenant and updates it. Returns the server's representation of the tenant, and an error, if there is any.
-func (c *FakeTenants) Update(ctx context.Context, tenant *v2.Tenant, opts v1.UpdateOptions) (result *v2.Tenant, err error) {
-	emptyResult := &v2.Tenant{}
-	obj, err := c.Fake.
-		Invokes(testing.NewUpdateActionWithOptions(tenantsResource, c.ns, tenant, opts), emptyResult)
-
-	if obj == nil {
-		return emptyResult, err
-	}
-	return obj.(*v2.Tenant), err
 }
 
-// UpdateStatus was generated because the type contains a Status member.
-// Add a +genclient:noStatus comment above the type to avoid generating UpdateStatus().
-func (c *FakeTenants) UpdateStatus(ctx context.Context, tenant *v2.Tenant, opts v1.UpdateOptions) (result *v2.Tenant, err error) {
-	emptyResult := &v2.Tenant{}
-	obj, err := c.Fake.
-		Invokes(testing.NewUpdateSubresourceActionWithOptions(tenantsResource, "status", c.ns, tenant, opts), emptyResult)
-
-	if obj == nil {
-		return emptyResult, err
-	}
-	return obj.(*v2.Tenant), err
-}
-
-// Delete takes name of the tenant and deletes it. Returns an error if one occurs.
-func (c *FakeTenants) Delete(ctx context.Context, name string, opts v1.DeleteOptions) error {
-	_, err := c.Fake.
-		Invokes(testing.NewDeleteActionWithOptions(tenantsResource, c.ns, name, opts), &v2.Tenant{})
-
-	return err
-}
-
-// DeleteCollection deletes a collection of objects.
-func (c *FakeTenants) DeleteCollection(ctx context.Context, opts v1.DeleteOptions, listOpts v1.ListOptions) error {
-	action := testing.NewDeleteCollectionActionWithOptions(tenantsResource, c.ns, opts, listOpts)
-
-	_, err := c.Fake.Invokes(action, &v2.TenantList{})
-	return err
-}
-
-// Patch applies the patch and returns the patched tenant.
-func (c *FakeTenants) Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts v1.PatchOptions, subresources ...string) (result *v2.Tenant, err error) {
-	emptyResult := &v2.Tenant{}
-	obj, err := c.Fake.
-		Invokes(testing.NewPatchSubresourceActionWithOptions(tenantsResource, c.ns, name, pt, data, opts, subresources...), emptyResult)
-
-	if obj == nil {
-		return emptyResult, err
-	}
-	return obj.(*v2.Tenant), err
-}
-
-// Apply takes the given apply declarative configuration, applies it and returns the applied tenant.
-func (c *FakeTenants) Apply(ctx context.Context, tenant *miniominiov2.TenantApplyConfiguration, opts v1.ApplyOptions) (result *v2.Tenant, err error) {
-	if tenant == nil {
-		return nil, fmt.Errorf("tenant provided to Apply must not be nil")
-	}
-	data, err := json.Marshal(tenant)
-	if err != nil {
-		return nil, err
-	}
-	name := tenant.Name
-	if name == nil {
-		return nil, fmt.Errorf("tenant.Name must be provided to Apply")
-	}
-	emptyResult := &v2.Tenant{}
-	obj, err := c.Fake.
-		Invokes(testing.NewPatchSubresourceActionWithOptions(tenantsResource, c.ns, *name, types.ApplyPatchType, data, opts.ToPatchOptions()), emptyResult)
-
-	if obj == nil {
-		return emptyResult, err
-	}
-	return obj.(*v2.Tenant), err
-}
-
-// ApplyStatus was generated because the type contains a Status member.
-// Add a +genclient:noStatus comment above the type to avoid generating ApplyStatus().
-func (c *FakeTenants) ApplyStatus(ctx context.Context, tenant *miniominiov2.TenantApplyConfiguration, opts v1.ApplyOptions) (result *v2.Tenant, err error) {
-	if tenant == nil {
-		return nil, fmt.Errorf("tenant provided to Apply must not be nil")
-	}
-	data, err := json.Marshal(tenant)
-	if err != nil {
-		return nil, err
-	}
-	name := tenant.Name
-	if name == nil {
-		return nil, fmt.Errorf("tenant.Name must be provided to Apply")
-	}
-	emptyResult := &v2.Tenant{}
-	obj, err := c.Fake.
-		Invokes(testing.NewPatchSubresourceActionWithOptions(tenantsResource, c.ns, *name, types.ApplyPatchType, data, opts.ToPatchOptions(), "status"), emptyResult)
-
-	if obj == nil {
-		return emptyResult, err
+func newFakeTenants(fake *FakeMinioV2, namespace string) typedminiominiov2.TenantInterface {
+	return &fakeTenants{
+		gentype.NewFakeClientWithListAndApply[*v2.Tenant, *v2.TenantList, *miniominiov2.TenantApplyConfiguration](
+			fake.Fake,
+			namespace,
+			v2.SchemeGroupVersion.WithResource("tenants"),
+			v2.SchemeGroupVersion.WithKind("Tenant"),
+			func() *v2.Tenant { return &v2.Tenant{} },
+			func() *v2.TenantList { return &v2.TenantList{} },
+			func(dst, src *v2.TenantList) { dst.ListMeta = src.ListMeta },
+			func(list *v2.TenantList) []*v2.Tenant { return gentype.ToPointerSlice(list.Items) },
+			func(list *v2.TenantList, items []*v2.Tenant) { list.Items = gentype.FromPointerSlice(items) },
+		),
+		fake,
 	}
-	return obj.(*v2.Tenant), err
 }
diff --git a/pkg/client/clientset/versioned/typed/minio.min.io/v2/minio.min.io_client.go b/pkg/client/clientset/versioned/typed/minio.min.io/v2/minio.min.io_client.go
index 69d0de37..76b04eae 100644
--- a/pkg/client/clientset/versioned/typed/minio.min.io/v2/minio.min.io_client.go
+++ b/pkg/client/clientset/versioned/typed/minio.min.io/v2/minio.min.io_client.go
@@ -19,10 +19,10 @@
 package v2
 
 import (
-	"net/http"
+	http "net/http"
 
-	v2 "github.com/minio/operator/pkg/apis/minio.min.io/v2"
-	"github.com/minio/operator/pkg/client/clientset/versioned/scheme"
+	miniominiov2 "github.com/minio/operator/pkg/apis/minio.min.io/v2"
+	scheme "github.com/minio/operator/pkg/client/clientset/versioned/scheme"
 	rest "k8s.io/client-go/rest"
 )
 
@@ -85,10 +85,10 @@ func New(c rest.Interface) *MinioV2Client {
 }
 
 func setConfigDefaults(config *rest.Config) error {
-	gv := v2.SchemeGroupVersion
+	gv := miniominiov2.SchemeGroupVersion
 	config.GroupVersion = &gv
 	config.APIPath = "/apis"
-	config.NegotiatedSerializer = scheme.Codecs.WithoutConversion()
+	config.NegotiatedSerializer = rest.CodecFactoryForGeneratedClient(scheme.Scheme, scheme.Codecs).WithoutConversion()
 
 	if config.UserAgent == "" {
 		config.UserAgent = rest.DefaultKubernetesUserAgent()
diff --git a/pkg/client/clientset/versioned/typed/minio.min.io/v2/tenant.go b/pkg/client/clientset/versioned/typed/minio.min.io/v2/tenant.go
index f0bcc596..0de79b71 100644
--- a/pkg/client/clientset/versioned/typed/minio.min.io/v2/tenant.go
+++ b/pkg/client/clientset/versioned/typed/minio.min.io/v2/tenant.go
@@ -19,10 +19,10 @@
 package v2
 
 import (
-	"context"
+	context "context"
 
-	v2 "github.com/minio/operator/pkg/apis/minio.min.io/v2"
-	miniominiov2 "github.com/minio/operator/pkg/client/applyconfiguration/minio.min.io/v2"
+	miniominiov2 "github.com/minio/operator/pkg/apis/minio.min.io/v2"
+	applyconfigurationminiominiov2 "github.com/minio/operator/pkg/client/applyconfiguration/minio.min.io/v2"
 	scheme "github.com/minio/operator/pkg/client/clientset/versioned/scheme"
 	v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
 	types "k8s.io/apimachinery/pkg/types"
@@ -38,36 +38,37 @@ type TenantsGetter interface {
 
 // TenantInterface has methods to work with Tenant resources.
 type TenantInterface interface {
-	Create(ctx context.Context, tenant *v2.Tenant, opts v1.CreateOptions) (*v2.Tenant, error)
-	Update(ctx context.Context, tenant *v2.Tenant, opts v1.UpdateOptions) (*v2.Tenant, error)
+	Create(ctx context.Context, tenant *miniominiov2.Tenant, opts v1.CreateOptions) (*miniominiov2.Tenant, error)
+	Update(ctx context.Context, tenant *miniominiov2.Tenant, opts v1.UpdateOptions) (*miniominiov2.Tenant, error)
 	// Add a +genclient:noStatus comment above the type to avoid generating UpdateStatus().
-	UpdateStatus(ctx context.Context, tenant *v2.Tenant, opts v1.UpdateOptions) (*v2.Tenant, error)
+	UpdateStatus(ctx context.Context, tenant *miniominiov2.Tenant, opts v1.UpdateOptions) (*miniominiov2.Tenant, error)
 	Delete(ctx context.Context, name string, opts v1.DeleteOptions) error
 	DeleteCollection(ctx context.Context, opts v1.DeleteOptions, listOpts v1.ListOptions) error
-	Get(ctx context.Context, name string, opts v1.GetOptions) (*v2.Tenant, error)
-	List(ctx context.Context, opts v1.ListOptions) (*v2.TenantList, error)
+	Get(ctx context.Context, name string, opts v1.GetOptions) (*miniominiov2.Tenant, error)
+	List(ctx context.Context, opts v1.ListOptions) (*miniominiov2.TenantList, error)
 	Watch(ctx context.Context, opts v1.ListOptions) (watch.Interface, error)
-	Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts v1.PatchOptions, subresources ...string) (result *v2.Tenant, err error)
-	Apply(ctx context.Context, tenant *miniominiov2.TenantApplyConfiguration, opts v1.ApplyOptions) (result *v2.Tenant, err error)
+	Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts v1.PatchOptions, subresources ...string) (result *miniominiov2.Tenant, err error)
+	Apply(ctx context.Context, tenant *applyconfigurationminiominiov2.TenantApplyConfiguration, opts v1.ApplyOptions) (result *miniominiov2.Tenant, err error)
 	// Add a +genclient:noStatus comment above the type to avoid generating ApplyStatus().
-	ApplyStatus(ctx context.Context, tenant *miniominiov2.TenantApplyConfiguration, opts v1.ApplyOptions) (result *v2.Tenant, err error)
+	ApplyStatus(ctx context.Context, tenant *applyconfigurationminiominiov2.TenantApplyConfiguration, opts v1.ApplyOptions) (result *miniominiov2.Tenant, err error)
 	TenantExpansion
 }
 
 // tenants implements TenantInterface
 type tenants struct {
-	*gentype.ClientWithListAndApply[*v2.Tenant, *v2.TenantList, *miniominiov2.TenantApplyConfiguration]
+	*gentype.ClientWithListAndApply[*miniominiov2.Tenant, *miniominiov2.TenantList, *applyconfigurationminiominiov2.TenantApplyConfiguration]
 }
 
 // newTenants returns a Tenants
 func newTenants(c *MinioV2Client, namespace string) *tenants {
 	return &tenants{
-		gentype.NewClientWithListAndApply[*v2.Tenant, *v2.TenantList, *miniominiov2.TenantApplyConfiguration](
+		gentype.NewClientWithListAndApply[*miniominiov2.Tenant, *miniominiov2.TenantList, *applyconfigurationminiominiov2.TenantApplyConfiguration](
 			"tenants",
 			c.RESTClient(),
 			scheme.ParameterCodec,
 			namespace,
-			func() *v2.Tenant { return &v2.Tenant{} },
-			func() *v2.TenantList { return &v2.TenantList{} }),
+			func() *miniominiov2.Tenant { return &miniominiov2.Tenant{} },
+			func() *miniominiov2.TenantList { return &miniominiov2.TenantList{} },
+		),
 	}
 }
diff --git a/pkg/client/clientset/versioned/typed/sts.min.io/v1alpha1/fake/fake_policybinding.go b/pkg/client/clientset/versioned/typed/sts.min.io/v1alpha1/fake/fake_policybinding.go
index f4268ac2..12264b7e 100644
--- a/pkg/client/clientset/versioned/typed/sts.min.io/v1alpha1/fake/fake_policybinding.go
+++ b/pkg/client/clientset/versioned/typed/sts.min.io/v1alpha1/fake/fake_policybinding.go
@@ -19,179 +19,35 @@
 package fake
 
 import (
-	"context"
-	json "encoding/json"
-	"fmt"
-
 	v1alpha1 "github.com/minio/operator/pkg/apis/sts.min.io/v1alpha1"
 	stsminiov1alpha1 "github.com/minio/operator/pkg/client/applyconfiguration/sts.min.io/v1alpha1"
-	v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
-	labels "k8s.io/apimachinery/pkg/labels"
-	types "k8s.io/apimachinery/pkg/types"
-	watch "k8s.io/apimachinery/pkg/watch"
-	testing "k8s.io/client-go/testing"
+	typedstsminiov1alpha1 "github.com/minio/operator/pkg/client/clientset/versioned/typed/sts.min.io/v1alpha1"
+	gentype "k8s.io/client-go/gentype"
 )
 
-// FakePolicyBindings implements PolicyBindingInterface
-type FakePolicyBindings struct {
+// fakePolicyBindings implements PolicyBindingInterface
+type fakePolicyBindings struct {
+	*gentype.FakeClientWithListAndApply[*v1alpha1.PolicyBinding, *v1alpha1.PolicyBindingList, *stsminiov1alpha1.PolicyBindingApplyConfiguration]
 	Fake *FakeStsV1alpha1
-	ns   string
-}
-
-var policybindingsResource = v1alpha1.SchemeGroupVersion.WithResource("policybindings")
-
-var policybindingsKind = v1alpha1.SchemeGroupVersion.WithKind("PolicyBinding")
-
-// Get takes name of the policyBinding, and returns the corresponding policyBinding object, and an error if there is any.
-func (c *FakePolicyBindings) Get(ctx context.Context, name string, options v1.GetOptions) (result *v1alpha1.PolicyBinding, err error) {
-	emptyResult := &v1alpha1.PolicyBinding{}
-	obj, err := c.Fake.
-		Invokes(testing.NewGetActionWithOptions(policybindingsResource, c.ns, name, options), emptyResult)
-
-	if obj == nil {
-		return emptyResult, err
-	}
-	return obj.(*v1alpha1.PolicyBinding), err
-}
-
-// List takes label and field selectors, and returns the list of PolicyBindings that match those selectors.
-func (c *FakePolicyBindings) List(ctx context.Context, opts v1.ListOptions) (result *v1alpha1.PolicyBindingList, err error) {
-	emptyResult := &v1alpha1.PolicyBindingList{}
-	obj, err := c.Fake.
-		Invokes(testing.NewListActionWithOptions(policybindingsResource, policybindingsKind, c.ns, opts), emptyResult)
-
-	if obj == nil {
-		return emptyResult, err
-	}
-
-	label, _, _ := testing.ExtractFromListOptions(opts)
-	if label == nil {
-		label = labels.Everything()
-	}
-	list := &v1alpha1.PolicyBindingList{ListMeta: obj.(*v1alpha1.PolicyBindingList).ListMeta}
-	for _, item := range obj.(*v1alpha1.PolicyBindingList).Items {
-		if label.Matches(labels.Set(item.Labels)) {
-			list.Items = append(list.Items, item)
-		}
-	}
-	return list, err
-}
-
-// Watch returns a watch.Interface that watches the requested policyBindings.
-func (c *FakePolicyBindings) Watch(ctx context.Context, opts v1.ListOptions) (watch.Interface, error) {
-	return c.Fake.
-		InvokesWatch(testing.NewWatchActionWithOptions(policybindingsResource, c.ns, opts))
-
-}
-
-// Create takes the representation of a policyBinding and creates it.  Returns the server's representation of the policyBinding, and an error, if there is any.
-func (c *FakePolicyBindings) Create(ctx context.Context, policyBinding *v1alpha1.PolicyBinding, opts v1.CreateOptions) (result *v1alpha1.PolicyBinding, err error) {
-	emptyResult := &v1alpha1.PolicyBinding{}
-	obj, err := c.Fake.
-		Invokes(testing.NewCreateActionWithOptions(policybindingsResource, c.ns, policyBinding, opts), emptyResult)
-
-	if obj == nil {
-		return emptyResult, err
-	}
-	return obj.(*v1alpha1.PolicyBinding), err
-}
-
-// Update takes the representation of a policyBinding and updates it. Returns the server's representation of the policyBinding, and an error, if there is any.
-func (c *FakePolicyBindings) Update(ctx context.Context, policyBinding *v1alpha1.PolicyBinding, opts v1.UpdateOptions) (result *v1alpha1.PolicyBinding, err error) {
-	emptyResult := &v1alpha1.PolicyBinding{}
-	obj, err := c.Fake.
-		Invokes(testing.NewUpdateActionWithOptions(policybindingsResource, c.ns, policyBinding, opts), emptyResult)
-
-	if obj == nil {
-		return emptyResult, err
-	}
-	return obj.(*v1alpha1.PolicyBinding), err
 }
 
-// UpdateStatus was generated because the type contains a Status member.
-// Add a +genclient:noStatus comment above the type to avoid generating UpdateStatus().
-func (c *FakePolicyBindings) UpdateStatus(ctx context.Context, policyBinding *v1alpha1.PolicyBinding, opts v1.UpdateOptions) (result *v1alpha1.PolicyBinding, err error) {
-	emptyResult := &v1alpha1.PolicyBinding{}
-	obj, err := c.Fake.
-		Invokes(testing.NewUpdateSubresourceActionWithOptions(policybindingsResource, "status", c.ns, policyBinding, opts), emptyResult)
-
-	if obj == nil {
-		return emptyResult, err
-	}
-	return obj.(*v1alpha1.PolicyBinding), err
-}
-
-// Delete takes name of the policyBinding and deletes it. Returns an error if one occurs.
-func (c *FakePolicyBindings) Delete(ctx context.Context, name string, opts v1.DeleteOptions) error {
-	_, err := c.Fake.
-		Invokes(testing.NewDeleteActionWithOptions(policybindingsResource, c.ns, name, opts), &v1alpha1.PolicyBinding{})
-
-	return err
-}
-
-// DeleteCollection deletes a collection of objects.
-func (c *FakePolicyBindings) DeleteCollection(ctx context.Context, opts v1.DeleteOptions, listOpts v1.ListOptions) error {
-	action := testing.NewDeleteCollectionActionWithOptions(policybindingsResource, c.ns, opts, listOpts)
-
-	_, err := c.Fake.Invokes(action, &v1alpha1.PolicyBindingList{})
-	return err
-}
-
-// Patch applies the patch and returns the patched policyBinding.
-func (c *FakePolicyBindings) Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts v1.PatchOptions, subresources ...string) (result *v1alpha1.PolicyBinding, err error) {
-	emptyResult := &v1alpha1.PolicyBinding{}
-	obj, err := c.Fake.
-		Invokes(testing.NewPatchSubresourceActionWithOptions(policybindingsResource, c.ns, name, pt, data, opts, subresources...), emptyResult)
-
-	if obj == nil {
-		return emptyResult, err
-	}
-	return obj.(*v1alpha1.PolicyBinding), err
-}
-
-// Apply takes the given apply declarative configuration, applies it and returns the applied policyBinding.
-func (c *FakePolicyBindings) Apply(ctx context.Context, policyBinding *stsminiov1alpha1.PolicyBindingApplyConfiguration, opts v1.ApplyOptions) (result *v1alpha1.PolicyBinding, err error) {
-	if policyBinding == nil {
-		return nil, fmt.Errorf("policyBinding provided to Apply must not be nil")
-	}
-	data, err := json.Marshal(policyBinding)
-	if err != nil {
-		return nil, err
-	}
-	name := policyBinding.Name
-	if name == nil {
-		return nil, fmt.Errorf("policyBinding.Name must be provided to Apply")
-	}
-	emptyResult := &v1alpha1.PolicyBinding{}
-	obj, err := c.Fake.
-		Invokes(testing.NewPatchSubresourceActionWithOptions(policybindingsResource, c.ns, *name, types.ApplyPatchType, data, opts.ToPatchOptions()), emptyResult)
-
-	if obj == nil {
-		return emptyResult, err
-	}
-	return obj.(*v1alpha1.PolicyBinding), err
-}
-
-// ApplyStatus was generated because the type contains a Status member.
-// Add a +genclient:noStatus comment above the type to avoid generating ApplyStatus().
-func (c *FakePolicyBindings) ApplyStatus(ctx context.Context, policyBinding *stsminiov1alpha1.PolicyBindingApplyConfiguration, opts v1.ApplyOptions) (result *v1alpha1.PolicyBinding, err error) {
-	if policyBinding == nil {
-		return nil, fmt.Errorf("policyBinding provided to Apply must not be nil")
-	}
-	data, err := json.Marshal(policyBinding)
-	if err != nil {
-		return nil, err
-	}
-	name := policyBinding.Name
-	if name == nil {
-		return nil, fmt.Errorf("policyBinding.Name must be provided to Apply")
-	}
-	emptyResult := &v1alpha1.PolicyBinding{}
-	obj, err := c.Fake.
-		Invokes(testing.NewPatchSubresourceActionWithOptions(policybindingsResource, c.ns, *name, types.ApplyPatchType, data, opts.ToPatchOptions(), "status"), emptyResult)
-
-	if obj == nil {
-		return emptyResult, err
+func newFakePolicyBindings(fake *FakeStsV1alpha1, namespace string) typedstsminiov1alpha1.PolicyBindingInterface {
+	return &fakePolicyBindings{
+		gentype.NewFakeClientWithListAndApply[*v1alpha1.PolicyBinding, *v1alpha1.PolicyBindingList, *stsminiov1alpha1.PolicyBindingApplyConfiguration](
+			fake.Fake,
+			namespace,
+			v1alpha1.SchemeGroupVersion.WithResource("policybindings"),
+			v1alpha1.SchemeGroupVersion.WithKind("PolicyBinding"),
+			func() *v1alpha1.PolicyBinding { return &v1alpha1.PolicyBinding{} },
+			func() *v1alpha1.PolicyBindingList { return &v1alpha1.PolicyBindingList{} },
+			func(dst, src *v1alpha1.PolicyBindingList) { dst.ListMeta = src.ListMeta },
+			func(list *v1alpha1.PolicyBindingList) []*v1alpha1.PolicyBinding {
+				return gentype.ToPointerSlice(list.Items)
+			},
+			func(list *v1alpha1.PolicyBindingList, items []*v1alpha1.PolicyBinding) {
+				list.Items = gentype.FromPointerSlice(items)
+			},
+		),
+		fake,
 	}
-	return obj.(*v1alpha1.PolicyBinding), err
 }
diff --git a/pkg/client/clientset/versioned/typed/sts.min.io/v1alpha1/fake/fake_sts.min.io_client.go b/pkg/client/clientset/versioned/typed/sts.min.io/v1alpha1/fake/fake_sts.min.io_client.go
index 0feb086f..1412f17c 100644
--- a/pkg/client/clientset/versioned/typed/sts.min.io/v1alpha1/fake/fake_sts.min.io_client.go
+++ b/pkg/client/clientset/versioned/typed/sts.min.io/v1alpha1/fake/fake_sts.min.io_client.go
@@ -29,7 +29,7 @@ type FakeStsV1alpha1 struct {
 }
 
 func (c *FakeStsV1alpha1) PolicyBindings(namespace string) v1alpha1.PolicyBindingInterface {
-	return &FakePolicyBindings{c, namespace}
+	return newFakePolicyBindings(c, namespace)
 }
 
 // RESTClient returns a RESTClient that is used to communicate
diff --git a/pkg/client/clientset/versioned/typed/sts.min.io/v1alpha1/policybinding.go b/pkg/client/clientset/versioned/typed/sts.min.io/v1alpha1/policybinding.go
index 9df148b7..4c0c3649 100644
--- a/pkg/client/clientset/versioned/typed/sts.min.io/v1alpha1/policybinding.go
+++ b/pkg/client/clientset/versioned/typed/sts.min.io/v1alpha1/policybinding.go
@@ -19,10 +19,10 @@
 package v1alpha1
 
 import (
-	"context"
+	context "context"
 
-	v1alpha1 "github.com/minio/operator/pkg/apis/sts.min.io/v1alpha1"
-	stsminiov1alpha1 "github.com/minio/operator/pkg/client/applyconfiguration/sts.min.io/v1alpha1"
+	stsminiov1alpha1 "github.com/minio/operator/pkg/apis/sts.min.io/v1alpha1"
+	applyconfigurationstsminiov1alpha1 "github.com/minio/operator/pkg/client/applyconfiguration/sts.min.io/v1alpha1"
 	scheme "github.com/minio/operator/pkg/client/clientset/versioned/scheme"
 	v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
 	types "k8s.io/apimachinery/pkg/types"
@@ -38,36 +38,37 @@ type PolicyBindingsGetter interface {
 
 // PolicyBindingInterface has methods to work with PolicyBinding resources.
 type PolicyBindingInterface interface {
-	Create(ctx context.Context, policyBinding *v1alpha1.PolicyBinding, opts v1.CreateOptions) (*v1alpha1.PolicyBinding, error)
-	Update(ctx context.Context, policyBinding *v1alpha1.PolicyBinding, opts v1.UpdateOptions) (*v1alpha1.PolicyBinding, error)
+	Create(ctx context.Context, policyBinding *stsminiov1alpha1.PolicyBinding, opts v1.CreateOptions) (*stsminiov1alpha1.PolicyBinding, error)
+	Update(ctx context.Context, policyBinding *stsminiov1alpha1.PolicyBinding, opts v1.UpdateOptions) (*stsminiov1alpha1.PolicyBinding, error)
 	// Add a +genclient:noStatus comment above the type to avoid generating UpdateStatus().
-	UpdateStatus(ctx context.Context, policyBinding *v1alpha1.PolicyBinding, opts v1.UpdateOptions) (*v1alpha1.PolicyBinding, error)
+	UpdateStatus(ctx context.Context, policyBinding *stsminiov1alpha1.PolicyBinding, opts v1.UpdateOptions) (*stsminiov1alpha1.PolicyBinding, error)
 	Delete(ctx context.Context, name string, opts v1.DeleteOptions) error
 	DeleteCollection(ctx context.Context, opts v1.DeleteOptions, listOpts v1.ListOptions) error
-	Get(ctx context.Context, name string, opts v1.GetOptions) (*v1alpha1.PolicyBinding, error)
-	List(ctx context.Context, opts v1.ListOptions) (*v1alpha1.PolicyBindingList, error)
+	Get(ctx context.Context, name string, opts v1.GetOptions) (*stsminiov1alpha1.PolicyBinding, error)
+	List(ctx context.Context, opts v1.ListOptions) (*stsminiov1alpha1.PolicyBindingList, error)
 	Watch(ctx context.Context, opts v1.ListOptions) (watch.Interface, error)
-	Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts v1.PatchOptions, subresources ...string) (result *v1alpha1.PolicyBinding, err error)
-	Apply(ctx context.Context, policyBinding *stsminiov1alpha1.PolicyBindingApplyConfiguration, opts v1.ApplyOptions) (result *v1alpha1.PolicyBinding, err error)
+	Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts v1.PatchOptions, subresources ...string) (result *stsminiov1alpha1.PolicyBinding, err error)
+	Apply(ctx context.Context, policyBinding *applyconfigurationstsminiov1alpha1.PolicyBindingApplyConfiguration, opts v1.ApplyOptions) (result *stsminiov1alpha1.PolicyBinding, err error)
 	// Add a +genclient:noStatus comment above the type to avoid generating ApplyStatus().
-	ApplyStatus(ctx context.Context, policyBinding *stsminiov1alpha1.PolicyBindingApplyConfiguration, opts v1.ApplyOptions) (result *v1alpha1.PolicyBinding, err error)
+	ApplyStatus(ctx context.Context, policyBinding *applyconfigurationstsminiov1alpha1.PolicyBindingApplyConfiguration, opts v1.ApplyOptions) (result *stsminiov1alpha1.PolicyBinding, err error)
 	PolicyBindingExpansion
 }
 
 // policyBindings implements PolicyBindingInterface
 type policyBindings struct {
-	*gentype.ClientWithListAndApply[*v1alpha1.PolicyBinding, *v1alpha1.PolicyBindingList, *stsminiov1alpha1.PolicyBindingApplyConfiguration]
+	*gentype.ClientWithListAndApply[*stsminiov1alpha1.PolicyBinding, *stsminiov1alpha1.PolicyBindingList, *applyconfigurationstsminiov1alpha1.PolicyBindingApplyConfiguration]
 }
 
 // newPolicyBindings returns a PolicyBindings
 func newPolicyBindings(c *StsV1alpha1Client, namespace string) *policyBindings {
 	return &policyBindings{
-		gentype.NewClientWithListAndApply[*v1alpha1.PolicyBinding, *v1alpha1.PolicyBindingList, *stsminiov1alpha1.PolicyBindingApplyConfiguration](
+		gentype.NewClientWithListAndApply[*stsminiov1alpha1.PolicyBinding, *stsminiov1alpha1.PolicyBindingList, *applyconfigurationstsminiov1alpha1.PolicyBindingApplyConfiguration](
 			"policybindings",
 			c.RESTClient(),
 			scheme.ParameterCodec,
 			namespace,
-			func() *v1alpha1.PolicyBinding { return &v1alpha1.PolicyBinding{} },
-			func() *v1alpha1.PolicyBindingList { return &v1alpha1.PolicyBindingList{} }),
+			func() *stsminiov1alpha1.PolicyBinding { return &stsminiov1alpha1.PolicyBinding{} },
+			func() *stsminiov1alpha1.PolicyBindingList { return &stsminiov1alpha1.PolicyBindingList{} },
+		),
 	}
 }
diff --git a/pkg/client/clientset/versioned/typed/sts.min.io/v1alpha1/sts.min.io_client.go b/pkg/client/clientset/versioned/typed/sts.min.io/v1alpha1/sts.min.io_client.go
index 630ded7f..e4111836 100644
--- a/pkg/client/clientset/versioned/typed/sts.min.io/v1alpha1/sts.min.io_client.go
+++ b/pkg/client/clientset/versioned/typed/sts.min.io/v1alpha1/sts.min.io_client.go
@@ -19,10 +19,10 @@
 package v1alpha1
 
 import (
-	"net/http"
+	http "net/http"
 
-	v1alpha1 "github.com/minio/operator/pkg/apis/sts.min.io/v1alpha1"
-	"github.com/minio/operator/pkg/client/clientset/versioned/scheme"
+	stsminiov1alpha1 "github.com/minio/operator/pkg/apis/sts.min.io/v1alpha1"
+	scheme "github.com/minio/operator/pkg/client/clientset/versioned/scheme"
 	rest "k8s.io/client-go/rest"
 )
 
@@ -85,10 +85,10 @@ func New(c rest.Interface) *StsV1alpha1Client {
 }
 
 func setConfigDefaults(config *rest.Config) error {
-	gv := v1alpha1.SchemeGroupVersion
+	gv := stsminiov1alpha1.SchemeGroupVersion
 	config.GroupVersion = &gv
 	config.APIPath = "/apis"
-	config.NegotiatedSerializer = scheme.Codecs.WithoutConversion()
+	config.NegotiatedSerializer = rest.CodecFactoryForGeneratedClient(scheme.Scheme, scheme.Codecs).WithoutConversion()
 
 	if config.UserAgent == "" {
 		config.UserAgent = rest.DefaultKubernetesUserAgent()
diff --git a/pkg/client/clientset/versioned/typed/sts.min.io/v1beta1/fake/fake_policybinding.go b/pkg/client/clientset/versioned/typed/sts.min.io/v1beta1/fake/fake_policybinding.go
index da7eab93..e925991d 100644
--- a/pkg/client/clientset/versioned/typed/sts.min.io/v1beta1/fake/fake_policybinding.go
+++ b/pkg/client/clientset/versioned/typed/sts.min.io/v1beta1/fake/fake_policybinding.go
@@ -19,179 +19,35 @@
 package fake
 
 import (
-	"context"
-	json "encoding/json"
-	"fmt"
-
 	v1beta1 "github.com/minio/operator/pkg/apis/sts.min.io/v1beta1"
 	stsminiov1beta1 "github.com/minio/operator/pkg/client/applyconfiguration/sts.min.io/v1beta1"
-	v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
-	labels "k8s.io/apimachinery/pkg/labels"
-	types "k8s.io/apimachinery/pkg/types"
-	watch "k8s.io/apimachinery/pkg/watch"
-	testing "k8s.io/client-go/testing"
+	typedstsminiov1beta1 "github.com/minio/operator/pkg/client/clientset/versioned/typed/sts.min.io/v1beta1"
+	gentype "k8s.io/client-go/gentype"
 )
 
-// FakePolicyBindings implements PolicyBindingInterface
-type FakePolicyBindings struct {
+// fakePolicyBindings implements PolicyBindingInterface
+type fakePolicyBindings struct {
+	*gentype.FakeClientWithListAndApply[*v1beta1.PolicyBinding, *v1beta1.PolicyBindingList, *stsminiov1beta1.PolicyBindingApplyConfiguration]
 	Fake *FakeStsV1beta1
-	ns   string
-}
-
-var policybindingsResource = v1beta1.SchemeGroupVersion.WithResource("policybindings")
-
-var policybindingsKind = v1beta1.SchemeGroupVersion.WithKind("PolicyBinding")
-
-// Get takes name of the policyBinding, and returns the corresponding policyBinding object, and an error if there is any.
-func (c *FakePolicyBindings) Get(ctx context.Context, name string, options v1.GetOptions) (result *v1beta1.PolicyBinding, err error) {
-	emptyResult := &v1beta1.PolicyBinding{}
-	obj, err := c.Fake.
-		Invokes(testing.NewGetActionWithOptions(policybindingsResource, c.ns, name, options), emptyResult)
-
-	if obj == nil {
-		return emptyResult, err
-	}
-	return obj.(*v1beta1.PolicyBinding), err
-}
-
-// List takes label and field selectors, and returns the list of PolicyBindings that match those selectors.
-func (c *FakePolicyBindings) List(ctx context.Context, opts v1.ListOptions) (result *v1beta1.PolicyBindingList, err error) {
-	emptyResult := &v1beta1.PolicyBindingList{}
-	obj, err := c.Fake.
-		Invokes(testing.NewListActionWithOptions(policybindingsResource, policybindingsKind, c.ns, opts), emptyResult)
-
-	if obj == nil {
-		return emptyResult, err
-	}
-
-	label, _, _ := testing.ExtractFromListOptions(opts)
-	if label == nil {
-		label = labels.Everything()
-	}
-	list := &v1beta1.PolicyBindingList{ListMeta: obj.(*v1beta1.PolicyBindingList).ListMeta}
-	for _, item := range obj.(*v1beta1.PolicyBindingList).Items {
-		if label.Matches(labels.Set(item.Labels)) {
-			list.Items = append(list.Items, item)
-		}
-	}
-	return list, err
-}
-
-// Watch returns a watch.Interface that watches the requested policyBindings.
-func (c *FakePolicyBindings) Watch(ctx context.Context, opts v1.ListOptions) (watch.Interface, error) {
-	return c.Fake.
-		InvokesWatch(testing.NewWatchActionWithOptions(policybindingsResource, c.ns, opts))
-
-}
-
-// Create takes the representation of a policyBinding and creates it.  Returns the server's representation of the policyBinding, and an error, if there is any.
-func (c *FakePolicyBindings) Create(ctx context.Context, policyBinding *v1beta1.PolicyBinding, opts v1.CreateOptions) (result *v1beta1.PolicyBinding, err error) {
-	emptyResult := &v1beta1.PolicyBinding{}
-	obj, err := c.Fake.
-		Invokes(testing.NewCreateActionWithOptions(policybindingsResource, c.ns, policyBinding, opts), emptyResult)
-
-	if obj == nil {
-		return emptyResult, err
-	}
-	return obj.(*v1beta1.PolicyBinding), err
-}
-
-// Update takes the representation of a policyBinding and updates it. Returns the server's representation of the policyBinding, and an error, if there is any.
-func (c *FakePolicyBindings) Update(ctx context.Context, policyBinding *v1beta1.PolicyBinding, opts v1.UpdateOptions) (result *v1beta1.PolicyBinding, err error) {
-	emptyResult := &v1beta1.PolicyBinding{}
-	obj, err := c.Fake.
-		Invokes(testing.NewUpdateActionWithOptions(policybindingsResource, c.ns, policyBinding, opts), emptyResult)
-
-	if obj == nil {
-		return emptyResult, err
-	}
-	return obj.(*v1beta1.PolicyBinding), err
 }
 
-// UpdateStatus was generated because the type contains a Status member.
-// Add a +genclient:noStatus comment above the type to avoid generating UpdateStatus().
-func (c *FakePolicyBindings) UpdateStatus(ctx context.Context, policyBinding *v1beta1.PolicyBinding, opts v1.UpdateOptions) (result *v1beta1.PolicyBinding, err error) {
-	emptyResult := &v1beta1.PolicyBinding{}
-	obj, err := c.Fake.
-		Invokes(testing.NewUpdateSubresourceActionWithOptions(policybindingsResource, "status", c.ns, policyBinding, opts), emptyResult)
-
-	if obj == nil {
-		return emptyResult, err
-	}
-	return obj.(*v1beta1.PolicyBinding), err
-}
-
-// Delete takes name of the policyBinding and deletes it. Returns an error if one occurs.
-func (c *FakePolicyBindings) Delete(ctx context.Context, name string, opts v1.DeleteOptions) error {
-	_, err := c.Fake.
-		Invokes(testing.NewDeleteActionWithOptions(policybindingsResource, c.ns, name, opts), &v1beta1.PolicyBinding{})
-
-	return err
-}
-
-// DeleteCollection deletes a collection of objects.
-func (c *FakePolicyBindings) DeleteCollection(ctx context.Context, opts v1.DeleteOptions, listOpts v1.ListOptions) error {
-	action := testing.NewDeleteCollectionActionWithOptions(policybindingsResource, c.ns, opts, listOpts)
-
-	_, err := c.Fake.Invokes(action, &v1beta1.PolicyBindingList{})
-	return err
-}
-
-// Patch applies the patch and returns the patched policyBinding.
-func (c *FakePolicyBindings) Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts v1.PatchOptions, subresources ...string) (result *v1beta1.PolicyBinding, err error) {
-	emptyResult := &v1beta1.PolicyBinding{}
-	obj, err := c.Fake.
-		Invokes(testing.NewPatchSubresourceActionWithOptions(policybindingsResource, c.ns, name, pt, data, opts, subresources...), emptyResult)
-
-	if obj == nil {
-		return emptyResult, err
-	}
-	return obj.(*v1beta1.PolicyBinding), err
-}
-
-// Apply takes the given apply declarative configuration, applies it and returns the applied policyBinding.
-func (c *FakePolicyBindings) Apply(ctx context.Context, policyBinding *stsminiov1beta1.PolicyBindingApplyConfiguration, opts v1.ApplyOptions) (result *v1beta1.PolicyBinding, err error) {
-	if policyBinding == nil {
-		return nil, fmt.Errorf("policyBinding provided to Apply must not be nil")
-	}
-	data, err := json.Marshal(policyBinding)
-	if err != nil {
-		return nil, err
-	}
-	name := policyBinding.Name
-	if name == nil {
-		return nil, fmt.Errorf("policyBinding.Name must be provided to Apply")
-	}
-	emptyResult := &v1beta1.PolicyBinding{}
-	obj, err := c.Fake.
-		Invokes(testing.NewPatchSubresourceActionWithOptions(policybindingsResource, c.ns, *name, types.ApplyPatchType, data, opts.ToPatchOptions()), emptyResult)
-
-	if obj == nil {
-		return emptyResult, err
-	}
-	return obj.(*v1beta1.PolicyBinding), err
-}
-
-// ApplyStatus was generated because the type contains a Status member.
-// Add a +genclient:noStatus comment above the type to avoid generating ApplyStatus().
-func (c *FakePolicyBindings) ApplyStatus(ctx context.Context, policyBinding *stsminiov1beta1.PolicyBindingApplyConfiguration, opts v1.ApplyOptions) (result *v1beta1.PolicyBinding, err error) {
-	if policyBinding == nil {
-		return nil, fmt.Errorf("policyBinding provided to Apply must not be nil")
-	}
-	data, err := json.Marshal(policyBinding)
-	if err != nil {
-		return nil, err
-	}
-	name := policyBinding.Name
-	if name == nil {
-		return nil, fmt.Errorf("policyBinding.Name must be provided to Apply")
-	}
-	emptyResult := &v1beta1.PolicyBinding{}
-	obj, err := c.Fake.
-		Invokes(testing.NewPatchSubresourceActionWithOptions(policybindingsResource, c.ns, *name, types.ApplyPatchType, data, opts.ToPatchOptions(), "status"), emptyResult)
-
-	if obj == nil {
-		return emptyResult, err
+func newFakePolicyBindings(fake *FakeStsV1beta1, namespace string) typedstsminiov1beta1.PolicyBindingInterface {
+	return &fakePolicyBindings{
+		gentype.NewFakeClientWithListAndApply[*v1beta1.PolicyBinding, *v1beta1.PolicyBindingList, *stsminiov1beta1.PolicyBindingApplyConfiguration](
+			fake.Fake,
+			namespace,
+			v1beta1.SchemeGroupVersion.WithResource("policybindings"),
+			v1beta1.SchemeGroupVersion.WithKind("PolicyBinding"),
+			func() *v1beta1.PolicyBinding { return &v1beta1.PolicyBinding{} },
+			func() *v1beta1.PolicyBindingList { return &v1beta1.PolicyBindingList{} },
+			func(dst, src *v1beta1.PolicyBindingList) { dst.ListMeta = src.ListMeta },
+			func(list *v1beta1.PolicyBindingList) []*v1beta1.PolicyBinding {
+				return gentype.ToPointerSlice(list.Items)
+			},
+			func(list *v1beta1.PolicyBindingList, items []*v1beta1.PolicyBinding) {
+				list.Items = gentype.FromPointerSlice(items)
+			},
+		),
+		fake,
 	}
-	return obj.(*v1beta1.PolicyBinding), err
 }
diff --git a/pkg/client/clientset/versioned/typed/sts.min.io/v1beta1/fake/fake_sts.min.io_client.go b/pkg/client/clientset/versioned/typed/sts.min.io/v1beta1/fake/fake_sts.min.io_client.go
index 03173a07..0384ddd7 100644
--- a/pkg/client/clientset/versioned/typed/sts.min.io/v1beta1/fake/fake_sts.min.io_client.go
+++ b/pkg/client/clientset/versioned/typed/sts.min.io/v1beta1/fake/fake_sts.min.io_client.go
@@ -29,7 +29,7 @@ type FakeStsV1beta1 struct {
 }
 
 func (c *FakeStsV1beta1) PolicyBindings(namespace string) v1beta1.PolicyBindingInterface {
-	return &FakePolicyBindings{c, namespace}
+	return newFakePolicyBindings(c, namespace)
 }
 
 // RESTClient returns a RESTClient that is used to communicate
diff --git a/pkg/client/clientset/versioned/typed/sts.min.io/v1beta1/policybinding.go b/pkg/client/clientset/versioned/typed/sts.min.io/v1beta1/policybinding.go
index 02391c26..c570ae66 100644
--- a/pkg/client/clientset/versioned/typed/sts.min.io/v1beta1/policybinding.go
+++ b/pkg/client/clientset/versioned/typed/sts.min.io/v1beta1/policybinding.go
@@ -19,10 +19,10 @@
 package v1beta1
 
 import (
-	"context"
+	context "context"
 
-	v1beta1 "github.com/minio/operator/pkg/apis/sts.min.io/v1beta1"
-	stsminiov1beta1 "github.com/minio/operator/pkg/client/applyconfiguration/sts.min.io/v1beta1"
+	stsminiov1beta1 "github.com/minio/operator/pkg/apis/sts.min.io/v1beta1"
+	applyconfigurationstsminiov1beta1 "github.com/minio/operator/pkg/client/applyconfiguration/sts.min.io/v1beta1"
 	scheme "github.com/minio/operator/pkg/client/clientset/versioned/scheme"
 	v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
 	types "k8s.io/apimachinery/pkg/types"
@@ -38,36 +38,37 @@ type PolicyBindingsGetter interface {
 
 // PolicyBindingInterface has methods to work with PolicyBinding resources.
 type PolicyBindingInterface interface {
-	Create(ctx context.Context, policyBinding *v1beta1.PolicyBinding, opts v1.CreateOptions) (*v1beta1.PolicyBinding, error)
-	Update(ctx context.Context, policyBinding *v1beta1.PolicyBinding, opts v1.UpdateOptions) (*v1beta1.PolicyBinding, error)
+	Create(ctx context.Context, policyBinding *stsminiov1beta1.PolicyBinding, opts v1.CreateOptions) (*stsminiov1beta1.PolicyBinding, error)
+	Update(ctx context.Context, policyBinding *stsminiov1beta1.PolicyBinding, opts v1.UpdateOptions) (*stsminiov1beta1.PolicyBinding, error)
 	// Add a +genclient:noStatus comment above the type to avoid generating UpdateStatus().
-	UpdateStatus(ctx context.Context, policyBinding *v1beta1.PolicyBinding, opts v1.UpdateOptions) (*v1beta1.PolicyBinding, error)
+	UpdateStatus(ctx context.Context, policyBinding *stsminiov1beta1.PolicyBinding, opts v1.UpdateOptions) (*stsminiov1beta1.PolicyBinding, error)
 	Delete(ctx context.Context, name string, opts v1.DeleteOptions) error
 	DeleteCollection(ctx context.Context, opts v1.DeleteOptions, listOpts v1.ListOptions) error
-	Get(ctx context.Context, name string, opts v1.GetOptions) (*v1beta1.PolicyBinding, error)
-	List(ctx context.Context, opts v1.ListOptions) (*v1beta1.PolicyBindingList, error)
+	Get(ctx context.Context, name string, opts v1.GetOptions) (*stsminiov1beta1.PolicyBinding, error)
+	List(ctx context.Context, opts v1.ListOptions) (*stsminiov1beta1.PolicyBindingList, error)
 	Watch(ctx context.Context, opts v1.ListOptions) (watch.Interface, error)
-	Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts v1.PatchOptions, subresources ...string) (result *v1beta1.PolicyBinding, err error)
-	Apply(ctx context.Context, policyBinding *stsminiov1beta1.PolicyBindingApplyConfiguration, opts v1.ApplyOptions) (result *v1beta1.PolicyBinding, err error)
+	Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts v1.PatchOptions, subresources ...string) (result *stsminiov1beta1.PolicyBinding, err error)
+	Apply(ctx context.Context, policyBinding *applyconfigurationstsminiov1beta1.PolicyBindingApplyConfiguration, opts v1.ApplyOptions) (result *stsminiov1beta1.PolicyBinding, err error)
 	// Add a +genclient:noStatus comment above the type to avoid generating ApplyStatus().
-	ApplyStatus(ctx context.Context, policyBinding *stsminiov1beta1.PolicyBindingApplyConfiguration, opts v1.ApplyOptions) (result *v1beta1.PolicyBinding, err error)
+	ApplyStatus(ctx context.Context, policyBinding *applyconfigurationstsminiov1beta1.PolicyBindingApplyConfiguration, opts v1.ApplyOptions) (result *stsminiov1beta1.PolicyBinding, err error)
 	PolicyBindingExpansion
 }
 
 // policyBindings implements PolicyBindingInterface
 type policyBindings struct {
-	*gentype.ClientWithListAndApply[*v1beta1.PolicyBinding, *v1beta1.PolicyBindingList, *stsminiov1beta1.PolicyBindingApplyConfiguration]
+	*gentype.ClientWithListAndApply[*stsminiov1beta1.PolicyBinding, *stsminiov1beta1.PolicyBindingList, *applyconfigurationstsminiov1beta1.PolicyBindingApplyConfiguration]
 }
 
 // newPolicyBindings returns a PolicyBindings
 func newPolicyBindings(c *StsV1beta1Client, namespace string) *policyBindings {
 	return &policyBindings{
-		gentype.NewClientWithListAndApply[*v1beta1.PolicyBinding, *v1beta1.PolicyBindingList, *stsminiov1beta1.PolicyBindingApplyConfiguration](
+		gentype.NewClientWithListAndApply[*stsminiov1beta1.PolicyBinding, *stsminiov1beta1.PolicyBindingList, *applyconfigurationstsminiov1beta1.PolicyBindingApplyConfiguration](
 			"policybindings",
 			c.RESTClient(),
 			scheme.ParameterCodec,
 			namespace,
-			func() *v1beta1.PolicyBinding { return &v1beta1.PolicyBinding{} },
-			func() *v1beta1.PolicyBindingList { return &v1beta1.PolicyBindingList{} }),
+			func() *stsminiov1beta1.PolicyBinding { return &stsminiov1beta1.PolicyBinding{} },
+			func() *stsminiov1beta1.PolicyBindingList { return &stsminiov1beta1.PolicyBindingList{} },
+		),
 	}
 }
diff --git a/pkg/client/clientset/versioned/typed/sts.min.io/v1beta1/sts.min.io_client.go b/pkg/client/clientset/versioned/typed/sts.min.io/v1beta1/sts.min.io_client.go
index a278d6a2..dfbec7c8 100644
--- a/pkg/client/clientset/versioned/typed/sts.min.io/v1beta1/sts.min.io_client.go
+++ b/pkg/client/clientset/versioned/typed/sts.min.io/v1beta1/sts.min.io_client.go
@@ -19,10 +19,10 @@
 package v1beta1
 
 import (
-	"net/http"
+	http "net/http"
 
-	v1beta1 "github.com/minio/operator/pkg/apis/sts.min.io/v1beta1"
-	"github.com/minio/operator/pkg/client/clientset/versioned/scheme"
+	stsminiov1beta1 "github.com/minio/operator/pkg/apis/sts.min.io/v1beta1"
+	scheme "github.com/minio/operator/pkg/client/clientset/versioned/scheme"
 	rest "k8s.io/client-go/rest"
 )
 
@@ -85,10 +85,10 @@ func New(c rest.Interface) *StsV1beta1Client {
 }
 
 func setConfigDefaults(config *rest.Config) error {
-	gv := v1beta1.SchemeGroupVersion
+	gv := stsminiov1beta1.SchemeGroupVersion
 	config.GroupVersion = &gv
 	config.APIPath = "/apis"
-	config.NegotiatedSerializer = scheme.Codecs.WithoutConversion()
+	config.NegotiatedSerializer = rest.CodecFactoryForGeneratedClient(scheme.Scheme, scheme.Codecs).WithoutConversion()
 
 	if config.UserAgent == "" {
 		config.UserAgent = rest.DefaultKubernetesUserAgent()
diff --git a/pkg/client/informers/externalversions/generic.go b/pkg/client/informers/externalversions/generic.go
index c871aeb7..c5e126f0 100644
--- a/pkg/client/informers/externalversions/generic.go
+++ b/pkg/client/informers/externalversions/generic.go
@@ -19,7 +19,7 @@
 package externalversions
 
 import (
-	"fmt"
+	fmt "fmt"
 
 	v2 "github.com/minio/operator/pkg/apis/minio.min.io/v2"
 	v1alpha1 "github.com/minio/operator/pkg/apis/sts.min.io/v1alpha1"
diff --git a/pkg/client/informers/externalversions/minio.min.io/v2/tenant.go b/pkg/client/informers/externalversions/minio.min.io/v2/tenant.go
index 1c88b361..8589a4f9 100644
--- a/pkg/client/informers/externalversions/minio.min.io/v2/tenant.go
+++ b/pkg/client/informers/externalversions/minio.min.io/v2/tenant.go
@@ -19,13 +19,13 @@
 package v2
 
 import (
-	"context"
+	context "context"
 	time "time"
 
-	miniominiov2 "github.com/minio/operator/pkg/apis/minio.min.io/v2"
+	apisminiominiov2 "github.com/minio/operator/pkg/apis/minio.min.io/v2"
 	versioned "github.com/minio/operator/pkg/client/clientset/versioned"
 	internalinterfaces "github.com/minio/operator/pkg/client/informers/externalversions/internalinterfaces"
-	v2 "github.com/minio/operator/pkg/client/listers/minio.min.io/v2"
+	miniominiov2 "github.com/minio/operator/pkg/client/listers/minio.min.io/v2"
 	v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
 	runtime "k8s.io/apimachinery/pkg/runtime"
 	watch "k8s.io/apimachinery/pkg/watch"
@@ -36,7 +36,7 @@ import (
 // Tenants.
 type TenantInformer interface {
 	Informer() cache.SharedIndexInformer
-	Lister() v2.TenantLister
+	Lister() miniominiov2.TenantLister
 }
 
 type tenantInformer struct {
@@ -71,7 +71,7 @@ func NewFilteredTenantInformer(client versioned.Interface, namespace string, res
 				return client.MinioV2().Tenants(namespace).Watch(context.TODO(), options)
 			},
 		},
-		&miniominiov2.Tenant{},
+		&apisminiominiov2.Tenant{},
 		resyncPeriod,
 		indexers,
 	)
@@ -82,9 +82,9 @@ func (f *tenantInformer) defaultInformer(client versioned.Interface, resyncPerio
 }
 
 func (f *tenantInformer) Informer() cache.SharedIndexInformer {
-	return f.factory.InformerFor(&miniominiov2.Tenant{}, f.defaultInformer)
+	return f.factory.InformerFor(&apisminiominiov2.Tenant{}, f.defaultInformer)
 }
 
-func (f *tenantInformer) Lister() v2.TenantLister {
-	return v2.NewTenantLister(f.Informer().GetIndexer())
+func (f *tenantInformer) Lister() miniominiov2.TenantLister {
+	return miniominiov2.NewTenantLister(f.Informer().GetIndexer())
 }
diff --git a/pkg/client/informers/externalversions/sts.min.io/v1alpha1/policybinding.go b/pkg/client/informers/externalversions/sts.min.io/v1alpha1/policybinding.go
index 9672ce01..97d26c7a 100644
--- a/pkg/client/informers/externalversions/sts.min.io/v1alpha1/policybinding.go
+++ b/pkg/client/informers/externalversions/sts.min.io/v1alpha1/policybinding.go
@@ -19,13 +19,13 @@
 package v1alpha1
 
 import (
-	"context"
+	context "context"
 	time "time"
 
-	stsminiov1alpha1 "github.com/minio/operator/pkg/apis/sts.min.io/v1alpha1"
+	apisstsminiov1alpha1 "github.com/minio/operator/pkg/apis/sts.min.io/v1alpha1"
 	versioned "github.com/minio/operator/pkg/client/clientset/versioned"
 	internalinterfaces "github.com/minio/operator/pkg/client/informers/externalversions/internalinterfaces"
-	v1alpha1 "github.com/minio/operator/pkg/client/listers/sts.min.io/v1alpha1"
+	stsminiov1alpha1 "github.com/minio/operator/pkg/client/listers/sts.min.io/v1alpha1"
 	v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
 	runtime "k8s.io/apimachinery/pkg/runtime"
 	watch "k8s.io/apimachinery/pkg/watch"
@@ -36,7 +36,7 @@ import (
 // PolicyBindings.
 type PolicyBindingInformer interface {
 	Informer() cache.SharedIndexInformer
-	Lister() v1alpha1.PolicyBindingLister
+	Lister() stsminiov1alpha1.PolicyBindingLister
 }
 
 type policyBindingInformer struct {
@@ -71,7 +71,7 @@ func NewFilteredPolicyBindingInformer(client versioned.Interface, namespace stri
 				return client.StsV1alpha1().PolicyBindings(namespace).Watch(context.TODO(), options)
 			},
 		},
-		&stsminiov1alpha1.PolicyBinding{},
+		&apisstsminiov1alpha1.PolicyBinding{},
 		resyncPeriod,
 		indexers,
 	)
@@ -82,9 +82,9 @@ func (f *policyBindingInformer) defaultInformer(client versioned.Interface, resy
 }
 
 func (f *policyBindingInformer) Informer() cache.SharedIndexInformer {
-	return f.factory.InformerFor(&stsminiov1alpha1.PolicyBinding{}, f.defaultInformer)
+	return f.factory.InformerFor(&apisstsminiov1alpha1.PolicyBinding{}, f.defaultInformer)
 }
 
-func (f *policyBindingInformer) Lister() v1alpha1.PolicyBindingLister {
-	return v1alpha1.NewPolicyBindingLister(f.Informer().GetIndexer())
+func (f *policyBindingInformer) Lister() stsminiov1alpha1.PolicyBindingLister {
+	return stsminiov1alpha1.NewPolicyBindingLister(f.Informer().GetIndexer())
 }
diff --git a/pkg/client/informers/externalversions/sts.min.io/v1beta1/policybinding.go b/pkg/client/informers/externalversions/sts.min.io/v1beta1/policybinding.go
index a6e21af6..747ee4e4 100644
--- a/pkg/client/informers/externalversions/sts.min.io/v1beta1/policybinding.go
+++ b/pkg/client/informers/externalversions/sts.min.io/v1beta1/policybinding.go
@@ -19,13 +19,13 @@
 package v1beta1
 
 import (
-	"context"
+	context "context"
 	time "time"
 
-	stsminiov1beta1 "github.com/minio/operator/pkg/apis/sts.min.io/v1beta1"
+	apisstsminiov1beta1 "github.com/minio/operator/pkg/apis/sts.min.io/v1beta1"
 	versioned "github.com/minio/operator/pkg/client/clientset/versioned"
 	internalinterfaces "github.com/minio/operator/pkg/client/informers/externalversions/internalinterfaces"
-	v1beta1 "github.com/minio/operator/pkg/client/listers/sts.min.io/v1beta1"
+	stsminiov1beta1 "github.com/minio/operator/pkg/client/listers/sts.min.io/v1beta1"
 	v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
 	runtime "k8s.io/apimachinery/pkg/runtime"
 	watch "k8s.io/apimachinery/pkg/watch"
@@ -36,7 +36,7 @@ import (
 // PolicyBindings.
 type PolicyBindingInformer interface {
 	Informer() cache.SharedIndexInformer
-	Lister() v1beta1.PolicyBindingLister
+	Lister() stsminiov1beta1.PolicyBindingLister
 }
 
 type policyBindingInformer struct {
@@ -71,7 +71,7 @@ func NewFilteredPolicyBindingInformer(client versioned.Interface, namespace stri
 				return client.StsV1beta1().PolicyBindings(namespace).Watch(context.TODO(), options)
 			},
 		},
-		&stsminiov1beta1.PolicyBinding{},
+		&apisstsminiov1beta1.PolicyBinding{},
 		resyncPeriod,
 		indexers,
 	)
@@ -82,9 +82,9 @@ func (f *policyBindingInformer) defaultInformer(client versioned.Interface, resy
 }
 
 func (f *policyBindingInformer) Informer() cache.SharedIndexInformer {
-	return f.factory.InformerFor(&stsminiov1beta1.PolicyBinding{}, f.defaultInformer)
+	return f.factory.InformerFor(&apisstsminiov1beta1.PolicyBinding{}, f.defaultInformer)
 }
 
-func (f *policyBindingInformer) Lister() v1beta1.PolicyBindingLister {
-	return v1beta1.NewPolicyBindingLister(f.Informer().GetIndexer())
+func (f *policyBindingInformer) Lister() stsminiov1beta1.PolicyBindingLister {
+	return stsminiov1beta1.NewPolicyBindingLister(f.Informer().GetIndexer())
 }
diff --git a/pkg/client/listers/minio.min.io/v2/tenant.go b/pkg/client/listers/minio.min.io/v2/tenant.go
index d30f5b28..fc1d9c14 100644
--- a/pkg/client/listers/minio.min.io/v2/tenant.go
+++ b/pkg/client/listers/minio.min.io/v2/tenant.go
@@ -19,10 +19,10 @@
 package v2
 
 import (
-	v2 "github.com/minio/operator/pkg/apis/minio.min.io/v2"
-	"k8s.io/apimachinery/pkg/labels"
-	"k8s.io/client-go/listers"
-	"k8s.io/client-go/tools/cache"
+	miniominiov2 "github.com/minio/operator/pkg/apis/minio.min.io/v2"
+	labels "k8s.io/apimachinery/pkg/labels"
+	listers "k8s.io/client-go/listers"
+	cache "k8s.io/client-go/tools/cache"
 )
 
 // TenantLister helps list Tenants.
@@ -30,7 +30,7 @@ import (
 type TenantLister interface {
 	// List lists all Tenants in the indexer.
 	// Objects returned here must be treated as read-only.
-	List(selector labels.Selector) (ret []*v2.Tenant, err error)
+	List(selector labels.Selector) (ret []*miniominiov2.Tenant, err error)
 	// Tenants returns an object that can list and get Tenants.
 	Tenants(namespace string) TenantNamespaceLister
 	TenantListerExpansion
@@ -38,17 +38,17 @@ type TenantLister interface {
 
 // tenantLister implements the TenantLister interface.
 type tenantLister struct {
-	listers.ResourceIndexer[*v2.Tenant]
+	listers.ResourceIndexer[*miniominiov2.Tenant]
 }
 
 // NewTenantLister returns a new TenantLister.
 func NewTenantLister(indexer cache.Indexer) TenantLister {
-	return &tenantLister{listers.New[*v2.Tenant](indexer, v2.Resource("tenant"))}
+	return &tenantLister{listers.New[*miniominiov2.Tenant](indexer, miniominiov2.Resource("tenant"))}
 }
 
 // Tenants returns an object that can list and get Tenants.
 func (s *tenantLister) Tenants(namespace string) TenantNamespaceLister {
-	return tenantNamespaceLister{listers.NewNamespaced[*v2.Tenant](s.ResourceIndexer, namespace)}
+	return tenantNamespaceLister{listers.NewNamespaced[*miniominiov2.Tenant](s.ResourceIndexer, namespace)}
 }
 
 // TenantNamespaceLister helps list and get Tenants.
@@ -56,15 +56,15 @@ func (s *tenantLister) Tenants(namespace string) TenantNamespaceLister {
 type TenantNamespaceLister interface {
 	// List lists all Tenants in the indexer for a given namespace.
 	// Objects returned here must be treated as read-only.
-	List(selector labels.Selector) (ret []*v2.Tenant, err error)
+	List(selector labels.Selector) (ret []*miniominiov2.Tenant, err error)
 	// Get retrieves the Tenant from the indexer for a given namespace and name.
 	// Objects returned here must be treated as read-only.
-	Get(name string) (*v2.Tenant, error)
+	Get(name string) (*miniominiov2.Tenant, error)
 	TenantNamespaceListerExpansion
 }
 
 // tenantNamespaceLister implements the TenantNamespaceLister
 // interface.
 type tenantNamespaceLister struct {
-	listers.ResourceIndexer[*v2.Tenant]
+	listers.ResourceIndexer[*miniominiov2.Tenant]
 }
diff --git a/pkg/client/listers/sts.min.io/v1alpha1/policybinding.go b/pkg/client/listers/sts.min.io/v1alpha1/policybinding.go
index 7e17b14e..2d8a7312 100644
--- a/pkg/client/listers/sts.min.io/v1alpha1/policybinding.go
+++ b/pkg/client/listers/sts.min.io/v1alpha1/policybinding.go
@@ -19,10 +19,10 @@
 package v1alpha1
 
 import (
-	v1alpha1 "github.com/minio/operator/pkg/apis/sts.min.io/v1alpha1"
-	"k8s.io/apimachinery/pkg/labels"
-	"k8s.io/client-go/listers"
-	"k8s.io/client-go/tools/cache"
+	stsminiov1alpha1 "github.com/minio/operator/pkg/apis/sts.min.io/v1alpha1"
+	labels "k8s.io/apimachinery/pkg/labels"
+	listers "k8s.io/client-go/listers"
+	cache "k8s.io/client-go/tools/cache"
 )
 
 // PolicyBindingLister helps list PolicyBindings.
@@ -30,7 +30,7 @@ import (
 type PolicyBindingLister interface {
 	// List lists all PolicyBindings in the indexer.
 	// Objects returned here must be treated as read-only.
-	List(selector labels.Selector) (ret []*v1alpha1.PolicyBinding, err error)
+	List(selector labels.Selector) (ret []*stsminiov1alpha1.PolicyBinding, err error)
 	// PolicyBindings returns an object that can list and get PolicyBindings.
 	PolicyBindings(namespace string) PolicyBindingNamespaceLister
 	PolicyBindingListerExpansion
@@ -38,17 +38,17 @@ type PolicyBindingLister interface {
 
 // policyBindingLister implements the PolicyBindingLister interface.
 type policyBindingLister struct {
-	listers.ResourceIndexer[*v1alpha1.PolicyBinding]
+	listers.ResourceIndexer[*stsminiov1alpha1.PolicyBinding]
 }
 
 // NewPolicyBindingLister returns a new PolicyBindingLister.
 func NewPolicyBindingLister(indexer cache.Indexer) PolicyBindingLister {
-	return &policyBindingLister{listers.New[*v1alpha1.PolicyBinding](indexer, v1alpha1.Resource("policybinding"))}
+	return &policyBindingLister{listers.New[*stsminiov1alpha1.PolicyBinding](indexer, stsminiov1alpha1.Resource("policybinding"))}
 }
 
 // PolicyBindings returns an object that can list and get PolicyBindings.
 func (s *policyBindingLister) PolicyBindings(namespace string) PolicyBindingNamespaceLister {
-	return policyBindingNamespaceLister{listers.NewNamespaced[*v1alpha1.PolicyBinding](s.ResourceIndexer, namespace)}
+	return policyBindingNamespaceLister{listers.NewNamespaced[*stsminiov1alpha1.PolicyBinding](s.ResourceIndexer, namespace)}
 }
 
 // PolicyBindingNamespaceLister helps list and get PolicyBindings.
@@ -56,15 +56,15 @@ func (s *policyBindingLister) PolicyBindings(namespace string) PolicyBindingName
 type PolicyBindingNamespaceLister interface {
 	// List lists all PolicyBindings in the indexer for a given namespace.
 	// Objects returned here must be treated as read-only.
-	List(selector labels.Selector) (ret []*v1alpha1.PolicyBinding, err error)
+	List(selector labels.Selector) (ret []*stsminiov1alpha1.PolicyBinding, err error)
 	// Get retrieves the PolicyBinding from the indexer for a given namespace and name.
 	// Objects returned here must be treated as read-only.
-	Get(name string) (*v1alpha1.PolicyBinding, error)
+	Get(name string) (*stsminiov1alpha1.PolicyBinding, error)
 	PolicyBindingNamespaceListerExpansion
 }
 
 // policyBindingNamespaceLister implements the PolicyBindingNamespaceLister
 // interface.
 type policyBindingNamespaceLister struct {
-	listers.ResourceIndexer[*v1alpha1.PolicyBinding]
+	listers.ResourceIndexer[*stsminiov1alpha1.PolicyBinding]
 }
diff --git a/pkg/client/listers/sts.min.io/v1beta1/policybinding.go b/pkg/client/listers/sts.min.io/v1beta1/policybinding.go
index ef2b2211..c1617de9 100644
--- a/pkg/client/listers/sts.min.io/v1beta1/policybinding.go
+++ b/pkg/client/listers/sts.min.io/v1beta1/policybinding.go
@@ -19,10 +19,10 @@
 package v1beta1
 
 import (
-	v1beta1 "github.com/minio/operator/pkg/apis/sts.min.io/v1beta1"
-	"k8s.io/apimachinery/pkg/labels"
-	"k8s.io/client-go/listers"
-	"k8s.io/client-go/tools/cache"
+	stsminiov1beta1 "github.com/minio/operator/pkg/apis/sts.min.io/v1beta1"
+	labels "k8s.io/apimachinery/pkg/labels"
+	listers "k8s.io/client-go/listers"
+	cache "k8s.io/client-go/tools/cache"
 )
 
 // PolicyBindingLister helps list PolicyBindings.
@@ -30,7 +30,7 @@ import (
 type PolicyBindingLister interface {
 	// List lists all PolicyBindings in the indexer.
 	// Objects returned here must be treated as read-only.
-	List(selector labels.Selector) (ret []*v1beta1.PolicyBinding, err error)
+	List(selector labels.Selector) (ret []*stsminiov1beta1.PolicyBinding, err error)
 	// PolicyBindings returns an object that can list and get PolicyBindings.
 	PolicyBindings(namespace string) PolicyBindingNamespaceLister
 	PolicyBindingListerExpansion
@@ -38,17 +38,17 @@ type PolicyBindingLister interface {
 
 // policyBindingLister implements the PolicyBindingLister interface.
 type policyBindingLister struct {
-	listers.ResourceIndexer[*v1beta1.PolicyBinding]
+	listers.ResourceIndexer[*stsminiov1beta1.PolicyBinding]
 }
 
 // NewPolicyBindingLister returns a new PolicyBindingLister.
 func NewPolicyBindingLister(indexer cache.Indexer) PolicyBindingLister {
-	return &policyBindingLister{listers.New[*v1beta1.PolicyBinding](indexer, v1beta1.Resource("policybinding"))}
+	return &policyBindingLister{listers.New[*stsminiov1beta1.PolicyBinding](indexer, stsminiov1beta1.Resource("policybinding"))}
 }
 
 // PolicyBindings returns an object that can list and get PolicyBindings.
 func (s *policyBindingLister) PolicyBindings(namespace string) PolicyBindingNamespaceLister {
-	return policyBindingNamespaceLister{listers.NewNamespaced[*v1beta1.PolicyBinding](s.ResourceIndexer, namespace)}
+	return policyBindingNamespaceLister{listers.NewNamespaced[*stsminiov1beta1.PolicyBinding](s.ResourceIndexer, namespace)}
 }
 
 // PolicyBindingNamespaceLister helps list and get PolicyBindings.
@@ -56,15 +56,15 @@ func (s *policyBindingLister) PolicyBindings(namespace string) PolicyBindingName
 type PolicyBindingNamespaceLister interface {
 	// List lists all PolicyBindings in the indexer for a given namespace.
 	// Objects returned here must be treated as read-only.
-	List(selector labels.Selector) (ret []*v1beta1.PolicyBinding, err error)
+	List(selector labels.Selector) (ret []*stsminiov1beta1.PolicyBinding, err error)
 	// Get retrieves the PolicyBinding from the indexer for a given namespace and name.
 	// Objects returned here must be treated as read-only.
-	Get(name string) (*v1beta1.PolicyBinding, error)
+	Get(name string) (*stsminiov1beta1.PolicyBinding, error)
 	PolicyBindingNamespaceListerExpansion
 }
 
 // policyBindingNamespaceLister implements the PolicyBindingNamespaceLister
 // interface.
 type policyBindingNamespaceLister struct {
-	listers.ResourceIndexer[*v1beta1.PolicyBinding]
+	listers.ResourceIndexer[*stsminiov1beta1.PolicyBinding]
 }
diff --git a/pkg/controller/main-controller.go b/pkg/controller/main-controller.go
index eb243c6f..4f8b70f6 100644
--- a/pkg/controller/main-controller.go
+++ b/pkg/controller/main-controller.go
@@ -813,6 +813,10 @@ func (c *Controller) syncHandler(key string) (Result, error) {
 			c.recorder.Event(tenant, corev1.EventTypeWarning, "MissingCreds", "Tenant is missing root credentials")
 			return WrapResult(Result{}, nil)
 		}
+		if k8serrors.IsNotFound(err) {
+			// if secret is not found, send event
+			c.recorder.Event(tenant, corev1.EventTypeWarning, "NotFound", err.Error())
+		}
 		return WrapResult(Result{}, err)
 	}
 	// get existing configuration from config.env
diff --git a/pkg/controller/prometheus.go b/pkg/controller/prometheus.go
index 1b231992..7af822c7 100644
--- a/pkg/controller/prometheus.go
+++ b/pkg/controller/prometheus.go
@@ -17,6 +17,8 @@ package controller
 import (
 	"context"
 	"errors"
+	"reflect"
+	"strings"
 
 	promv1 "github.com/prometheus-operator/prometheus-operator/pkg/apis/monitoring/v1"
 	promv1alpha1 "github.com/prometheus-operator/prometheus-operator/pkg/apis/monitoring/v1alpha1"
@@ -141,7 +143,7 @@ func (c *Controller) checkAndCreatePrometheusAddlConfig(ctx context.Context, ten
 
 	// If the secret is not found, create the secret
 	if k8serrors.IsNotFound(err) {
-		klog.Infof("Adding MinIO tenant Prometheus scrape config")
+		klog.Infof("Adding MinIO tenant %s/%s Prometheus scrape config", ns, tenant.Name)
 		scrapeCfgYaml, err := yaml.Marshal(&promCfg.ScrapeConfigs)
 		if err != nil {
 			return err
@@ -161,23 +163,46 @@ func (c *Controller) checkAndCreatePrometheusAddlConfig(ctx context.Context, ten
 			return err
 		}
 	} else {
-		var scrapeConfigs []configmaps.ScrapeConfig
+		var scrapeConfigs, expectedScrapeConfigs []configmaps.ScrapeConfig
 		err := yaml.Unmarshal(secret.Data[miniov2.PrometheusAddlScrapeConfigKey], &scrapeConfigs)
 		if err != nil {
 			return err
 		}
-		// Check if the scrape config is already present
-		hasScrapeConfig := false
+		// get other scrape configs
 		for _, sc := range scrapeConfigs {
-			if sc.JobName == tenant.PrometheusOperatorAddlConfigJobName() {
-				hasScrapeConfig = true
-				break
+			if !strings.HasPrefix(sc.JobName, tenant.PrometheusOperatorAddlConfigJobName()) {
+				expectedScrapeConfigs = append(expectedScrapeConfigs, sc)
 			}
 		}
-		if !hasScrapeConfig {
-			klog.Infof("Adding MinIO tenant Prometheus scrape config")
-			scrapeConfigs = append(scrapeConfigs, promCfg.ScrapeConfigs...)
-			scrapeCfgYaml, err := yaml.Marshal(scrapeConfigs)
+		ignoreScrapeConfigsIndex := len(expectedScrapeConfigs)
+		expectedScrapeConfigs = append(expectedScrapeConfigs, promCfg.ScrapeConfigs...)
+		updateScrapeConfig := false
+		if len(scrapeConfigs) != len(expectedScrapeConfigs) {
+			updateScrapeConfig = true
+		} else {
+			for i := range scrapeConfigs {
+				// can't compare that is generated by operator
+				if i < ignoreScrapeConfigsIndex {
+					continue
+				}
+				if scrapeConfigs[i].JobName != expectedScrapeConfigs[i].JobName ||
+					scrapeConfigs[i].MetricsPath != expectedScrapeConfigs[i].MetricsPath ||
+					scrapeConfigs[i].Scheme != expectedScrapeConfigs[i].Scheme ||
+					!reflect.DeepEqual(scrapeConfigs[i].TLSConfig, expectedScrapeConfigs[i].TLSConfig) ||
+					!reflect.DeepEqual(scrapeConfigs[i].StaticConfigs, expectedScrapeConfigs[i].StaticConfigs) {
+					updateScrapeConfig = true
+					break
+				}
+				accKey, _ := miniov2.GetAccessKeyFromBearerToken(scrapeConfigs[i].BearerToken, secretKey)
+				if accKey != accessKey {
+					updateScrapeConfig = true
+					break
+				}
+			}
+		}
+		if updateScrapeConfig {
+			klog.Infof("Updating MinIO tenant %s/%s Prometheus scrape config", ns, tenant.Name)
+			scrapeCfgYaml, err := yaml.Marshal(expectedScrapeConfigs)
 			if err != nil {
 				return err
 			}
@@ -224,27 +249,20 @@ func (c *Controller) deletePrometheusAddlConfig(ctx context.Context, tenant *min
 		return err
 	}
 
-	var scrapeConfigs []configmaps.ScrapeConfig
+	var scrapeConfigs, exceptedScrapeConfigs []configmaps.ScrapeConfig
 	err = yaml.Unmarshal(secret.Data[miniov2.PrometheusAddlScrapeConfigKey], &scrapeConfigs)
 	if err != nil {
 		return err
 	}
-	// Check if the scrape config is present
-	hasScrapeConfig := false
-	scIndex := -1
-	for i, sc := range scrapeConfigs {
-		if sc.JobName == tenant.PrometheusOperatorAddlConfigJobName() {
-			hasScrapeConfig = true
-			scIndex = i
-			break
+	for _, sc := range scrapeConfigs {
+		if !strings.HasPrefix(sc.JobName, tenant.PrometheusOperatorAddlConfigJobName()) {
+			exceptedScrapeConfigs = append(exceptedScrapeConfigs, sc)
 		}
 	}
-	if hasScrapeConfig {
+	if !reflect.DeepEqual(scrapeConfigs, exceptedScrapeConfigs) {
 		klog.Infof("Deleting MinIO tenant Prometheus scrape config")
-		// Delete the config
-		newScrapeConfigs := append(scrapeConfigs[:scIndex], scrapeConfigs[scIndex+1:]...)
 		// Update the secret
-		scrapeCfgYaml, err := yaml.Marshal(newScrapeConfigs)
+		scrapeCfgYaml, err := yaml.Marshal(exceptedScrapeConfigs)
 		if err != nil {
 			return err
 		}
diff --git a/pkg/controller/sts.go b/pkg/controller/sts.go
index 9507095b..9cea54ab 100644
--- a/pkg/controller/sts.go
+++ b/pkg/controller/sts.go
@@ -39,6 +39,11 @@ const (
 	STSEndpoint        = "/sts"
 )
 
+const (
+	// TokenReviewAudience is the audience for the token review request
+	TokenReviewAudience = "sts.min.io"
+)
+
 const (
 	// STSEnabled Env variable name to turn on and off the STS Service is enabled, disabled by default
 	STSEnabled = "OPERATOR_STS_ENABLED"
@@ -380,7 +385,8 @@ func getTenantClient(ctx context.Context, c *Controller, tenant *miniov2.Tenant)
 func (c *Controller) ValidateServiceAccountJWT(ctx *context.Context, token string) (*authv1.TokenReview, error) {
 	tr := authv1.TokenReview{
 		Spec: authv1.TokenReviewSpec{
-			Token: token,
+			Token:     token,
+			Audiences: []string{TokenReviewAudience},
 		},
 	}
 
diff --git a/pkg/controller/sts_handlers.go b/pkg/controller/sts_handlers.go
index 388c848e..229c8e12 100644
--- a/pkg/controller/sts_handlers.go
+++ b/pkg/controller/sts_handlers.go
@@ -116,10 +116,23 @@ func (c *Controller) AssumeRoleWithWebIdentityHandler(w http.ResponseWriter, r *
 		return
 	}
 
+	isSSTSAudience := false
+	for _, audience := range saAuthResult.Status.Audiences {
+		if audience == TokenReviewAudience {
+			isSSTSAudience = true
+		}
+	}
+
+	if !isSSTSAudience {
+		writeSTSErrorResponse(w, true, ErrSTSAccessDenied, fmt.Errorf("Access denied: Invalid Token, audience '%s' not found", TokenReviewAudience))
+		return
+	}
+
 	if !saAuthResult.Status.Authenticated {
 		writeSTSErrorResponse(w, true, ErrSTSAccessDenied, fmt.Errorf("Access denied: Invalid Token"))
 		return
 	}
+
 	chunks := strings.Split(strings.Replace(saAuthResult.Status.User.Username, "system:serviceaccount:", "", -1), ":")
 
 	if len(chunks) < 2 {
diff --git a/pkg/resources/configmaps/prometheus.go b/pkg/resources/configmaps/prometheus.go
index 82b1c5c6..071c9195 100644
--- a/pkg/resources/configmaps/prometheus.go
+++ b/pkg/resources/configmaps/prometheus.go
@@ -27,11 +27,13 @@ type globalConfig struct {
 	EvaluationInterval time.Duration `yaml:"evaluation_interval"`
 }
 
-type staticConfig struct {
+// StaticConfig contains the static configuration for prometheus
+type StaticConfig struct {
 	Targets []string `yaml:"targets"`
 }
 
-type tlsConfig struct {
+// TLSConfig contains the tls configuration for prometheus
+type TLSConfig struct {
 	CAFile string `yaml:"ca_file"`
 }
 
@@ -41,8 +43,8 @@ type ScrapeConfig struct {
 	BearerToken   string         `yaml:"bearer_token"`
 	MetricsPath   string         `yaml:"metrics_path"`
 	Scheme        string         `yaml:"scheme"`
-	TLSConfig     tlsConfig      `yaml:"tls_config"`
-	StaticConfigs []staticConfig `yaml:"static_configs"`
+	TLSConfig     TLSConfig      `yaml:"tls_config"`
+	StaticConfigs []StaticConfig `yaml:"static_configs"`
 }
 
 // PrometheusConfig contains the prometheus configuration
@@ -80,22 +82,29 @@ func GetPrometheusConfig(t *miniov2.Tenant, accessKey, secretKey string) *Promet
 			ScrapeInterval:     miniov2.MinIOPrometheusScrapeInterval,
 			EvaluationInterval: 30 * time.Second,
 		},
-		ScrapeConfigs: []ScrapeConfig{
-			{
-				JobName:     t.PrometheusConfigJobName(),
-				BearerToken: bearerToken,
-				MetricsPath: miniov2.MinIOPrometheusPathCluster,
-				Scheme:      minioScheme,
-				TLSConfig: tlsConfig{
-					CAFile: "/var/run/secrets/kubernetes.io/serviceaccount/ca.crt",
-				},
-				StaticConfigs: []staticConfig{
-					{
-						Targets: []string{minioTargets},
-					},
+		ScrapeConfigs: []ScrapeConfig{},
+	}
+
+	if len(t.Spec.PrometheusOperatorScrapeMetricsPaths) == 0 {
+		t.Spec.PrometheusOperatorScrapeMetricsPaths = []string{"/minio/v2/metrics/cluster"}
+	}
+
+	for index, scrape := range t.Spec.PrometheusOperatorScrapeMetricsPaths {
+		promConfig.ScrapeConfigs = append(promConfig.ScrapeConfigs, ScrapeConfig{
+			JobName:     fmt.Sprintf("%s-%d", t.PrometheusOperatorAddlConfigJobName(), index),
+			BearerToken: bearerToken,
+			MetricsPath: scrape,
+			Scheme:      minioScheme,
+			TLSConfig: TLSConfig{
+				CAFile: "/var/run/secrets/kubernetes.io/serviceaccount/ca.crt",
+			},
+			StaticConfigs: []StaticConfig{
+				{
+					Targets: []string{minioTargets},
 				},
 			},
-		},
+		})
 	}
+
 	return promConfig
 }
diff --git a/pkg/resources/statefulsets/minio-sidecar.go b/pkg/resources/statefulsets/minio-sidecar.go
index 11477464..4dd77d64 100644
--- a/pkg/resources/statefulsets/minio-sidecar.go
+++ b/pkg/resources/statefulsets/minio-sidecar.go
@@ -23,7 +23,7 @@ import (
 
 const (
 	// DefaultSidecarImage is the sidecar image to use for tenants
-	DefaultSidecarImage = "quay.io/minio/operator-sidecar:v7.0.0"
+	DefaultSidecarImage = "quay.io/minio/operator-sidecar:v7.0.1"
 )
 
 var (
diff --git a/resources/base/crds/minio.min.io_tenants.yaml b/resources/base/crds/minio.min.io_tenants.yaml
index 72d7e591..edcfab6e 100644
--- a/resources/base/crds/minio.min.io_tenants.yaml
+++ b/resources/base/crds/minio.min.io_tenants.yaml
@@ -3,8 +3,8 @@ apiVersion: apiextensions.k8s.io/v1
 kind: CustomResourceDefinition
 metadata:
   annotations:
-    controller-gen.kubebuilder.io/version: v0.16.5
-    operator.min.io/version: v7.0.0
+    controller-gen.kubebuilder.io/version: v0.17.2
+    operator.min.io/version: v7.0.1
   name: tenants.minio.min.io
 spec:
   group: minio.min.io
@@ -2408,6 +2408,8 @@ spec:
                       runAsUser:
                         format: int64
                         type: integer
+                      seLinuxChangePolicy:
+                        type: string
                       seLinuxOptions:
                         properties:
                           level:
@@ -3341,6 +3343,8 @@ spec:
                         runAsUser:
                           format: int64
                           type: integer
+                        seLinuxChangePolicy:
+                          type: string
                         seLinuxOptions:
                           properties:
                             level:
@@ -3682,6 +3686,10 @@ spec:
                 type: string
               prometheusOperator:
                 type: boolean
+              prometheusOperatorScrapeMetricsPaths:
+                items:
+                  type: string
+                type: array
               readiness:
                 properties:
                   exec:
diff --git a/resources/base/crds/sts.min.io_policybindings.yaml b/resources/base/crds/sts.min.io_policybindings.yaml
index 1dc6be59..672319cc 100644
--- a/resources/base/crds/sts.min.io_policybindings.yaml
+++ b/resources/base/crds/sts.min.io_policybindings.yaml
@@ -3,8 +3,8 @@ apiVersion: apiextensions.k8s.io/v1
 kind: CustomResourceDefinition
 metadata:
   annotations:
-    controller-gen.kubebuilder.io/version: v0.16.5
-    operator.min.io/version: v7.0.0
+    controller-gen.kubebuilder.io/version: v0.17.2
+    operator.min.io/version: v7.0.1
   name: policybindings.sts.min.io
 spec:
   group: sts.min.io
diff --git a/resources/base/deployment.yaml b/resources/base/deployment.yaml
index a6ef62ab..bf77b6ab 100644
--- a/resources/base/deployment.yaml
+++ b/resources/base/deployment.yaml
@@ -23,7 +23,7 @@ spec:
       serviceAccountName: minio-operator
       containers:
         - name: minio-operator
-          image: minio/operator:v7.0.0
+          image: minio/operator:v7.0.1
           imagePullPolicy: IfNotPresent
           args:
             - controller
diff --git a/resources/kustomization.yaml b/resources/kustomization.yaml
index 0ebe3e58..50a2c77a 100644
--- a/resources/kustomization.yaml
+++ b/resources/kustomization.yaml
@@ -5,7 +5,7 @@ commonAnnotations:
   operator.min.io/authors: "MinIO, Inc."
   operator.min.io/license: "AGPLv3"
   operator.min.io/support: "https://subnet.min.io"
-  operator.min.io/version: v7.0.0
+  operator.min.io/version: v7.0.1
 commonLabels:
   app.kubernetes.io/name: operator
 resources:
diff --git a/sidecar/go.mod b/sidecar/go.mod
index 1ef982af..4694219e 100644
--- a/sidecar/go.mod
+++ b/sidecar/go.mod
@@ -9,83 +9,87 @@ require (
 	github.com/minio/cli v1.24.2
 	github.com/minio/operator v0.0.0-20240506170406-f963b2796cae
 	github.com/minio/pkg v1.7.5
-	k8s.io/api v0.31.1
-	k8s.io/apimachinery v0.32.2
-	k8s.io/client-go v0.31.1
+	k8s.io/api v0.32.3
+	k8s.io/apimachinery v0.32.3
+	k8s.io/client-go v0.32.3
 	k8s.io/klog/v2 v2.130.1
 )
 
 replace github.com/minio/operator => ../
 
 require (
+	github.com/cespare/xxhash/v2 v2.3.0 // indirect
 	github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect
 	github.com/dustin/go-humanize v1.0.1 // indirect
 	github.com/emicklei/go-restful/v3 v3.12.2 // indirect
-	github.com/fatih/color v1.17.0 // indirect
+	github.com/fatih/color v1.18.0 // indirect
 	github.com/fxamacker/cbor/v2 v2.7.0 // indirect
+	github.com/go-ini/ini v1.67.0 // indirect
 	github.com/go-logr/logr v1.4.2 // indirect
 	github.com/go-ole/go-ole v1.3.0 // indirect
-	github.com/go-openapi/jsonpointer v0.21.0 // indirect
+	github.com/go-openapi/jsonpointer v0.21.1 // indirect
 	github.com/go-openapi/jsonreference v0.21.0 // indirect
-	github.com/go-openapi/swag v0.23.0 // indirect
-	github.com/goccy/go-json v0.10.3 // indirect
+	github.com/go-openapi/swag v0.23.1 // indirect
+	github.com/goccy/go-json v0.10.5 // indirect
 	github.com/gogo/protobuf v1.3.2 // indirect
-	github.com/golang-jwt/jwt v3.2.2+incompatible // indirect
-	github.com/golang-jwt/jwt/v4 v4.5.1 // indirect
+	github.com/golang-jwt/jwt/v4 v4.5.2 // indirect
 	github.com/golang/protobuf v1.5.4 // indirect
 	github.com/google/gnostic-models v0.6.9 // indirect
-	github.com/google/go-cmp v0.6.0 // indirect
+	github.com/google/go-cmp v0.7.0 // indirect
 	github.com/google/gofuzz v1.2.0 // indirect
 	github.com/google/uuid v1.6.0 // indirect
 	github.com/josharian/intern v1.0.0 // indirect
 	github.com/json-iterator/go v1.1.12 // indirect
-	github.com/klauspost/compress v1.17.9 // indirect
-	github.com/klauspost/cpuid/v2 v2.2.8 // indirect
-	github.com/lufia/plan9stats v0.0.0-20240513124658-fba389f38bae // indirect
+	github.com/klauspost/compress v1.18.0 // indirect
+	github.com/klauspost/cpuid/v2 v2.2.10 // indirect
+	github.com/lufia/plan9stats v0.0.0-20250317134145-8bc96cf8fc35 // indirect
 	github.com/mailru/easyjson v0.9.0 // indirect
-	github.com/mattn/go-colorable v0.1.13 // indirect
+	github.com/mattn/go-colorable v0.1.14 // indirect
 	github.com/mattn/go-isatty v0.0.20 // indirect
 	github.com/matttproud/golang_protobuf_extensions v1.0.4 // indirect
-	github.com/miekg/dns v1.1.61 // indirect
-	github.com/minio/madmin-go/v3 v3.0.57 // indirect
+	github.com/miekg/dns v1.1.64 // indirect
+	github.com/minio/crc64nvme v1.0.1 // indirect
+	github.com/minio/madmin-go/v3 v3.0.100 // indirect
 	github.com/minio/md5-simd v1.1.2 // indirect
-	github.com/minio/minio-go/v7 v7.0.72 // indirect
+	github.com/minio/minio-go/v7 v7.0.89 // indirect
 	github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect
 	github.com/modern-go/reflect2 v1.0.2 // indirect
 	github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect
-	github.com/philhofer/fwd v1.1.2 // indirect
+	github.com/philhofer/fwd v1.1.3-0.20240916144458-20a13a1f6b7c // indirect
+	github.com/pkg/errors v0.9.1 // indirect
 	github.com/power-devops/perfstat v0.0.0-20240221224432-82ca36839d55 // indirect
 	github.com/prometheus/client_model v0.6.1 // indirect
-	github.com/prometheus/common v0.55.0 // indirect
-	github.com/prometheus/procfs v0.15.1 // indirect
-	github.com/prometheus/prom2json v1.3.3 // indirect
-	github.com/rs/xid v1.5.0 // indirect
-	github.com/safchain/ethtool v0.4.1 // indirect
+	github.com/prometheus/common v0.63.0 // indirect
+	github.com/prometheus/procfs v0.16.0 // indirect
+	github.com/prometheus/prom2json v1.4.1 // indirect
+	github.com/prometheus/prometheus v0.302.1 // indirect
+	github.com/rs/xid v1.6.0 // indirect
+	github.com/safchain/ethtool v0.5.10 // indirect
 	github.com/secure-io/sio-go v0.3.1 // indirect
 	github.com/shirou/gopsutil/v3 v3.24.5 // indirect
 	github.com/shoenig/go-m1cpu v0.1.6 // indirect
-	github.com/tinylib/msgp v1.1.9 // indirect
-	github.com/tklauser/go-sysconf v0.3.14 // indirect
-	github.com/tklauser/numcpus v0.8.0 // indirect
+	github.com/tinylib/msgp v1.2.5 // indirect
+	github.com/tklauser/go-sysconf v0.3.15 // indirect
+	github.com/tklauser/numcpus v0.10.0 // indirect
 	github.com/x448/float16 v0.8.4 // indirect
 	github.com/yusufpapurcu/wmi v1.2.4 // indirect
 	golang.org/x/crypto v0.36.0 // indirect
 	golang.org/x/mod v0.24.0 // indirect
-	golang.org/x/net v0.37.0 // indirect
-	golang.org/x/oauth2 v0.21.0 // indirect
+	golang.org/x/net v0.38.0 // indirect
+	golang.org/x/oauth2 v0.28.0 // indirect
 	golang.org/x/sync v0.12.0 // indirect
 	golang.org/x/sys v0.31.0 // indirect
 	golang.org/x/term v0.30.0 // indirect
 	golang.org/x/text v0.23.0 // indirect
-	golang.org/x/time v0.7.0 // indirect
+	golang.org/x/time v0.11.0 // indirect
 	golang.org/x/tools v0.31.0 // indirect
-	google.golang.org/protobuf v1.36.5 // indirect
+	google.golang.org/protobuf v1.36.6 // indirect
+	gopkg.in/evanphx/json-patch.v4 v4.12.0 // indirect
 	gopkg.in/inf.v0 v0.9.1 // indirect
-	gopkg.in/ini.v1 v1.67.0 // indirect
 	gopkg.in/yaml.v3 v3.0.1 // indirect
-	k8s.io/kube-openapi v0.0.0-20250304201544-e5f78fe3ede9 // indirect
-	k8s.io/utils v0.0.0-20241104100929-3ea5e8cea738 // indirect
-	sigs.k8s.io/json v0.0.0-20241010143419-9aa6b5e7a4b3 // indirect
+	k8s.io/kube-openapi v0.0.0-20250318190949-c8a335a9a2ff // indirect
+	k8s.io/utils v0.0.0-20250321185631-1f6e0b77f77e // indirect
+	sigs.k8s.io/json v0.0.0-20241014173422-cfa47c3a1cc8 // indirect
 	sigs.k8s.io/randfill v1.0.0 // indirect
 	sigs.k8s.io/structured-merge-diff/v4 v4.6.0 // indirect
 	sigs.k8s.io/yaml v1.4.0 // indirect
diff --git a/sidecar/go.sum b/sidecar/go.sum
index e65bf9eb..213e86f9 100644
--- a/sidecar/go.sum
+++ b/sidecar/go.sum
@@ -1,4 +1,6 @@
 github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU=
+github.com/cespare/xxhash/v2 v2.3.0 h1:UL815xU9SqsFlibzuggzjXhog7bL6oX9BbNZnL2UFvs=
+github.com/cespare/xxhash/v2 v2.3.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs=
 github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
 github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
 github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc h1:U9qPSI2PIWSS1VwoXQT9A3Wy9MM3WgvqSxFWenqJduM=
@@ -7,44 +9,44 @@ github.com/dustin/go-humanize v1.0.1 h1:GzkhY7T5VNhEkwH0PVJgjz+fX1rhBrR7pRT3mDkp
 github.com/dustin/go-humanize v1.0.1/go.mod h1:Mu1zIs6XwVuF/gI1OepvI0qD18qycQx+mFykh5fBlto=
 github.com/emicklei/go-restful/v3 v3.12.2 h1:DhwDP0vY3k8ZzE0RunuJy8GhNpPL6zqLkDf9B/a0/xU=
 github.com/emicklei/go-restful/v3 v3.12.2/go.mod h1:6n3XBCmQQb25CM2LCACGz8ukIrRry+4bhvbpWn3mrbc=
-github.com/fatih/color v1.17.0 h1:GlRw1BRJxkpqUCBKzKOw098ed57fEsKeNjpTe3cSjK4=
-github.com/fatih/color v1.17.0/go.mod h1:YZ7TlrGPkiz6ku9fK3TLD/pl3CpsiFyu8N92HLgmosI=
+github.com/fatih/color v1.18.0 h1:S8gINlzdQ840/4pfAwic/ZE0djQEH3wM94VfqLTZcOM=
+github.com/fatih/color v1.18.0/go.mod h1:4FelSpRwEGDpQ12mAdzqdOukCy4u8WUtOY6lkT/6HfU=
 github.com/fxamacker/cbor/v2 v2.7.0 h1:iM5WgngdRBanHcxugY4JySA0nk1wZorNOpTgCMedv5E=
 github.com/fxamacker/cbor/v2 v2.7.0/go.mod h1:pxXPTn3joSm21Gbwsv0w9OSA2y1HFR9qXEeXQVeNoDQ=
+github.com/go-ini/ini v1.67.0 h1:z6ZrTEZqSWOTyH2FlglNbNgARyHG8oLW9gMELqKr06A=
+github.com/go-ini/ini v1.67.0/go.mod h1:ByCAeIL28uOIIG0E3PJtZPDL8WnHpFKFOtgjp+3Ies8=
 github.com/go-logr/logr v1.4.2 h1:6pFjapn8bFcIbiKo3XT4j/BhANplGihG6tvd+8rYgrY=
 github.com/go-logr/logr v1.4.2/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY=
 github.com/go-ole/go-ole v1.2.6/go.mod h1:pprOEPIfldk/42T2oK7lQ4v4JSDwmV0As9GaiUsvbm0=
 github.com/go-ole/go-ole v1.3.0 h1:Dt6ye7+vXGIKZ7Xtk4s6/xVdGDQynvom7xCFEdWr6uE=
 github.com/go-ole/go-ole v1.3.0/go.mod h1:5LS6F96DhAwUc7C+1HLexzMXY1xGRSryjyPPKW6zv78=
-github.com/go-openapi/jsonpointer v0.21.0 h1:YgdVicSA9vH5RiHs9TZW5oyafXZFc6+2Vc1rr/O9oNQ=
-github.com/go-openapi/jsonpointer v0.21.0/go.mod h1:IUyH9l/+uyhIYQ/PXVA41Rexl+kOkAPDdXEYns6fzUY=
+github.com/go-openapi/jsonpointer v0.21.1 h1:whnzv/pNXtK2FbX/W9yJfRmE2gsmkfahjMKB0fZvcic=
+github.com/go-openapi/jsonpointer v0.21.1/go.mod h1:50I1STOfbY1ycR8jGz8DaMeLCdXiI6aDteEdRNNzpdk=
 github.com/go-openapi/jsonreference v0.21.0 h1:Rs+Y7hSXT83Jacb7kFyjn4ijOuVGSvOdF2+tg1TRrwQ=
 github.com/go-openapi/jsonreference v0.21.0/go.mod h1:LmZmgsrTkVg9LG4EaHeY8cBDslNPMo06cago5JNLkm4=
-github.com/go-openapi/swag v0.23.0 h1:vsEVJDUo2hPJ2tu0/Xc+4noaxyEffXNIs3cOULZ+GrE=
-github.com/go-openapi/swag v0.23.0/go.mod h1:esZ8ITTYEsH1V2trKHjAN8Ai7xHb8RV+YSZ577vPjgQ=
+github.com/go-openapi/swag v0.23.1 h1:lpsStH0n2ittzTnbaSloVZLuB5+fvSY/+hnagBjSNZU=
+github.com/go-openapi/swag v0.23.1/go.mod h1:STZs8TbRvEQQKUA+JZNAm3EWlgaOBGpyFDqQnDHMef0=
 github.com/go-task/slim-sprig/v3 v3.0.0 h1:sUs3vkvUymDpBKi3qH1YSqBQk9+9D/8M2mN1vB6EwHI=
 github.com/go-task/slim-sprig/v3 v3.0.0/go.mod h1:W848ghGpv3Qj3dhTPRyJypKRiqCdHZiAzKg9hl15HA8=
-github.com/goccy/go-json v0.10.3 h1:KZ5WoDbxAIgm2HNbYckL0se1fHD6rz5j4ywS6ebzDqA=
-github.com/goccy/go-json v0.10.3/go.mod h1:oq7eo15ShAhp70Anwd5lgX2pLfOS3QCiwU/PULtXL6M=
+github.com/goccy/go-json v0.10.5 h1:Fq85nIqj+gXn/S5ahsiTlK3TmC85qgirsdTP/+DeaC4=
+github.com/goccy/go-json v0.10.5/go.mod h1:oq7eo15ShAhp70Anwd5lgX2pLfOS3QCiwU/PULtXL6M=
 github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q=
 github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q=
-github.com/golang-jwt/jwt v3.2.2+incompatible h1:IfV12K8xAKAnZqdXVzCZ+TOjboZ2keLg81eXfW3O+oY=
-github.com/golang-jwt/jwt v3.2.2+incompatible/go.mod h1:8pz2t5EyA70fFQQSrl6XZXzqecmYZeUEB8OUGHkxJ+I=
-github.com/golang-jwt/jwt/v4 v4.5.1 h1:JdqV9zKUdtaa9gdPlywC3aeoEsR681PlKC+4F5gQgeo=
-github.com/golang-jwt/jwt/v4 v4.5.1/go.mod h1:m21LjoU+eqJr34lmDMbreY2eSTRJ1cv77w39/MY0Ch0=
+github.com/golang-jwt/jwt/v4 v4.5.2 h1:YtQM7lnr8iZ+j5q71MGKkNw9Mn7AjHM68uc9g5fXeUI=
+github.com/golang-jwt/jwt/v4 v4.5.2/go.mod h1:m21LjoU+eqJr34lmDMbreY2eSTRJ1cv77w39/MY0Ch0=
 github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
 github.com/golang/protobuf v1.5.4 h1:i7eJL8qZTpSEXOPTxNKhASYpMn+8e5Q6AdndVa1dWek=
 github.com/golang/protobuf v1.5.4/go.mod h1:lnTiLA8Wa4RWRcIUkrtSVa5nRhsEGBg48fD6rSs7xps=
 github.com/google/gnostic-models v0.6.9 h1:MU/8wDLif2qCXZmzncUQ/BOfxWfthHi63KqpoNbWqVw=
 github.com/google/gnostic-models v0.6.9/go.mod h1:CiWsm0s6BSQd1hRn8/QmxqB6BesYcbSZxsz9b0KuDBw=
 github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY=
-github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI=
-github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY=
+github.com/google/go-cmp v0.7.0 h1:wk8382ETsv4JYUZwIsn6YpYiWiBsYLSJiTsyBybVuN8=
+github.com/google/go-cmp v0.7.0/go.mod h1:pXiqmnSA92OHEEa9HXL2W4E7lf9JzCmGVUdgjX3N/iU=
 github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg=
 github.com/google/gofuzz v1.2.0 h1:xRy4A+RhZaiKjJ1bPfwQ8sedCA+YS2YcCHW6ec7JMi0=
 github.com/google/gofuzz v1.2.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg=
-github.com/google/pprof v0.0.0-20241029153458-d1b30febd7db h1:097atOisP2aRj7vFgYQBbFN4U4JNXUNYpxael3UzMyo=
-github.com/google/pprof v0.0.0-20241029153458-d1b30febd7db/go.mod h1:vavhavw2zAxS5dIdcRluK6cSGGPlZynqzFM8NdvU144=
+github.com/google/pprof v0.0.0-20241210010833-40e02aabc2ad h1:a6HEuzUHeKH6hwfN/ZoQgRgVIWFJljSWa/zetS2WTvg=
+github.com/google/pprof v0.0.0-20241210010833-40e02aabc2ad/go.mod h1:vavhavw2zAxS5dIdcRluK6cSGGPlZynqzFM8NdvU144=
 github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0=
 github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
 github.com/gorilla/mux v1.8.1 h1:TuBL49tXwgrFYWhqrNgrUNEY92u81SPhu7sTdzQEiWY=
@@ -55,36 +57,37 @@ github.com/json-iterator/go v1.1.12 h1:PV8peI4a0ysnczrg+LtxykD8LfKY9ML6u2jnxaEnr
 github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo=
 github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8=
 github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck=
-github.com/klauspost/compress v1.17.9 h1:6KIumPrER1LHsvBVuDa0r5xaG0Es51mhhB9BQB2qeMA=
-github.com/klauspost/compress v1.17.9/go.mod h1:Di0epgTjJY877eYKx5yC51cX2A2Vl2ibi7bDH9ttBbw=
+github.com/klauspost/compress v1.18.0 h1:c/Cqfb0r+Yi+JtIEq73FWXVkRonBlf0CRNYc8Zttxdo=
+github.com/klauspost/compress v1.18.0/go.mod h1:2Pp+KzxcywXVXMr50+X0Q/Lsb43OQHYWRCY2AiWywWQ=
 github.com/klauspost/cpuid/v2 v2.0.1/go.mod h1:FInQzS24/EEf25PyTYn52gqo7WaD8xa0213Md/qVLRg=
-github.com/klauspost/cpuid/v2 v2.2.8 h1:+StwCXwm9PdpiEkPyzBXIy+M9KUb4ODm0Zarf1kS5BM=
-github.com/klauspost/cpuid/v2 v2.2.8/go.mod h1:Lcz8mBdAVJIBVzewtcLocK12l3Y+JytZYpaMropDUws=
+github.com/klauspost/cpuid/v2 v2.2.10 h1:tBs3QSyvjDyFTq3uoc/9xFpCuOsJQFNPiAhYdw2skhE=
+github.com/klauspost/cpuid/v2 v2.2.10/go.mod h1:hqwkgyIinND0mEev00jJYCxPNVRVXFQeu1XKlok6oO0=
 github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE=
 github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk=
 github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY=
 github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE=
-github.com/lufia/plan9stats v0.0.0-20240513124658-fba389f38bae h1:dIZY4ULFcto4tAFlj1FYZl8ztUZ13bdq+PLY+NOfbyI=
-github.com/lufia/plan9stats v0.0.0-20240513124658-fba389f38bae/go.mod h1:ilwx/Dta8jXAgpFYFvSWEMwxmbWXyiUHkd5FwyKhb5k=
+github.com/lufia/plan9stats v0.0.0-20250317134145-8bc96cf8fc35 h1:PpXWgLPs+Fqr325bN2FD2ISlRRztXibcX6e8f5FR5Dc=
+github.com/lufia/plan9stats v0.0.0-20250317134145-8bc96cf8fc35/go.mod h1:autxFIvghDt3jPTLoqZ9OZ7s9qTGNAWmYCjVFWPX/zg=
 github.com/mailru/easyjson v0.9.0 h1:PrnmzHw7262yW8sTBwxi1PdJA3Iw/EKBa8psRf7d9a4=
 github.com/mailru/easyjson v0.9.0/go.mod h1:1+xMtQp2MRNVL/V1bOzuP3aP8VNwRW55fQUto+XFtTU=
-github.com/mattn/go-colorable v0.1.13 h1:fFA4WZxdEF4tXPZVKMLwD8oUnCTTo08duU7wxecdEvA=
-github.com/mattn/go-colorable v0.1.13/go.mod h1:7S9/ev0klgBDR4GtXTXX8a3vIGJpMovkB8vQcUbaXHg=
-github.com/mattn/go-isatty v0.0.16/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM=
+github.com/mattn/go-colorable v0.1.14 h1:9A9LHSqF/7dyVVX6g0U9cwm9pG3kP9gSzcuIPHPsaIE=
+github.com/mattn/go-colorable v0.1.14/go.mod h1:6LmQG8QLFO4G5z1gPvYEzlUgJ2wF+stgPZH1UqBm1s8=
 github.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWEY=
 github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y=
 github.com/matttproud/golang_protobuf_extensions v1.0.4 h1:mmDVorXM7PCGKw94cs5zkfA9PSy5pEvNWRP0ET0TIVo=
 github.com/matttproud/golang_protobuf_extensions v1.0.4/go.mod h1:BSXmuO+STAnVfrANrmjBb36TMTDstsz7MSK+HVaYKv4=
-github.com/miekg/dns v1.1.61 h1:nLxbwF3XxhwVSm8g9Dghm9MHPaUZuqhPiGL+675ZmEs=
-github.com/miekg/dns v1.1.61/go.mod h1:mnAarhS3nWaW+NVP2wTkYVIZyHNJ098SJZUki3eykwQ=
+github.com/miekg/dns v1.1.64 h1:wuZgD9wwCE6XMT05UU/mlSko71eRSXEAm2EbjQXLKnQ=
+github.com/miekg/dns v1.1.64/go.mod h1:Dzw9769uoKVaLuODMDZz9M6ynFU6Em65csPuoi8G0ck=
 github.com/minio/cli v1.24.2 h1:J+fCUh9mhPLjN3Lj/YhklXvxj8mnyE/D6FpFduXJ2jg=
 github.com/minio/cli v1.24.2/go.mod h1:bYxnK0uS629N3Bq+AOZZ+6lwF77Sodk4+UL9vNuXhOY=
-github.com/minio/madmin-go/v3 v3.0.57 h1:fXoOnYP8/k9x0MWWowXkAQWYu59hongieCcT3urUaAQ=
-github.com/minio/madmin-go/v3 v3.0.57/go.mod h1:IFAwr0XMrdsLovxAdCcuq/eoL4nRuMVQQv0iubJANQw=
+github.com/minio/crc64nvme v1.0.1 h1:DHQPrYPdqK7jQG/Ls5CTBZWeex/2FMS3G5XGkycuFrY=
+github.com/minio/crc64nvme v1.0.1/go.mod h1:eVfm2fAzLlxMdUGc0EEBGSMmPwmXD5XiNRpnu9J3bvg=
+github.com/minio/madmin-go/v3 v3.0.100 h1:1gsy1kHgk8v9ZQyEU/L9k1ZoImFid+hlzwrOgUULB88=
+github.com/minio/madmin-go/v3 v3.0.100/go.mod h1:pMLdj9OtN0CANNs5tdm6opvOlDFfj0WhbztboZAjRWE=
 github.com/minio/md5-simd v1.1.2 h1:Gdi1DZK69+ZVMoNHRXJyNcxrMA4dSxoYHZSQbirFg34=
 github.com/minio/md5-simd v1.1.2/go.mod h1:MzdKDxYpY2BT9XQFocsiZf/NKVtR7nkE4RoEpN+20RM=
-github.com/minio/minio-go/v7 v7.0.72 h1:ZSbxs2BfJensLyHdVOgHv+pfmvxYraaUy07ER04dWnA=
-github.com/minio/minio-go/v7 v7.0.72/go.mod h1:4yBA8v80xGA30cfM3fz0DKYMXunWl/AV/6tWEs9ryzo=
+github.com/minio/minio-go/v7 v7.0.89 h1:hx4xV5wwTUfyv8LarhJAwNecnXpoTsj9v3f3q/ZkiJU=
+github.com/minio/minio-go/v7 v7.0.89/go.mod h1:2rFnGAp02p7Dddo1Fq4S2wYOfpF0MUTSeLTRC90I204=
 github.com/minio/pkg v1.7.5 h1:UOUJjewE5zoaDPlCMJtNx/swc1jT1ZR+IajT7hrLd44=
 github.com/minio/pkg v1.7.5/go.mod h1:mEfGMTm5Z0b5EGxKNuPwyb5A2d+CC/VlUyRj6RJtIwo=
 github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q=
@@ -98,8 +101,10 @@ github.com/onsi/ginkgo/v2 v2.21.0 h1:7rg/4f3rB88pb5obDgNZrNHrQ4e6WpjonchcpuBRnZM
 github.com/onsi/ginkgo/v2 v2.21.0/go.mod h1:7Du3c42kxCUegi0IImZ1wUQzMBVecgIHjR1C+NkhLQo=
 github.com/onsi/gomega v1.35.1 h1:Cwbd75ZBPxFSuZ6T+rN/WCb/gOc6YgFBXLlZLhC7Ds4=
 github.com/onsi/gomega v1.35.1/go.mod h1:PvZbdDc8J6XJEpDK4HCuRBm8a6Fzp9/DmhC9C7yFlog=
-github.com/philhofer/fwd v1.1.2 h1:bnDivRJ1EWPjUIRXV5KfORO897HTbpFAQddBdE8t7Gw=
-github.com/philhofer/fwd v1.1.2/go.mod h1:qkPdfjR2SIEbspLqpe1tO4n5yICnr2DY7mqEx2tUTP0=
+github.com/philhofer/fwd v1.1.3-0.20240916144458-20a13a1f6b7c h1:dAMKvw0MlJT1GshSTtih8C2gDs04w8dReiOGXrGLNoY=
+github.com/philhofer/fwd v1.1.3-0.20240916144458-20a13a1f6b7c/go.mod h1:RqIHx9QI14HlwKwm98g9Re5prTQ6LdeRQn+gXJFxsJM=
+github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4=
+github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
 github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
 github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 h1:Jamvg5psRIccs7FGNTlIRMkT8wgtp5eCXdBlqhYGL6U=
 github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
@@ -107,18 +112,20 @@ github.com/power-devops/perfstat v0.0.0-20240221224432-82ca36839d55 h1:o4JXh1EVt
 github.com/power-devops/perfstat v0.0.0-20240221224432-82ca36839d55/go.mod h1:OmDBASR4679mdNQnz2pUhc2G8CO2JrUAVFDRBDP/hJE=
 github.com/prometheus/client_model v0.6.1 h1:ZKSh/rekM+n3CeS952MLRAdFwIKqeY8b62p8ais2e9E=
 github.com/prometheus/client_model v0.6.1/go.mod h1:OrxVMOVHjw3lKMa8+x6HeMGkHMQyHDk9E3jmP2AmGiY=
-github.com/prometheus/common v0.55.0 h1:KEi6DK7lXW/m7Ig5i47x0vRzuBsHuvJdi5ee6Y3G1dc=
-github.com/prometheus/common v0.55.0/go.mod h1:2SECS4xJG1kd8XF9IcM1gMX6510RAEL65zxzNImwdc8=
-github.com/prometheus/procfs v0.15.1 h1:YagwOFzUgYfKKHX6Dr+sHT7km/hxC76UB0learggepc=
-github.com/prometheus/procfs v0.15.1/go.mod h1:fB45yRUv8NstnjriLhBQLuOUt+WW4BsoGhij/e3PBqk=
-github.com/prometheus/prom2json v1.3.3 h1:IYfSMiZ7sSOfliBoo89PcufjWO4eAR0gznGcETyaUgo=
-github.com/prometheus/prom2json v1.3.3/go.mod h1:Pv4yIPktEkK7btWsrUTWDDDrnpUrAELaOCj+oFwlgmc=
+github.com/prometheus/common v0.63.0 h1:YR/EIY1o3mEFP/kZCD7iDMnLPlGyuU2Gb3HIcXnA98k=
+github.com/prometheus/common v0.63.0/go.mod h1:VVFF/fBIoToEnWRVkYoXEkq3R3paCoxG9PXP74SnV18=
+github.com/prometheus/procfs v0.16.0 h1:xh6oHhKwnOJKMYiYBDWmkHqQPyiY40sny36Cmx2bbsM=
+github.com/prometheus/procfs v0.16.0/go.mod h1:8veyXUu3nGP7oaCxhX6yeaM5u4stL2FeMXnCqhDthZg=
+github.com/prometheus/prom2json v1.4.1 h1:7McxdrHgPEOtMwWjkKtd0v5AhpR2Q6QAnlHKVxq0+tQ=
+github.com/prometheus/prom2json v1.4.1/go.mod h1:CzOQykSKFxXuC7ELUZHOHQvwKesQ3eN0p2PWLhFitQM=
+github.com/prometheus/prometheus v0.302.1 h1:xqVdrwrB4WNpdgJqxsz5loqFWNUZitsK8myqLuSZ6Ag=
+github.com/prometheus/prometheus v0.302.1/go.mod h1:YcyCoTbUR/TM8rY3Aoeqr0AWTu/pu1Ehh+trpX3eRzg=
 github.com/rogpeppe/go-internal v1.12.0 h1:exVL4IDcn6na9z1rAb56Vxr+CgyK3nn3O+epU5NdKM8=
 github.com/rogpeppe/go-internal v1.12.0/go.mod h1:E+RYuTGaKKdloAfM02xzb0FW3Paa99yedzYV+kq4uf4=
-github.com/rs/xid v1.5.0 h1:mKX4bl4iPYJtEIxp6CYiUuLQ/8DYMoz0PUdtGgMFRVc=
-github.com/rs/xid v1.5.0/go.mod h1:trrq9SKmegXys3aeAKXMUTdJsYXVwGY3RLcfgqegfbg=
-github.com/safchain/ethtool v0.4.1 h1:S6mEleTADqgynileXoiapt/nKnatyR6bmIHoF+h2ADo=
-github.com/safchain/ethtool v0.4.1/go.mod h1:XLLnZmy4OCRTkksP/UiMjij96YmIsBfmBQcs7H6tA48=
+github.com/rs/xid v1.6.0 h1:fV591PaemRlL6JfRxGDEPl69wICngIQ3shQtzfy2gxU=
+github.com/rs/xid v1.6.0/go.mod h1:7XoLgs4eV+QndskICGsho+ADou8ySMSjJKDIan90Nz0=
+github.com/safchain/ethtool v0.5.10 h1:Im294gZtuf4pSGJRAOGKaASNi3wMeFaGaWuSaomedpc=
+github.com/safchain/ethtool v0.5.10/go.mod h1:w9jh2Lx7YBR4UwzLkzCmWl85UY0W2uZdd7/DckVE5+c=
 github.com/secure-io/sio-go v0.3.1 h1:dNvY9awjabXTYGsTF1PiCySl9Ltofk9GA3VdWlo7rRc=
 github.com/secure-io/sio-go v0.3.1/go.mod h1:+xbkjDzPjwh4Axd07pRKSNriS9SCiYksWnZqdnfpQxs=
 github.com/shirou/gopsutil/v3 v3.24.5 h1:i0t8kL+kQTvpAYToeuiVk3TgDeKOFioZO3Ztz/iZ9pI=
@@ -131,14 +138,14 @@ github.com/spf13/pflag v1.0.6 h1:jFzHGLGAlb3ruxLB8MhbI6A8+AQX/2eW4qeyNZXNp2o=
 github.com/spf13/pflag v1.0.6/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg=
 github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
 github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI=
-github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsTg=
-github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY=
-github.com/tinylib/msgp v1.1.9 h1:SHf3yoO2sGA0veCJeCBYLHuttAVFHGm2RHgNodW7wQU=
-github.com/tinylib/msgp v1.1.9/go.mod h1:BCXGB54lDD8qUEPmiG0cQQUANC4IUQyB2ItS2UDlO/k=
-github.com/tklauser/go-sysconf v0.3.14 h1:g5vzr9iPFFz24v2KZXs/pvpvh8/V9Fw6vQK5ZZb78yU=
-github.com/tklauser/go-sysconf v0.3.14/go.mod h1:1ym4lWMLUOhuBOPGtRcJm7tEGX4SCYNEEEtghGG/8uY=
-github.com/tklauser/numcpus v0.8.0 h1:Mx4Wwe/FjZLeQsK/6kt2EOepwwSl7SmJrK5bV/dXYgY=
-github.com/tklauser/numcpus v0.8.0/go.mod h1:ZJZlAY+dmR4eut8epnzf0u/VwodKmryxR8txiloSqBE=
+github.com/stretchr/testify v1.10.0 h1:Xv5erBjTwe/5IxqUQTdXv5kgmIvbHo3QQyRwhJsOfJA=
+github.com/stretchr/testify v1.10.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY=
+github.com/tinylib/msgp v1.2.5 h1:WeQg1whrXRFiZusidTQqzETkRpGjFjcIhW6uqWH09po=
+github.com/tinylib/msgp v1.2.5/go.mod h1:ykjzy2wzgrlvpDCRc4LA8UXy6D8bzMSuAF3WD57Gok0=
+github.com/tklauser/go-sysconf v0.3.15 h1:VE89k0criAymJ/Os65CSn1IXaol+1wrsFHEB8Ol49K4=
+github.com/tklauser/go-sysconf v0.3.15/go.mod h1:Dmjwr6tYFIseJw7a3dRLJfsHAMXZ3nEnL/aZY+0IuI4=
+github.com/tklauser/numcpus v0.10.0 h1:18njr6LDBk1zuna922MgdjQuJFjrdppsZG60sHGfjso=
+github.com/tklauser/numcpus v0.10.0/go.mod h1:BiTKazU708GQTYF4mB+cmlpT2Is1gLk7XVuEeem8LsQ=
 github.com/x448/float16 v0.8.4 h1:qLwI1I70+NjRFUR3zs1JPUCgaCXSh3SW62uAKT1mSBM=
 github.com/x448/float16 v0.8.4/go.mod h1:14CWIYCyZA/cWjXOioeEpHeN/83MdbZDRQHoFcYsOfg=
 github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
@@ -159,10 +166,10 @@ golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn
 golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
 golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
 golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU=
-golang.org/x/net v0.37.0 h1:1zLorHbz+LYj7MQlSf1+2tPIIgibq2eL5xkrGk6f+2c=
-golang.org/x/net v0.37.0/go.mod h1:ivrbrMbzFq5J41QOQh0siUuly180yBYtLp+CKbEaFx8=
-golang.org/x/oauth2 v0.21.0 h1:tsimM75w1tF/uws5rbeHzIWxEqElMehnc+iW793zsZs=
-golang.org/x/oauth2 v0.21.0/go.mod h1:XYTD2NtWslqkgxebSiOHnXEap4TF09sJSc7H1sXbhtI=
+golang.org/x/net v0.38.0 h1:vRMAPTMaeGqVhG5QyLJHqNDwecKTomGeqbnfZyKlBI8=
+golang.org/x/net v0.38.0/go.mod h1:ivrbrMbzFq5J41QOQh0siUuly180yBYtLp+CKbEaFx8=
+golang.org/x/oauth2 v0.28.0 h1:CrgCKl8PPAVtLnU3c+EDw6x11699EWlsDeWNWKdIOkc=
+golang.org/x/oauth2 v0.28.0/go.mod h1:onh5ek6nERTohokkhCD/y2cV4Do3fxFHFuAejCkRWT8=
 golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
 golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
 golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
@@ -175,11 +182,9 @@ golang.org/x/sys v0.0.0-20190916202348-b4ddaad3f8a3/go.mod h1:h1NjWce9XRLGQEsW7w
 golang.org/x/sys v0.0.0-20200302150141-5c8b2ff67527/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
 golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
 golang.org/x/sys v0.0.0-20201204225414-ed752295db88/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
 golang.org/x/sys v0.1.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
-golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
 golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
-golang.org/x/sys v0.21.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
+golang.org/x/sys v0.29.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
 golang.org/x/sys v0.31.0 h1:ioabZlmFYtWhL+TRYpcnNlLwhyxaM9kWTDEmfnprqik=
 golang.org/x/sys v0.31.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k=
 golang.org/x/term v0.30.0 h1:PQ39fJZ+mfadBm0y5WlL4vlM7Sx1Hgf13sMIY2+QS9Y=
@@ -188,8 +193,8 @@ golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
 golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
 golang.org/x/text v0.23.0 h1:D71I7dUrlY+VX0gQShAThNGHFxZ13dGLBHQLVl1mJlY=
 golang.org/x/text v0.23.0/go.mod h1:/BLNzu4aZCJ1+kcD0DNRotWKage4q2rGVAg4o22unh4=
-golang.org/x/time v0.7.0 h1:ntUhktv3OPE6TgYxXWv9vKvUSJyIFJlyohwbkEwPrKQ=
-golang.org/x/time v0.7.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM=
+golang.org/x/time v0.11.0 h1:/bpjEDfN9tkoN/ryeYHnv5hcMlc8ncjMcM4XBk5NWV0=
+golang.org/x/time v0.11.0/go.mod h1:CDIdPxbZBQxdj6cxyCIdrNogrJKMJ7pr37NYpMcMDSg=
 golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
 golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
 golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE=
@@ -200,33 +205,33 @@ golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8T
 golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
 golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
 golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
-google.golang.org/protobuf v1.36.5 h1:tPhr+woSbjfYvY6/GPufUoYizxw1cF/yFoxJ2fmpwlM=
-google.golang.org/protobuf v1.36.5/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE=
+google.golang.org/protobuf v1.36.6 h1:z1NpPI8ku2WgiWnf+t9wTPsn6eP1L7ksHUlkfLvd9xY=
+google.golang.org/protobuf v1.36.6/go.mod h1:jduwjTPXsFjZGTmRluh+L6NjiWu7pchiJ2/5YcXBHnY=
 gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
 gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk=
 gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q=
+gopkg.in/evanphx/json-patch.v4 v4.12.0 h1:n6jtcsulIzXPJaxegRbvFNNrZDjbij7ny3gmSPG+6V4=
+gopkg.in/evanphx/json-patch.v4 v4.12.0/go.mod h1:p8EYWUEYMpynmqDbY58zCKCFZw8pRWMG4EsWvDvM72M=
 gopkg.in/inf.v0 v0.9.1 h1:73M5CoZyi3ZLMOyDlQh031Cx6N9NDJ2Vvfl76EDAgDc=
 gopkg.in/inf.v0 v0.9.1/go.mod h1:cWUDdTG/fYaXco+Dcufb5Vnc6Gp2YChqWtbxRZE0mXw=
-gopkg.in/ini.v1 v1.67.0 h1:Dgnx+6+nfE+IfzjUEISNeydPJh9AXNNsWbGP9KzCsOA=
-gopkg.in/ini.v1 v1.67.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k=
 gopkg.in/urfave/cli.v1 v1.20.0/go.mod h1:vuBzUtMdQeixQj8LVd+/98pzhxNGQoyuPBlsXHOQNO0=
 gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
 gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
 gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
-k8s.io/api v0.31.1 h1:Xe1hX/fPW3PXYYv8BlozYqw63ytA92snr96zMW9gWTU=
-k8s.io/api v0.31.1/go.mod h1:sbN1g6eY6XVLeqNsZGLnI5FwVseTrZX7Fv3O26rhAaI=
-k8s.io/apimachinery v0.32.2 h1:yoQBR9ZGkA6Rgmhbp/yuT9/g+4lxtsGYwW6dR6BDPLQ=
-k8s.io/apimachinery v0.32.2/go.mod h1:GpHVgxoKlTxClKcteaeuF1Ul/lDVb74KpZcxcmLDElE=
-k8s.io/client-go v0.31.1 h1:f0ugtWSbWpxHR7sjVpQwuvw9a3ZKLXX0u0itkFXufb0=
-k8s.io/client-go v0.31.1/go.mod h1:sKI8871MJN2OyeqRlmA4W4KM9KBdBUpDLu/43eGemCg=
+k8s.io/api v0.32.3 h1:Hw7KqxRusq+6QSplE3NYG4MBxZw1BZnq4aP4cJVINls=
+k8s.io/api v0.32.3/go.mod h1:2wEDTXADtm/HA7CCMD8D8bK4yuBUptzaRhYcYEEYA3k=
+k8s.io/apimachinery v0.32.3 h1:JmDuDarhDmA/Li7j3aPrwhpNBA94Nvk5zLeOge9HH1U=
+k8s.io/apimachinery v0.32.3/go.mod h1:GpHVgxoKlTxClKcteaeuF1Ul/lDVb74KpZcxcmLDElE=
+k8s.io/client-go v0.32.3 h1:RKPVltzopkSgHS7aS98QdscAgtgah/+zmpAogooIqVU=
+k8s.io/client-go v0.32.3/go.mod h1:3v0+3k4IcT9bXTc4V2rt+d2ZPPG700Xy6Oi0Gdl2PaY=
 k8s.io/klog/v2 v2.130.1 h1:n9Xl7H1Xvksem4KFG4PYbdQCQxqc/tTUyrgXaOhHSzk=
 k8s.io/klog/v2 v2.130.1/go.mod h1:3Jpz1GvMt720eyJH1ckRHK1EDfpxISzJ7I9OYgaDtPE=
-k8s.io/kube-openapi v0.0.0-20250304201544-e5f78fe3ede9 h1:t0huyHnz6HsokckRxAF1bY0cqPFwzINKCL7yltEjZQc=
-k8s.io/kube-openapi v0.0.0-20250304201544-e5f78fe3ede9/go.mod h1:5jIi+8yX4RIb8wk3XwBo5Pq2ccx4FP10ohkbSKCZoK8=
-k8s.io/utils v0.0.0-20241104100929-3ea5e8cea738 h1:M3sRQVHv7vB20Xc2ybTt7ODCeFj6JSWYFzOFnYeS6Ro=
-k8s.io/utils v0.0.0-20241104100929-3ea5e8cea738/go.mod h1:OLgZIPagt7ERELqWJFomSt595RzquPNLL48iOWgYOg0=
-sigs.k8s.io/json v0.0.0-20241010143419-9aa6b5e7a4b3 h1:/Rv+M11QRah1itp8VhT6HoVx1Ray9eB4DBr+K+/sCJ8=
-sigs.k8s.io/json v0.0.0-20241010143419-9aa6b5e7a4b3/go.mod h1:18nIHnGi6636UCz6m8i4DhaJ65T6EruyzmoQqI2BVDo=
+k8s.io/kube-openapi v0.0.0-20250318190949-c8a335a9a2ff h1:/usPimJzUKKu+m+TE36gUyGcf03XZEP0ZIKgKj35LS4=
+k8s.io/kube-openapi v0.0.0-20250318190949-c8a335a9a2ff/go.mod h1:5jIi+8yX4RIb8wk3XwBo5Pq2ccx4FP10ohkbSKCZoK8=
+k8s.io/utils v0.0.0-20250321185631-1f6e0b77f77e h1:KqK5c/ghOm8xkHYhlodbp6i6+r+ChV2vuAuVRdFbLro=
+k8s.io/utils v0.0.0-20250321185631-1f6e0b77f77e/go.mod h1:OLgZIPagt7ERELqWJFomSt595RzquPNLL48iOWgYOg0=
+sigs.k8s.io/json v0.0.0-20241014173422-cfa47c3a1cc8 h1:gBQPwqORJ8d8/YNZWEjoZs7npUVDpVXUUOFfW6CgAqE=
+sigs.k8s.io/json v0.0.0-20241014173422-cfa47c3a1cc8/go.mod h1:mdzfpAEoE6DHQEN0uh9ZbOCuHbLK5wOm7dK4ctXE9Tg=
 sigs.k8s.io/randfill v0.0.0-20250304075658-069ef1bbf016/go.mod h1:XeLlZ/jmk4i1HRopwe7/aU3H5n1zNUcX6TM94b3QxOY=
 sigs.k8s.io/randfill v1.0.0 h1:JfjMILfT8A6RbawdsK2JXGBR5AQVfd+9TbzrlneTyrU=
 sigs.k8s.io/randfill v1.0.0/go.mod h1:XeLlZ/jmk4i1HRopwe7/aU3H5n1zNUcX6TM94b3QxOY=
diff --git a/testing/console-tenant+kes.sh b/testing/console-tenant+kes.sh
index 6753b3ef..e93403c1 100755
--- a/testing/console-tenant+kes.sh
+++ b/testing/console-tenant+kes.sh
@@ -81,23 +81,23 @@ function test_kes_tenant() {
 
   echo "Vault root: '$VAULT_ROOT_TOKEN'"
 
-  try kubectl exec $(kubectl get pods -l app=vault | grep -v NAME | awk '{print $1}') -- sh -c 'VAULT_TOKEN='$VAULT_ROOT_TOKEN' VAULT_ADDR="http://127.0.0.1:8200" vault auth enable approle'
-  try kubectl exec $(kubectl get pods -l app=vault | grep -v NAME | awk '{print $1}') -- sh -c 'VAULT_TOKEN='$VAULT_ROOT_TOKEN' VAULT_ADDR="http://127.0.0.1:8200" vault secrets enable kv'
+  try kubectl exec $(kubectl get pods -l app=vault | grep -v NAME | awk '{print $1}') -- sh -c 'VAULT_TOKEN='$VAULT_ROOT_TOKEN' VAULT_ADDR="http://127.0.1.1:8200" vault auth enable approle'
+  try kubectl exec $(kubectl get pods -l app=vault | grep -v NAME | awk '{print $1}') -- sh -c 'VAULT_TOKEN='$VAULT_ROOT_TOKEN' VAULT_ADDR="http://127.0.1.1:8200" vault secrets enable kv'
 
   # copy kes file
   try kubectl cp "${SCRIPT_DIR}/../examples/vault/kes-policy.hcl" $(kubectl get pods -l app=vault | grep -v NAME | awk '{print $1}'):/kes-policy.hcl
 
-  try kubectl exec $(kubectl get pods -l app=vault | grep -v NAME | awk '{print $1}') -- sh -c 'VAULT_TOKEN='$VAULT_ROOT_TOKEN' VAULT_ADDR="http://127.0.0.1:8200" vault policy write kes-policy /kes-policy.hcl'
-  try kubectl exec $(kubectl get pods -l app=vault | grep -v NAME | awk '{print $1}') -- sh -c 'VAULT_TOKEN='$VAULT_ROOT_TOKEN' VAULT_ADDR="http://127.0.0.1:8200" vault write auth/approle/role/kes-role token_num_uses=0 secret_id_num_uses=0 period=5m policies=kes-policy'
+  try kubectl exec $(kubectl get pods -l app=vault | grep -v NAME | awk '{print $1}') -- sh -c 'VAULT_TOKEN='$VAULT_ROOT_TOKEN' VAULT_ADDR="http://127.0.1.1:8200" vault policy write kes-policy /kes-policy.hcl'
+  try kubectl exec $(kubectl get pods -l app=vault | grep -v NAME | awk '{print $1}') -- sh -c 'VAULT_TOKEN='$VAULT_ROOT_TOKEN' VAULT_ADDR="http://127.0.1.1:8200" vault write auth/approle/role/kes-role token_num_uses=0 secret_id_num_uses=0 period=5m policies=kes-policy'
 
-  ROLE_ID=$(kubectl exec $(kubectl get pods -l app=vault | grep -v NAME | awk '{print $1}') -- sh -c 'VAULT_TOKEN='$VAULT_ROOT_TOKEN' VAULT_ADDR="http://127.0.0.1:8200" vault read auth/approle/role/kes-role/role-id' | grep "role_id    " | sed -e "s/role_id    //g")
-  SECRET_ID=$(kubectl exec $(kubectl get pods -l app=vault | grep -v NAME | awk '{print $1}') -- sh -c 'VAULT_TOKEN='$VAULT_ROOT_TOKEN' VAULT_ADDR="http://127.0.0.1:8200" vault write -f auth/approle/role/kes-role/secret-id' | grep "secret_id             " | sed -e "s/secret_id             //g")
+  ROLE_ID=$(kubectl exec $(kubectl get pods -l app=vault | grep -v NAME | awk '{print $1}') -- sh -c 'VAULT_TOKEN='$VAULT_ROOT_TOKEN' VAULT_ADDR="http://127.0.1.1:8200" vault read auth/approle/role/kes-role/role-id' | grep "role_id    " | sed -e "s/role_id    //g")
+  SECRET_ID=$(kubectl exec $(kubectl get pods -l app=vault | grep -v NAME | awk '{print $1}') -- sh -c 'VAULT_TOKEN='$VAULT_ROOT_TOKEN' VAULT_ADDR="http://127.0.1.1:8200" vault write -f auth/approle/role/kes-role/secret-id' | grep "secret_id             " | sed -e "s/secret_id             //g")
 
   echo "Creating Tenant"
   sed -i -e 's/ROLE_ID/'"$ROLE_ID"'/g' "${SCRIPT_DIR}/kes-config.yaml"
   sed -i -e 's/SECRET_ID/'"$SECRET_ID"'/g' "${SCRIPT_DIR}/kes-config.yaml"
   cp "${SCRIPT_DIR}/kes-config.yaml" "${SCRIPT_DIR}/../examples/kustomization/tenant-kes-encryption/kes-configuration-secret.yaml"
-  yq e -i '.spec.kes.image = "minio/kes:2024-11-25T13-44-31Z"' "${SCRIPT_DIR}/../examples/kustomization/tenant-kes-encryption/tenant.yaml"
+  yq e -i '.spec.kes.image = "minio/kes:2025-03-12T09-35-18Z"' "${SCRIPT_DIR}/../examples/kustomization/tenant-kes-encryption/tenant.yaml"
   kubectl apply -k "${SCRIPT_DIR}/../examples/kustomization/tenant-kes-encryption"
 
   echo "Check Tenant Status in tenant-kms-encrypted namespace for myminio:"



Test patch:
diff --git a/pkg/apis/minio.min.io/v2/helper_test.go b/pkg/apis/minio.min.io/v2/helper_test.go
index d8bc4ccc..5a4c15f2 100644
--- a/pkg/apis/minio.min.io/v2/helper_test.go
+++ b/pkg/apis/minio.min.io/v2/helper_test.go
@@ -9,6 +9,23 @@ import (
 	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
 )
 
+func TestTenant_GetAccessKeyFromBearerToken(t *testing.T) {
+	mt := Tenant{}
+	mt.EnsureDefaults()
+	accessKey := "testAccessKey"
+	secretKey := "testSecretKey"
+	bearerToken := mt.GenBearerToken(accessKey, secretKey)
+
+	actualAccessKey, err := GetAccessKeyFromBearerToken(bearerToken, secretKey)
+	if err != nil {
+		t.Errorf("GetAccessAndSecretKeyFromBearerToken() returned an error: %v", err)
+	}
+
+	if actualAccessKey != accessKey {
+		t.Errorf("GetAccessAndSecretKeyFromBearerToken() accessKey = %v, want %v", actualAccessKey, accessKey)
+	}
+}
+
 func TestEnsureDefaults(t *testing.T) {
 	mt := Tenant{}
 	mt.EnsureDefaults()
diff --git a/pkg/controller/prometheus_test.go b/pkg/controller/prometheus_test.go
new file mode 100644
index 00000000..c934e90d
--- /dev/null
+++ b/pkg/controller/prometheus_test.go
@@ -0,0 +1,301 @@
+// Copyright (C) 2025, MinIO, Inc.
+//
+// This code is free software: you can redistribute it and/or modify
+// it under the terms of the GNU Affero General Public License, version 3,
+// as published by the Free Software Foundation.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU Affero General Public License for more details.
+//
+// You should have received a copy of the GNU Affero General Public License, version 3,
+// along with this program.  If not, see <http://www.gnu.org/licenses/>
+
+package controller
+
+import (
+	"context"
+	"testing"
+	"time"
+
+	"github.com/minio/operator/pkg/resources/configmaps"
+	v1 "github.com/prometheus-operator/prometheus-operator/pkg/apis/monitoring/v1"
+	"github.com/prometheus-operator/prometheus-operator/pkg/client/versioned/fake"
+	"gopkg.in/yaml.v2"
+	v3 "k8s.io/api/core/v1"
+	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
+	fake3 "k8s.io/client-go/kubernetes/fake"
+
+	miniov2 "github.com/minio/operator/pkg/apis/minio.min.io/v2"
+)
+
+func Test_checkAndCreatePrometheusAddlConfig(t *testing.T) {
+	type expect struct {
+		afterScrapeNumber  int
+		afterScrapePath    []string
+		afterScrapeName    []string
+		changedTokenNumber int
+	}
+	type arg struct {
+		accessKey     string
+		secretKey     string
+		beforeScrapes []configmaps.ScrapeConfig
+		paths         []string
+		expects       expect
+	}
+	type args struct {
+		name string
+		arg  arg
+	}
+	testRunCheckAndCreatePrometheusAddlConfig := func(t *testing.T, arg arg) {
+		beforeScrapesBytes, err := yaml.Marshal(arg.beforeScrapes)
+		if err != nil {
+			t.Fatal(err)
+		}
+		testNS := "default"
+		prometheus := &v1.Prometheus{
+			ObjectMeta: metav1.ObjectMeta{
+				Name:      "testPrometheus",
+				Namespace: testNS,
+			},
+			Spec: v1.PrometheusSpec{
+				CommonPrometheusFields: v1.CommonPrometheusFields{
+					AdditionalScrapeConfigs: &v3.SecretKeySelector{
+						Key: "",
+						LocalObjectReference: v3.LocalObjectReference{
+							Name: miniov2.PrometheusAddlScrapeConfigSecret,
+						},
+					},
+				},
+			},
+		}
+		beforeSecret := &v3.Secret{
+			ObjectMeta: metav1.ObjectMeta{
+				Name:      miniov2.PrometheusAddlScrapeConfigSecret,
+				Namespace: testNS,
+			},
+			Data: map[string][]byte{
+				miniov2.PrometheusAddlScrapeConfigKey: beforeScrapesBytes,
+			},
+		}
+		kubeclient := fake3.NewSimpleClientset(beforeSecret)
+		controller := Controller{
+			promClient:    fake.NewSimpleClientset(prometheus),
+			kubeClientSet: kubeclient,
+		}
+		tenant := &miniov2.Tenant{
+			ObjectMeta: metav1.ObjectMeta{
+				Name:      "testTenant",
+				Namespace: testNS,
+			},
+			Spec: miniov2.TenantSpec{
+				PrometheusOperatorScrapeMetricsPaths: arg.paths,
+			},
+		}
+		// bearer_token generated by unix timestamp
+		time.Sleep(time.Second)
+		err = controller.checkAndCreatePrometheusAddlConfig(context.Background(), tenant, arg.accessKey, arg.secretKey)
+		if err != nil {
+			t.Fatal(err)
+		}
+		afterSecret, err := kubeclient.CoreV1().Secrets(testNS).Get(context.Background(), miniov2.PrometheusAddlScrapeConfigSecret, metav1.GetOptions{})
+		if err != nil {
+			t.Fatal(err)
+		}
+		var afterScrapes []configmaps.ScrapeConfig
+		err = yaml.Unmarshal(afterSecret.Data[miniov2.PrometheusAddlScrapeConfigKey], &afterScrapes)
+		if err != nil {
+			t.Fatal(err)
+		}
+		if len(afterScrapes) != arg.expects.afterScrapeNumber {
+			t.Fatalf("Expected %d scrape configs, got %d", arg.expects.afterScrapeNumber, len(afterScrapes))
+		}
+		for i, scrape := range afterScrapes {
+			if scrape.JobName != arg.expects.afterScrapeName[i] {
+				t.Fatalf("Expected scrape config name %s, got %s", arg.expects.afterScrapeName[i], scrape.JobName)
+			}
+			if scrape.MetricsPath != arg.expects.afterScrapePath[i] {
+				t.Fatalf("Expected scrape config path %s, got %s", arg.expects.afterScrapePath[i], scrape.MetricsPath)
+			}
+		}
+		changedTokenNumber := 0
+		for _, afterScrape := range afterScrapes {
+			for _, scrape := range arg.beforeScrapes {
+				if scrape.JobName == afterScrape.JobName {
+					if scrape.BearerToken != afterScrape.BearerToken {
+						changedTokenNumber++
+					}
+					break
+				}
+			}
+		}
+		if changedTokenNumber != arg.expects.changedTokenNumber {
+			t.Fatalf("Expected %d changed tokens, got %d", arg.expects.changedTokenNumber, changedTokenNumber)
+		}
+	}
+	tests := []args{
+		{
+			name: "testDefault",
+			arg: arg{
+				accessKey:     "accessKey",
+				secretKey:     "secretKey",
+				beforeScrapes: []configmaps.ScrapeConfig{},
+				expects: expect{
+					afterScrapeNumber:  1,
+					afterScrapePath:    []string{"/minio/v2/metrics/cluster"},
+					afterScrapeName:    []string{"testTenant-minio-job-0"},
+					changedTokenNumber: 0,
+				},
+			},
+		},
+		{
+			name: "testFirst",
+			arg: arg{
+				accessKey:     "accessKey",
+				secretKey:     "secretKey",
+				paths:         []string{"/minio/v2/metrics/cluster", "/minio/metrics/v3/api"},
+				beforeScrapes: []configmaps.ScrapeConfig{},
+				expects: expect{
+					afterScrapeNumber:  2,
+					afterScrapePath:    []string{"/minio/v2/metrics/cluster", "/minio/metrics/v3/api"},
+					afterScrapeName:    []string{"testTenant-minio-job-0", "testTenant-minio-job-1"},
+					changedTokenNumber: 0,
+				},
+			},
+		},
+		{
+			name: "testAlreadyHave",
+			arg: arg{
+				accessKey: "accessKey",
+				secretKey: "secretKey",
+				paths:     []string{"/minio/v2/metrics/cluster", "/minio/metrics/v3/api"},
+				beforeScrapes: []configmaps.ScrapeConfig{
+					{
+						JobName: "testTarget",
+						StaticConfigs: []configmaps.StaticConfig{
+							{
+								Targets: []string{"testTarget"},
+							},
+						},
+					},
+				},
+				expects: expect{
+					afterScrapeNumber:  3,
+					afterScrapePath:    []string{"", "/minio/v2/metrics/cluster", "/minio/metrics/v3/api"},
+					afterScrapeName:    []string{"testTarget", "testTenant-minio-job-0", "testTenant-minio-job-1"},
+					changedTokenNumber: 0,
+				},
+			},
+		},
+		{
+			name: "testNoChange",
+			arg: arg{
+				accessKey: "accessKey",
+				secretKey: "secretKey",
+				paths:     []string{"/minio/v2/metrics/cluster", "/minio/metrics/v3/api"},
+				beforeScrapes: []configmaps.ScrapeConfig{
+					{
+						JobName: "testTarget",
+						StaticConfigs: []configmaps.StaticConfig{
+							{
+								Targets: []string{"testTarget"},
+							},
+						},
+					},
+					{
+						JobName:     "testTenant-minio-job-0",
+						BearerToken: (&miniov2.Tenant{}).GenBearerToken("accessKey", "secretKey"),
+						MetricsPath: "/minio/v2/metrics/cluster",
+						Scheme:      "https",
+						TLSConfig: configmaps.TLSConfig{
+							CAFile: "/var/run/secrets/kubernetes.io/serviceaccount/ca.crt",
+						},
+						StaticConfigs: []configmaps.StaticConfig{
+							{
+								Targets: []string{"minio.default.svc.cluster.local:443"},
+							},
+						},
+					},
+					{
+						JobName:     "testTenant-minio-job-1",
+						BearerToken: (&miniov2.Tenant{}).GenBearerToken("accessKey", "secretKey"),
+						MetricsPath: "/minio/metrics/v3/api",
+						Scheme:      "https",
+						TLSConfig: configmaps.TLSConfig{
+							CAFile: "/var/run/secrets/kubernetes.io/serviceaccount/ca.crt",
+						},
+						StaticConfigs: []configmaps.StaticConfig{
+							{
+								Targets: []string{"minio.default.svc.cluster.local:443"},
+							},
+						},
+					},
+				},
+				expects: expect{
+					afterScrapeNumber:  3,
+					afterScrapePath:    []string{"", "/minio/v2/metrics/cluster", "/minio/metrics/v3/api"},
+					afterScrapeName:    []string{"testTarget", "testTenant-minio-job-0", "testTenant-minio-job-1"},
+					changedTokenNumber: 0,
+				},
+			},
+		},
+		{
+			name: "testPasswordChange",
+			arg: arg{
+				accessKey: "accessKeyChanged",
+				secretKey: "secretKeyChanged",
+				paths:     []string{"/minio/v2/metrics/cluster", "/minio/metrics/v3/api"},
+				beforeScrapes: []configmaps.ScrapeConfig{
+					{
+						JobName: "testTarget",
+						StaticConfigs: []configmaps.StaticConfig{
+							{
+								Targets: []string{"testTarget"},
+							},
+						},
+					},
+					{
+						JobName:     "testTenant-minio-job-0",
+						BearerToken: (&miniov2.Tenant{}).GenBearerToken("accessKey", "secretKey"),
+						MetricsPath: "/minio/v2/metrics/cluster",
+						Scheme:      "https",
+						TLSConfig: configmaps.TLSConfig{
+							CAFile: "/var/run/secrets/kubernetes.io/serviceaccount/ca.crt",
+						},
+						StaticConfigs: []configmaps.StaticConfig{
+							{
+								Targets: []string{"minio.default.svc.cluster.local:443"},
+							},
+						},
+					},
+					{
+						JobName:     "testTenant-minio-job-1",
+						BearerToken: (&miniov2.Tenant{}).GenBearerToken("accessKey", "secretKey"),
+						MetricsPath: "/minio/metrics/v3/api",
+						Scheme:      "https",
+						TLSConfig: configmaps.TLSConfig{
+							CAFile: "/var/run/secrets/kubernetes.io/serviceaccount/ca.crt",
+						},
+						StaticConfigs: []configmaps.StaticConfig{
+							{
+								Targets: []string{"minio.default.svc.cluster.local:443"},
+							},
+						},
+					},
+				},
+				expects: expect{
+					afterScrapeNumber:  3,
+					afterScrapePath:    []string{"", "/minio/v2/metrics/cluster", "/minio/metrics/v3/api"},
+					afterScrapeName:    []string{"testTarget", "testTenant-minio-job-0", "testTenant-minio-job-1"},
+					changedTokenNumber: 2,
+				},
+			},
+		},
+	}
+	for _, tt := range tests {
+		t.Run(tt.name, func(t *testing.T) {
+			testRunCheckAndCreatePrometheusAddlConfig(t, tt.arg)
+		})
+	}
+}