This is an automated email from the ASF dual-hosted git repository.

kezhenxu94 pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/skywalking-swck.git


The following commit(s) were added to refs/heads/master by this push:
     new ca58ceb  Bump the actions-deps group across 1 directory with 4 updates 
(#176)
ca58ceb is described below

commit ca58ceb8a5f719509ee3e811d47e62307f815eb0
Author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
AuthorDate: Wed Feb 11 18:46:07 2026 +0800

    Bump the actions-deps group across 1 directory with 4 updates (#176)
    
    * Bump the actions-deps group across 1 directory with 4 updates
    
    Bumps the actions-deps group with 3 updates in the /operator directory: 
[k8s.io/api](https://github.com/kubernetes/api), 
[k8s.io/client-go](https://github.com/kubernetes/client-go) and 
[sigs.k8s.io/controller-runtime](https://github.com/kubernetes-sigs/controller-runtime).
    
    
    Updates `k8s.io/api` from 0.35.0 to 0.35.1
    - [Commits](https://github.com/kubernetes/api/compare/v0.35.0...v0.35.1)
    
    Updates `k8s.io/apimachinery` from 0.35.0 to 0.35.1
    - 
[Commits](https://github.com/kubernetes/apimachinery/compare/v0.35.0...v0.35.1)
    
    Updates `k8s.io/client-go` from 0.35.0 to 0.35.1
    - 
[Changelog](https://github.com/kubernetes/client-go/blob/master/CHANGELOG.md)
    - 
[Commits](https://github.com/kubernetes/client-go/compare/v0.35.0...v0.35.1)
    
    Updates `sigs.k8s.io/controller-runtime` from 0.22.4 to 0.23.1
    - [Release 
notes](https://github.com/kubernetes-sigs/controller-runtime/releases)
    - 
[Changelog](https://github.com/kubernetes-sigs/controller-runtime/blob/main/RELEASE.md)
    - 
[Commits](https://github.com/kubernetes-sigs/controller-runtime/compare/v0.22.4...v0.23.1)
    
    ---
    updated-dependencies:
    - dependency-name: k8s.io/api
      dependency-version: 0.35.1
      dependency-type: direct:production
      update-type: version-update:semver-patch
      dependency-group: actions-deps
    - dependency-name: k8s.io/apimachinery
      dependency-version: 0.35.1
      dependency-type: direct:production
      update-type: version-update:semver-patch
      dependency-group: actions-deps
    - dependency-name: k8s.io/client-go
      dependency-version: 0.35.1
      dependency-type: direct:production
      update-type: version-update:semver-patch
      dependency-group: actions-deps
    - dependency-name: sigs.k8s.io/controller-runtime
      dependency-version: 0.23.1
      dependency-type: direct:production
      update-type: version-update:semver-minor
      dependency-group: actions-deps
    ...
    
    Signed-off-by: dependabot[bot] <[email protected]>
    
    * fix builds
    
    ---------
    
    Signed-off-by: dependabot[bot] <[email protected]>
    Co-authored-by: dependabot[bot] 
<49699333+dependabot[bot]@users.noreply.github.com>
    Co-authored-by: kezhenxu94 <[email protected]>
---
 hack/install-kubebuilder.sh                        |  6 +-
 operator/Makefile                                  |  2 +-
 .../apis/operator/v1alpha1/banyandb_webhook.go     | 38 ++----------
 .../operator/v1alpha1/eventexporter_webhook.go     | 35 ++---------
 operator/apis/operator/v1alpha1/fetcher_webhook.go | 35 ++---------
 .../apis/operator/v1alpha1/javaagent_webhook.go    | 35 ++---------
 .../apis/operator/v1alpha1/oapserver_webhook.go    | 35 ++---------
 .../operator/v1alpha1/oapserverconfig_webhook.go   | 35 ++---------
 .../v1alpha1/oapserverdynamicconfig_webhook.go     | 36 +++--------
 .../apis/operator/v1alpha1/satellite_webhook.go    | 37 +++--------
 operator/apis/operator/v1alpha1/storage_webhook.go | 37 ++---------
 operator/apis/operator/v1alpha1/swagent_webhook.go | 35 ++---------
 operator/apis/operator/v1alpha1/ui_webhook.go      | 35 ++---------
 .../operator/v1alpha1/zz_generated.deepcopy.go     |  2 +-
 .../operator.skywalking.apache.org_banyandbs.yaml  |  2 +-
 .../controllers/operator/banyandb_controller.go    |  4 +-
 .../operator/eventexporter_controller.go           |  4 +-
 .../controllers/operator/fetcher_controller.go     |  4 +-
 .../controllers/operator/oapserver_controller.go   |  4 +-
 .../controllers/operator/satellite_controller.go   |  4 +-
 .../controllers/operator/storage_controller.go     |  4 +-
 operator/controllers/operator/ui_controller.go     |  4 +-
 operator/go.mod                                    | 21 +++----
 operator/go.sum                                    | 71 ++++++----------------
 operator/main.go                                   | 14 ++---
 operator/pkg/kubernetes/apply.go                   |  8 +--
 26 files changed, 127 insertions(+), 420 deletions(-)

diff --git a/hack/install-kubebuilder.sh b/hack/install-kubebuilder.sh
index de7e2e8..953bdd7 100755
--- a/hack/install-kubebuilder.sh
+++ b/hack/install-kubebuilder.sh
@@ -19,11 +19,11 @@ set -ex
 
 os=$(go env GOOS)
 arch=$(go env GOARCH)
-export K8S_VERSION=1.19.2
+export K8S_VERSION=1.30.0
 export PATH=$PATH:/usr/local/kubebuilder/bin
 sudo mkdir -p /usr/local/kubebuilder/bin
 curl -sSLo kubebuilder 
https://github.com/kubernetes-sigs/kubebuilder/releases/download/v3.2.0/kubebuilder_${os}_${arch}
 sudo mv ./kubebuilder /usr/local/bin/
 
-curl -sSLo envtest-bins.tar.gz 
"https://go.kubebuilder.io/test-tools/${K8S_VERSION}/${os}/${arch}";
-sudo  tar -C /usr/local/kubebuilder --strip-components=1 -zvxf 
envtest-bins.tar.gz
\ No newline at end of file
+curl -L -o kubebuilder 
"https://go.kubebuilder.io/dl/${K8S_VERSION}/${os}/${arch}";
+chmod +x kubebuilder && sudo mv kubebuilder /usr/local/bin/
diff --git a/operator/Makefile b/operator/Makefile
index 660d509..b4797cf 100644
--- a/operator/Makefile
+++ b/operator/Makefile
@@ -19,7 +19,7 @@
 # Image URL to use all building/pushing image targets
 OPERATOR_IMG ?= controller:latest
 # ENVTEST_K8S_VERSION refers to the version of kubebuilder assets to be 
downloaded by envtest binary.
-ENVTEST_K8S_VERSION = 1.22
+ENVTEST_K8S_VERSION = 1.30.0
 
 # Setting SHELL to bash allows bash commands to be executed by recipes.
 # This is a requirement for 'setup-envtest.sh' in the test target.
diff --git a/operator/apis/operator/v1alpha1/banyandb_webhook.go 
b/operator/apis/operator/v1alpha1/banyandb_webhook.go
index 5fe78ec..9da0715 100644
--- a/operator/apis/operator/v1alpha1/banyandb_webhook.go
+++ b/operator/apis/operator/v1alpha1/banyandb_webhook.go
@@ -21,19 +21,15 @@ import (
        "context"
        "fmt"
 
-       apierrors "k8s.io/apimachinery/pkg/api/errors"
-       "k8s.io/apimachinery/pkg/runtime"
        ctrl "sigs.k8s.io/controller-runtime"
        logf "sigs.k8s.io/controller-runtime/pkg/log"
-       "sigs.k8s.io/controller-runtime/pkg/webhook"
        "sigs.k8s.io/controller-runtime/pkg/webhook/admission"
 )
 
 var banyandbLog = logf.Log.WithName("banyandb-resource")
 
 func (r *BanyanDB) SetupWebhookWithManager(mgr ctrl.Manager) error {
-       return ctrl.NewWebhookManagedBy(mgr).
-               For(r).
+       return ctrl.NewWebhookManagedBy(mgr, r).
                WithDefaulter(r).
                WithValidator(r).
                Complete()
@@ -42,14 +38,7 @@ func (r *BanyanDB) SetupWebhookWithManager(mgr ctrl.Manager) 
error {
 // nolint: lll
 
//+kubebuilder:webhook:path=/mutate-operator-skywalking-apache-org-v1alpha1-banyandb,mutating=true,failurePolicy=fail,sideEffects=None,groups=operator.skywalking.apache.org,resources=banyandbs,verbs=create;update,versions=v1alpha1,name=mbanyandb.kb.io,admissionReviewVersions=v1
 
-var _ webhook.CustomDefaulter = &BanyanDB{}
-
-func (r *BanyanDB) Default(_ context.Context, o runtime.Object) error {
-       banyandb, ok := o.(*BanyanDB)
-       if !ok {
-               return apierrors.NewBadRequest("object is not a BanyanDB")
-       }
-
+func (r *BanyanDB) Default(_ context.Context, banyandb *BanyanDB) error {
        banyandbLog.Info("default", "name", banyandb.Name)
 
        if banyandb.Spec.Version == "" {
@@ -72,34 +61,17 @@ func (r *BanyanDB) Default(_ context.Context, o 
runtime.Object) error {
 // nolint: lll
 // 
+kubebuilder:webhook:admissionReviewVersions=v1,sideEffects=None,verbs=create;update,path=/validate-operator-skywalking-apache-org-v1alpha1-banyandb,mutating=false,failurePolicy=fail,groups=operator.skywalking.apache.org,resources=banyandbs,versions=v1alpha1,name=vbanyandb.kb.io
 
-var _ webhook.CustomValidator = &BanyanDB{}
-
-func (r *BanyanDB) ValidateCreate(_ context.Context, o runtime.Object) 
(admission.Warnings, error) {
-       banyandb, ok := o.(*BanyanDB)
-       if !ok {
-               return nil, apierrors.NewBadRequest("object is not a BanyanDB")
-       }
-
+func (r *BanyanDB) ValidateCreate(_ context.Context, banyandb *BanyanDB) 
(admission.Warnings, error) {
        banyandbLog.Info("validate create", "name", banyandb.Name)
        return nil, banyandb.validate()
 }
 
-func (r *BanyanDB) ValidateUpdate(_ context.Context, o runtime.Object, _ 
runtime.Object) (admission.Warnings, error) {
-       banyandb, ok := o.(*BanyanDB)
-       if !ok {
-               return nil, apierrors.NewBadRequest("object is not a BanyanDB")
-       }
-
+func (r *BanyanDB) ValidateUpdate(_ context.Context, banyandb *BanyanDB, _ 
*BanyanDB) (admission.Warnings, error) {
        banyandbLog.Info("validate update", "name", banyandb.Name)
        return nil, banyandb.validate()
 }
 
-func (r *BanyanDB) ValidateDelete(_ context.Context, o runtime.Object) 
(admission.Warnings, error) {
-       banyandb, ok := o.(*BanyanDB)
-       if !ok {
-               return nil, apierrors.NewBadRequest("object is not a BanyanDB")
-       }
-
+func (r *BanyanDB) ValidateDelete(_ context.Context, banyandb *BanyanDB) 
(admission.Warnings, error) {
        banyandbLog.Info("validate delete", "name", banyandb.Name)
        return nil, banyandb.validate()
 }
diff --git a/operator/apis/operator/v1alpha1/eventexporter_webhook.go 
b/operator/apis/operator/v1alpha1/eventexporter_webhook.go
index 8235635..9cac4f0 100644
--- a/operator/apis/operator/v1alpha1/eventexporter_webhook.go
+++ b/operator/apis/operator/v1alpha1/eventexporter_webhook.go
@@ -21,11 +21,8 @@ import (
        "context"
        "fmt"
 
-       apierrors "k8s.io/apimachinery/pkg/api/errors"
-       "k8s.io/apimachinery/pkg/runtime"
        ctrl "sigs.k8s.io/controller-runtime"
        logf "sigs.k8s.io/controller-runtime/pkg/log"
-       "sigs.k8s.io/controller-runtime/pkg/webhook"
        "sigs.k8s.io/controller-runtime/pkg/webhook/admission"
 )
 
@@ -38,8 +35,7 @@ const (
 var eventexporterlog = logf.Log.WithName("eventexporter-resource")
 
 func (r *EventExporter) SetupWebhookWithManager(mgr ctrl.Manager) error {
-       return ctrl.NewWebhookManagedBy(mgr).
-               For(r).
+       return ctrl.NewWebhookManagedBy(mgr, r).
                WithDefaulter(r).
                WithValidator(r).
                Complete()
@@ -48,15 +44,8 @@ func (r *EventExporter) SetupWebhookWithManager(mgr 
ctrl.Manager) error {
 // nolint: lll
 
//+kubebuilder:webhook:path=/mutate-operator-skywalking-apache-org-v1alpha1-eventexporter,mutating=true,failurePolicy=fail,sideEffects=None,groups=operator.skywalking.apache.org,resources=eventexporters,verbs=create;update,versions=v1alpha1,name=meventexporter.kb.io,admissionReviewVersions=v1
 
-var _ webhook.CustomDefaulter = &EventExporter{}
-
 // Default implements webhook.CustomDefaulter so a webhook will be registered 
for the type
-func (r *EventExporter) Default(_ context.Context, o runtime.Object) error {
-       eventexporter, ok := o.(*EventExporter)
-       if !ok {
-               return apierrors.NewBadRequest("object is not a EventExporter")
-       }
-
+func (r *EventExporter) Default(_ context.Context, eventexporter 
*EventExporter) error {
        eventexporterlog.Info("default", "name", eventexporter.Name)
 
        if eventexporter.Spec.Version == "" {
@@ -77,35 +66,23 @@ func (r *EventExporter) Default(_ context.Context, o 
runtime.Object) error {
 // nolint: lll
 // 
+kubebuilder:webhook:admissionReviewVersions=v1,sideEffects=None,path=/mutate-operator-skywalking-apache-org-v1alpha1-eventexporter,mutating=true,failurePolicy=fail,groups=operator.skywalking.apache.org,resources=eventexporters,verbs=create;update,versions=v1alpha1,name=meventexporter.kb.io
 
-var _ webhook.CustomValidator = &EventExporter{}
-
 // ValidateCreate implements webhook.CustomValidator so a webhook will be 
registered for the type
-func (r *EventExporter) ValidateCreate(_ context.Context, o runtime.Object) 
(admission.Warnings, error) {
-       eventexporter, ok := o.(*EventExporter)
-       if !ok {
-               return nil, apierrors.NewBadRequest("object is not a 
EventExporter")
-       }
-
+func (r *EventExporter) ValidateCreate(_ context.Context, eventexporter 
*EventExporter) (admission.Warnings, error) {
        eventexporterlog.Info("validate create", "name", eventexporter.Name)
 
        return nil, eventexporter.validate()
 }
 
 // ValidateUpdate implements webhook.CustomValidator so a webhook will be 
registered for the type
-func (r *EventExporter) ValidateUpdate(_ context.Context, o runtime.Object, _ 
runtime.Object) (admission.Warnings, error) {
-       eventexporter, ok := o.(*EventExporter)
-       if !ok {
-               return nil, apierrors.NewBadRequest("object is not a 
EventExporter")
-       }
-
+func (r *EventExporter) ValidateUpdate(_ context.Context, eventexporter 
*EventExporter, _ *EventExporter) (admission.Warnings, error) {
        eventexporterlog.Info("validate update", "name", eventexporter.Name)
 
        return nil, eventexporter.validate()
 }
 
 // ValidateDelete implements webhook.CustomValidator so a webhook will be 
registered for the type
-func (r *EventExporter) ValidateDelete(_ context.Context, _ runtime.Object) 
(admission.Warnings, error) {
-       eventexporterlog.Info("validate delete", "name", r.Name)
+func (r *EventExporter) ValidateDelete(_ context.Context, eventexporter 
*EventExporter) (admission.Warnings, error) {
+       eventexporterlog.Info("validate delete", "name", eventexporter.Name)
 
        return nil, nil
 }
diff --git a/operator/apis/operator/v1alpha1/fetcher_webhook.go 
b/operator/apis/operator/v1alpha1/fetcher_webhook.go
index 6d561f8..0755345 100644
--- a/operator/apis/operator/v1alpha1/fetcher_webhook.go
+++ b/operator/apis/operator/v1alpha1/fetcher_webhook.go
@@ -21,11 +21,8 @@ import (
        "context"
        "fmt"
 
-       apierrors "k8s.io/apimachinery/pkg/api/errors"
-       "k8s.io/apimachinery/pkg/runtime"
        ctrl "sigs.k8s.io/controller-runtime"
        logf "sigs.k8s.io/controller-runtime/pkg/log"
-       "sigs.k8s.io/controller-runtime/pkg/webhook"
        "sigs.k8s.io/controller-runtime/pkg/webhook/admission"
 )
 
@@ -33,8 +30,7 @@ import (
 var fetcherlog = logf.Log.WithName("fetcher-resource")
 
 func (r *Fetcher) SetupWebhookWithManager(mgr ctrl.Manager) error {
-       return ctrl.NewWebhookManagedBy(mgr).
-               For(r).
+       return ctrl.NewWebhookManagedBy(mgr, r).
                WithDefaulter(r).
                WithValidator(r).
                Complete()
@@ -43,15 +39,8 @@ func (r *Fetcher) SetupWebhookWithManager(mgr ctrl.Manager) 
error {
 // nolint: lll
 // 
+kubebuilder:webhook:admissionReviewVersions=v1,sideEffects=None,path=/mutate-operator-skywalking-apache-org-v1alpha1-fetcher,mutating=true,failurePolicy=fail,groups=operator.skywalking.apache.org,resources=fetchers,verbs=create;update,versions=v1alpha1,name=mfetcher.kb.io
 
-var _ webhook.CustomDefaulter = &Fetcher{}
-
 // Default implements webhook.CustomDefaulter so a webhook will be registered 
for the type
-func (r *Fetcher) Default(_ context.Context, o runtime.Object) error {
-       fetcher, ok := o.(*Fetcher)
-       if !ok {
-               return apierrors.NewBadRequest("object is not a Fetcher")
-       }
-
+func (r *Fetcher) Default(_ context.Context, fetcher *Fetcher) error {
        fetcherlog.Info("default", "name", fetcher.Name)
        if fetcher.Spec.ClusterName == "" {
                fetcher.Spec.ClusterName = fetcher.Name
@@ -62,33 +51,21 @@ func (r *Fetcher) Default(_ context.Context, o 
runtime.Object) error {
 // nolint: lll
 // 
+kubebuilder:webhook:admissionReviewVersions=v1,sideEffects=None,verbs=create;update,path=/validate-operator-skywalking-apache-org-v1alpha1-fetcher,mutating=false,failurePolicy=fail,groups=operator.skywalking.apache.org,resources=fetchers,versions=v1alpha1,name=vfetcher.kb.io
 
-var _ webhook.CustomValidator = &Fetcher{}
-
 // ValidateCreate implements webhook.CustomValidator so a webhook will be 
registered for the type
-func (r *Fetcher) ValidateCreate(_ context.Context, o runtime.Object) 
(admission.Warnings, error) {
-       fetcher, ok := o.(*Fetcher)
-       if !ok {
-               return nil, apierrors.NewBadRequest("object is not a Fetcher")
-       }
-
+func (r *Fetcher) ValidateCreate(_ context.Context, fetcher *Fetcher) 
(admission.Warnings, error) {
        fetcherlog.Info("validate create", "name", fetcher.Name)
        return nil, fetcher.validate()
 }
 
 // ValidateUpdate implements webhook.CustomValidator so a webhook will be 
registered for the type
-func (r *Fetcher) ValidateUpdate(_ context.Context, o runtime.Object, _ 
runtime.Object) (admission.Warnings, error) {
-       fetcher, ok := o.(*Fetcher)
-       if !ok {
-               return nil, apierrors.NewBadRequest("object is not a Fetcher")
-       }
-
+func (r *Fetcher) ValidateUpdate(_ context.Context, fetcher *Fetcher, _ 
*Fetcher) (admission.Warnings, error) {
        fetcherlog.Info("validate update", "name", fetcher.Name)
        return nil, fetcher.validate()
 }
 
 // ValidateDelete implements webhook.CustomValidator so a webhook will be 
registered for the type
-func (r *Fetcher) ValidateDelete(_ context.Context, _ runtime.Object) 
(admission.Warnings, error) {
-       fetcherlog.Info("validate delete", "name", r.Name)
+func (r *Fetcher) ValidateDelete(_ context.Context, fetcher *Fetcher) 
(admission.Warnings, error) {
+       fetcherlog.Info("validate delete", "name", fetcher.Name)
        return nil, nil
 }
 
diff --git a/operator/apis/operator/v1alpha1/javaagent_webhook.go 
b/operator/apis/operator/v1alpha1/javaagent_webhook.go
index 8768371..d690710 100644
--- a/operator/apis/operator/v1alpha1/javaagent_webhook.go
+++ b/operator/apis/operator/v1alpha1/javaagent_webhook.go
@@ -21,11 +21,8 @@ import (
        "context"
        "fmt"
 
-       apierrors "k8s.io/apimachinery/pkg/api/errors"
-       "k8s.io/apimachinery/pkg/runtime"
        ctrl "sigs.k8s.io/controller-runtime"
        logf "sigs.k8s.io/controller-runtime/pkg/log"
-       "sigs.k8s.io/controller-runtime/pkg/webhook"
        "sigs.k8s.io/controller-runtime/pkg/webhook/admission"
 )
 
@@ -39,8 +36,7 @@ const (
 )
 
 func (r *JavaAgent) SetupWebhookWithManager(mgr ctrl.Manager) error {
-       return ctrl.NewWebhookManagedBy(mgr).
-               For(r).
+       return ctrl.NewWebhookManagedBy(mgr, r).
                WithDefaulter(r).
                WithValidator(r).
                Complete()
@@ -49,15 +45,8 @@ func (r *JavaAgent) SetupWebhookWithManager(mgr 
ctrl.Manager) error {
 // nolint: lll
 // 
+kubebuilder:webhook:admissionReviewVersions=v1,sideEffects=None,path=/mutate-operator-skywalking-apache-org-v1alpha1-javaagent,mutating=true,failurePolicy=fail,groups=operator.skywalking.apache.org,resources=javaagents,verbs=create;update,versions=v1alpha1,name=mjavaagent.kb.io
 
-var _ webhook.CustomDefaulter = &JavaAgent{}
-
 // Default implements webhook.CustomDefaulter so a webhook will be registered 
for the type
-func (r *JavaAgent) Default(_ context.Context, o runtime.Object) error {
-       javaagent, ok := o.(*JavaAgent)
-       if !ok {
-               return apierrors.NewBadRequest("object is not a JavaAgent")
-       }
-
+func (r *JavaAgent) Default(_ context.Context, javaagent *JavaAgent) error {
        javaagentlog.Info("default", "name", javaagent.Name)
 
        config := javaagent.Spec.AgentConfiguration
@@ -81,33 +70,21 @@ func (r *JavaAgent) Default(_ context.Context, o 
runtime.Object) error {
 // nolint: lll
 // 
+kubebuilder:webhook:admissionReviewVersions=v1,sideEffects=None,verbs=create;update,path=/validate-operator-skywalking-apache-org-v1alpha1-javaagent,mutating=false,failurePolicy=fail,groups=operator.skywalking.apache.org,resources=javaagents,versions=v1alpha1,name=vjavaagent.kb.io
 
-var _ webhook.CustomValidator = &JavaAgent{}
-
 // ValidateCreate implements webhook.CustomValidator so a webhook will be 
registered for the type
-func (r *JavaAgent) ValidateCreate(_ context.Context, o runtime.Object) 
(admission.Warnings, error) {
-       javaagent, ok := o.(*JavaAgent)
-       if !ok {
-               return nil, apierrors.NewBadRequest("object is not a JavaAgent")
-       }
-
+func (r *JavaAgent) ValidateCreate(_ context.Context, javaagent *JavaAgent) 
(admission.Warnings, error) {
        javaagentlog.Info("validate create", "name", javaagent.Name)
        return nil, javaagent.validate()
 }
 
 // ValidateUpdate implements webhook.CustomValidator so a webhook will be 
registered for the type
-func (r *JavaAgent) ValidateUpdate(_ context.Context, o runtime.Object, _ 
runtime.Object) (admission.Warnings, error) {
-       javaagent, ok := o.(*JavaAgent)
-       if !ok {
-               return nil, apierrors.NewBadRequest("object is not a JavaAgent")
-       }
-
+func (r *JavaAgent) ValidateUpdate(_ context.Context, javaagent *JavaAgent, _ 
*JavaAgent) (admission.Warnings, error) {
        javaagentlog.Info("validate update", "name", javaagent.Name)
        return nil, javaagent.validate()
 }
 
 // ValidateDelete implements webhook.CustomValidator so a webhook will be 
registered for the type
-func (r *JavaAgent) ValidateDelete(_ context.Context, _ runtime.Object) 
(admission.Warnings, error) {
-       javaagentlog.Info("validate delete", "name", r.Name)
+func (r *JavaAgent) ValidateDelete(_ context.Context, javaagent *JavaAgent) 
(admission.Warnings, error) {
+       javaagentlog.Info("validate delete", "name", javaagent.Name)
        return nil, nil
 }
 
diff --git a/operator/apis/operator/v1alpha1/oapserver_webhook.go 
b/operator/apis/operator/v1alpha1/oapserver_webhook.go
index c90a0e9..4733f34 100644
--- a/operator/apis/operator/v1alpha1/oapserver_webhook.go
+++ b/operator/apis/operator/v1alpha1/oapserver_webhook.go
@@ -21,11 +21,8 @@ import (
        "context"
        "fmt"
 
-       apierrors "k8s.io/apimachinery/pkg/api/errors"
-       "k8s.io/apimachinery/pkg/runtime"
        ctrl "sigs.k8s.io/controller-runtime"
        logf "sigs.k8s.io/controller-runtime/pkg/log"
-       "sigs.k8s.io/controller-runtime/pkg/webhook"
        "sigs.k8s.io/controller-runtime/pkg/webhook/admission"
 )
 
@@ -35,8 +32,7 @@ const annotationKeyIstioSetup = "istio-setup-command"
 var oapserverlog = logf.Log.WithName("oapserver-resource")
 
 func (r *OAPServer) SetupWebhookWithManager(mgr ctrl.Manager) error {
-       return ctrl.NewWebhookManagedBy(mgr).
-               For(r).
+       return ctrl.NewWebhookManagedBy(mgr, r).
                WithDefaulter(r).
                WithValidator(r).
                Complete()
@@ -45,15 +41,8 @@ func (r *OAPServer) SetupWebhookWithManager(mgr 
ctrl.Manager) error {
 // nolint: lll
 // 
+kubebuilder:webhook:admissionReviewVersions=v1,sideEffects=None,path=/mutate-operator-skywalking-apache-org-v1alpha1-oapserver,mutating=true,failurePolicy=fail,groups=operator.skywalking.apache.org,resources=oapservers,verbs=create;update,versions=v1alpha1,name=moapserver.kb.io
 
-var _ webhook.CustomDefaulter = &OAPServer{}
-
 // Default implements webhook.CustomDefaulter so a webhook will be registered 
for the type
-func (r *OAPServer) Default(_ context.Context, o runtime.Object) error {
-       oapserver, ok := o.(*OAPServer)
-       if !ok {
-               return apierrors.NewBadRequest("object is not a OAPServer")
-       }
-
+func (r *OAPServer) Default(_ context.Context, oapserver *OAPServer) error {
        oapserverlog.Info("default", "name", oapserver.Name)
 
        image := oapserver.Spec.Image
@@ -75,33 +64,21 @@ func (r *OAPServer) Default(_ context.Context, o 
runtime.Object) error {
 // nolint: lll
 // 
+kubebuilder:webhook:admissionReviewVersions=v1,sideEffects=None,verbs=create;update,path=/validate-operator-skywalking-apache-org-v1alpha1-oapserver,mutating=false,failurePolicy=fail,groups=operator.skywalking.apache.org,resources=oapservers,versions=v1alpha1,name=voapserver.kb.io
 
-var _ webhook.CustomValidator = &OAPServer{}
-
 // ValidateCreate implements webhook.CustomValidator so a webhook will be 
registered for the type
-func (r *OAPServer) ValidateCreate(_ context.Context, o runtime.Object) 
(admission.Warnings, error) {
-       oapserver, ok := o.(*OAPServer)
-       if !ok {
-               return nil, apierrors.NewBadRequest("object is not a OAPServer")
-       }
-
+func (r *OAPServer) ValidateCreate(_ context.Context, oapserver *OAPServer) 
(admission.Warnings, error) {
        oapserverlog.Info("validate create", "name", oapserver.Name)
        return nil, oapserver.validate()
 }
 
 // ValidateUpdate implements webhook.CustomValidator so a webhook will be 
registered for the type
-func (r *OAPServer) ValidateUpdate(_ context.Context, o runtime.Object, _ 
runtime.Object) (admission.Warnings, error) {
-       oapserver, ok := o.(*OAPServer)
-       if !ok {
-               return nil, apierrors.NewBadRequest("object is not a OAPServer")
-       }
-
+func (r *OAPServer) ValidateUpdate(_ context.Context, oapserver *OAPServer, _ 
*OAPServer) (admission.Warnings, error) {
        oapserverlog.Info("validate update", "name", oapserver.Name)
        return nil, oapserver.validate()
 }
 
 // ValidateDelete implements webhook.CustomValidator so a webhook will be 
registered for the type
-func (r *OAPServer) ValidateDelete(_ context.Context, _ runtime.Object) 
(admission.Warnings, error) {
-       oapserverlog.Info("validate delete", "name", r.Name)
+func (r *OAPServer) ValidateDelete(_ context.Context, oapserver *OAPServer) 
(admission.Warnings, error) {
+       oapserverlog.Info("validate delete", "name", oapserver.Name)
        return nil, nil
 }
 
diff --git a/operator/apis/operator/v1alpha1/oapserverconfig_webhook.go 
b/operator/apis/operator/v1alpha1/oapserverconfig_webhook.go
index 090d582..5018780 100644
--- a/operator/apis/operator/v1alpha1/oapserverconfig_webhook.go
+++ b/operator/apis/operator/v1alpha1/oapserverconfig_webhook.go
@@ -21,11 +21,8 @@ import (
        "context"
        "fmt"
 
-       apierrors "k8s.io/apimachinery/pkg/api/errors"
-       "k8s.io/apimachinery/pkg/runtime"
        ctrl "sigs.k8s.io/controller-runtime"
        logf "sigs.k8s.io/controller-runtime/pkg/log"
-       "sigs.k8s.io/controller-runtime/pkg/webhook"
        "sigs.k8s.io/controller-runtime/pkg/webhook/admission"
 )
 
@@ -33,8 +30,7 @@ import (
 var oapserverconfiglog = logf.Log.WithName("oapserverconfig-resource")
 
 func (r *OAPServerConfig) SetupWebhookWithManager(mgr ctrl.Manager) error {
-       return ctrl.NewWebhookManagedBy(mgr).
-               For(r).
+       return ctrl.NewWebhookManagedBy(mgr, r).
                WithDefaulter(r).
                WithValidator(r).
                Complete()
@@ -43,15 +39,8 @@ func (r *OAPServerConfig) SetupWebhookWithManager(mgr 
ctrl.Manager) error {
 // nolint: lll
 
//+kubebuilder:webhook:path=/mutate-operator-skywalking-apache-org-v1alpha1-oapserverconfig,mutating=true,failurePolicy=fail,sideEffects=None,groups=operator.skywalking.apache.org,resources=oapserverconfigs,verbs=create;update,versions=v1alpha1,name=moapserverconfig.kb.io,admissionReviewVersions=v1
 
-var _ webhook.CustomDefaulter = &OAPServerConfig{}
-
 // Default implements webhook.CustomDefaulter so a webhook will be registered 
for the type
-func (r *OAPServerConfig) Default(_ context.Context, o runtime.Object) error {
-       oapserverconfig, ok := o.(*OAPServerConfig)
-       if !ok {
-               return apierrors.NewBadRequest("object is not a 
OAPServerConfig")
-       }
-
+func (r *OAPServerConfig) Default(_ context.Context, oapserverconfig 
*OAPServerConfig) error {
        oapserverconfiglog.Info("default", "name", oapserverconfig.Name)
 
        // Default version is "9.5.0"
@@ -65,33 +54,21 @@ func (r *OAPServerConfig) Default(_ context.Context, o 
runtime.Object) error {
 // nolint: lll
 
//+kubebuilder:webhook:path=/validate-operator-skywalking-apache-org-v1alpha1-oapserverconfig,mutating=false,failurePolicy=fail,sideEffects=None,groups=operator.skywalking.apache.org,resources=oapserverconfigs,verbs=create;update,versions=v1alpha1,name=voapserverconfig.kb.io,admissionReviewVersions=v1
 
-var _ webhook.CustomValidator = &OAPServerConfig{}
-
 // ValidateCreate implements webhook.CustomValidator so a webhook will be 
registered for the type
-func (r *OAPServerConfig) ValidateCreate(_ context.Context, o runtime.Object) 
(admission.Warnings, error) {
-       oapserverconfig, ok := o.(*OAPServerConfig)
-       if !ok {
-               return nil, apierrors.NewBadRequest("object is not a 
OAPServerConfig")
-       }
-
+func (r *OAPServerConfig) ValidateCreate(_ context.Context, oapserverconfig 
*OAPServerConfig) (admission.Warnings, error) {
        oapserverconfiglog.Info("validate create", "name", oapserverconfig.Name)
        return nil, oapserverconfig.validate()
 }
 
 // ValidateUpdate implements webhook.CustomValidator so a webhook will be 
registered for the type
-func (r *OAPServerConfig) ValidateUpdate(_ context.Context, o runtime.Object, 
_ runtime.Object) (admission.Warnings, error) {
-       oapserverconfig, ok := o.(*OAPServerConfig)
-       if !ok {
-               return nil, apierrors.NewBadRequest("object is not a 
OAPServerConfig")
-       }
-
+func (r *OAPServerConfig) ValidateUpdate(_ context.Context, oapserverconfig 
*OAPServerConfig, _ *OAPServerConfig) (admission.Warnings, error) {
        oapserverconfiglog.Info("validate update", "name", oapserverconfig.Name)
        return nil, oapserverconfig.validate()
 }
 
 // ValidateDelete implements webhook.CustomValidator so a webhook will be 
registered for the type
-func (r *OAPServerConfig) ValidateDelete(_ context.Context, _ runtime.Object) 
(admission.Warnings, error) {
-       oapserverconfiglog.Info("validate delete", "name", r.Name)
+func (r *OAPServerConfig) ValidateDelete(_ context.Context, oapserverconfig 
*OAPServerConfig) (admission.Warnings, error) {
+       oapserverconfiglog.Info("validate delete", "name", oapserverconfig.Name)
        return nil, nil
 }
 
diff --git a/operator/apis/operator/v1alpha1/oapserverdynamicconfig_webhook.go 
b/operator/apis/operator/v1alpha1/oapserverdynamicconfig_webhook.go
index de16ae4..4ce5db4 100644
--- a/operator/apis/operator/v1alpha1/oapserverdynamicconfig_webhook.go
+++ b/operator/apis/operator/v1alpha1/oapserverdynamicconfig_webhook.go
@@ -21,11 +21,8 @@ import (
        "context"
        "fmt"
 
-       apierrors "k8s.io/apimachinery/pkg/api/errors"
-       "k8s.io/apimachinery/pkg/runtime"
        ctrl "sigs.k8s.io/controller-runtime"
        logf "sigs.k8s.io/controller-runtime/pkg/log"
-       "sigs.k8s.io/controller-runtime/pkg/webhook"
        "sigs.k8s.io/controller-runtime/pkg/webhook/admission"
 )
 
@@ -33,8 +30,7 @@ import (
 var oapserverdynamicconfiglog = 
logf.Log.WithName("oapserverdynamicconfig-resource")
 
 func (r *OAPServerDynamicConfig) SetupWebhookWithManager(mgr ctrl.Manager) 
error {
-       return ctrl.NewWebhookManagedBy(mgr).
-               For(r).
+       return ctrl.NewWebhookManagedBy(mgr, r).
                WithDefaulter(r).
                WithValidator(r).
                Complete()
@@ -43,15 +39,8 @@ func (r *OAPServerDynamicConfig) SetupWebhookWithManager(mgr 
ctrl.Manager) error
 // nolint: lll
 
//+kubebuilder:webhook:path=/mutate-operator-skywalking-apache-org-v1alpha1-oapserverdynamicconfig,mutating=true,failurePolicy=fail,sideEffects=None,groups=operator.skywalking.apache.org,resources=oapserverdynamicconfigs,verbs=create;update,versions=v1alpha1,name=moapserverdynamicconfig.kb.io,admissionReviewVersions=v1
 
-var _ webhook.CustomDefaulter = &OAPServerDynamicConfig{}
-
 // Default implements webhook.CustomDefaulter so a webhook will be registered 
for the type
-func (r *OAPServerDynamicConfig) Default(_ context.Context, o runtime.Object) 
error {
-       oapserverdynamicconfig, ok := o.(*OAPServerDynamicConfig)
-       if !ok {
-               return apierrors.NewBadRequest("object is not a 
OAPServerDynamicConfig")
-       }
-
+func (r *OAPServerDynamicConfig) Default(_ context.Context, 
oapserverdynamicconfig *OAPServerDynamicConfig) error {
        oapserverdynamicconfiglog.Info("default", "name", 
oapserverdynamicconfig.Name)
 
        // Default version is "9.5.0"
@@ -69,33 +58,22 @@ func (r *OAPServerDynamicConfig) Default(_ context.Context, 
o runtime.Object) er
 // nolint: lll
 
//+kubebuilder:webhook:path=/validate-operator-skywalking-apache-org-v1alpha1-oapserverdynamicconfig,mutating=false,failurePolicy=fail,sideEffects=None,groups=operator.skywalking.apache.org,resources=oapserverdynamicconfigs,verbs=create;update,versions=v1alpha1,name=voapserverdynamicconfig.kb.io,admissionReviewVersions=v1
 
-var _ webhook.CustomValidator = &OAPServerDynamicConfig{}
-
 // ValidateCreate implements webhook.CustomValidator so a webhook will be 
registered for the type
-func (r *OAPServerDynamicConfig) ValidateCreate(_ context.Context, o 
runtime.Object) (admission.Warnings, error) {
-       oapserverdynamicconfig, ok := o.(*OAPServerDynamicConfig)
-       if !ok {
-               return nil, apierrors.NewBadRequest("object is not a 
OAPServerDynamicConfig")
-       }
-
+func (r *OAPServerDynamicConfig) ValidateCreate(_ context.Context, 
oapserverdynamicconfig *OAPServerDynamicConfig) (admission.Warnings, error) {
        oapserverdynamicconfiglog.Info("validate create", "name", 
oapserverdynamicconfig.Name)
        return nil, oapserverdynamicconfig.validate()
 }
 
 // ValidateUpdate implements webhook.CustomValidator so a webhook will be 
registered for the type
-func (r *OAPServerDynamicConfig) ValidateUpdate(_ context.Context, o 
runtime.Object, _ runtime.Object) (admission.Warnings, error) {
-       oapserverdynamicconfig, ok := o.(*OAPServerDynamicConfig)
-       if !ok {
-               return nil, apierrors.NewBadRequest("object is not a 
OAPServerDynamicConfig")
-       }
-
+// nolint: lll
+func (r *OAPServerDynamicConfig) ValidateUpdate(_ context.Context, 
oapserverdynamicconfig *OAPServerDynamicConfig, _ *OAPServerDynamicConfig) 
(admission.Warnings, error) {
        oapserverdynamicconfiglog.Info("validate update", "name", 
oapserverdynamicconfig.Name)
        return nil, oapserverdynamicconfig.validate()
 }
 
 // ValidateDelete implements webhook.CustomValidator so a webhook will be 
registered for the type
-func (r *OAPServerDynamicConfig) ValidateDelete(_ context.Context, _ 
runtime.Object) (admission.Warnings, error) {
-       oapserverdynamicconfiglog.Info("validate delete", "name", r.Name)
+func (r *OAPServerDynamicConfig) ValidateDelete(_ context.Context, 
oapserverdynamicconfig *OAPServerDynamicConfig) (admission.Warnings, error) {
+       oapserverdynamicconfiglog.Info("validate delete", "name", 
oapserverdynamicconfig.Name)
        return nil, nil
 }
 
diff --git a/operator/apis/operator/v1alpha1/satellite_webhook.go 
b/operator/apis/operator/v1alpha1/satellite_webhook.go
index d009ff8..d010936 100644
--- a/operator/apis/operator/v1alpha1/satellite_webhook.go
+++ b/operator/apis/operator/v1alpha1/satellite_webhook.go
@@ -21,11 +21,8 @@ import (
        "context"
        "fmt"
 
-       apierrors "k8s.io/apimachinery/pkg/api/errors"
-       "k8s.io/apimachinery/pkg/runtime"
        ctrl "sigs.k8s.io/controller-runtime"
        logf "sigs.k8s.io/controller-runtime/pkg/log"
-       "sigs.k8s.io/controller-runtime/pkg/webhook"
        "sigs.k8s.io/controller-runtime/pkg/webhook/admission"
 )
 
@@ -33,8 +30,7 @@ import (
 var satellitelog = logf.Log.WithName("satellite-resource")
 
 func (r *Satellite) SetupWebhookWithManager(mgr ctrl.Manager) error {
-       return ctrl.NewWebhookManagedBy(mgr).
-               For(r).
+       return ctrl.NewWebhookManagedBy(mgr, r).
                WithDefaulter(r).
                WithValidator(r).
                Complete()
@@ -43,15 +39,8 @@ func (r *Satellite) SetupWebhookWithManager(mgr 
ctrl.Manager) error {
 //nolint: lll
 
//+kubebuilder:webhook:path=/mutate-operator-skywalking-apache-org-v1alpha1-satellite,mutating=true,failurePolicy=fail,sideEffects=None,groups=operator.skywalking.apache.org,resources=satellites,verbs=create;update,versions=v1alpha1,name=msatellite.kb.io,admissionReviewVersions=v1
 
-var _ webhook.CustomDefaulter = &Satellite{}
-
 // Default implements webhook.CustomDefaulter so a webhook will be registered 
for the type
-func (r *Satellite) Default(_ context.Context, o runtime.Object) error {
-       satellite, ok := o.(*Satellite)
-       if !ok {
-               return apierrors.NewBadRequest("object is not a Satellite")
-       }
-
+func (r *Satellite) Default(_ context.Context, satellite *Satellite) error {
        satellitelog.Info("default", "name", satellite.Name)
 
        image := satellite.Spec.Image
@@ -76,34 +65,22 @@ func (r *Satellite) Default(_ context.Context, o 
runtime.Object) error {
 //nolint: lll
 
//+kubebuilder:webhook:path=/validate-operator-skywalking-apache-org-v1alpha1-satellite,mutating=false,failurePolicy=fail,sideEffects=None,groups=operator.skywalking.apache.org,resources=satellites,verbs=create;update,versions=v1alpha1,name=vsatellite.kb.io,admissionReviewVersions=v1
 
-var _ webhook.CustomValidator = &Satellite{}
-
 // ValidateCreate implements webhook.CustomValidator so a webhook will be 
registered for the type
-func (r *Satellite) ValidateCreate(_ context.Context, o runtime.Object) 
(admission.Warnings, error) {
-       satellite, ok := o.(*Satellite)
-       if !ok {
-               return nil, apierrors.NewBadRequest("object is not a Satellite")
-       }
-
+func (r *Satellite) ValidateCreate(_ context.Context, satellite *Satellite) 
(admission.Warnings, error) {
        satellitelog.Info("validate create", "name", satellite.Name)
        return nil, satellite.validate()
 }
 
 // ValidateUpdate implements webhook.CustomValidator so a webhook will be 
registered for the type
-func (r *Satellite) ValidateUpdate(_ context.Context, o runtime.Object, _ 
runtime.Object) (admission.Warnings, error) {
-       satellite, ok := o.(*Satellite)
-       if !ok {
-               return nil, apierrors.NewBadRequest("object is not a Satellite")
-       }
-
+func (r *Satellite) ValidateUpdate(_ context.Context, satellite *Satellite, _ 
*Satellite) (admission.Warnings, error) {
        satellitelog.Info("validate update", "name", satellite.Name)
        return nil, satellite.validate()
 }
 
 // ValidateDelete implements webhook.CustomValidator so a webhook will be 
registered for the type
-func (r *Satellite) ValidateDelete(_ context.Context, _ runtime.Object) 
(admission.Warnings, error) {
-       satellitelog.Info("validate delete", "name", r.Name)
-       return nil, r.validate()
+func (r *Satellite) ValidateDelete(_ context.Context, satellite *Satellite) 
(admission.Warnings, error) {
+       satellitelog.Info("validate delete", "name", satellite.Name)
+       return nil, satellite.validate()
 }
 
 func (r *Satellite) validate() error {
diff --git a/operator/apis/operator/v1alpha1/storage_webhook.go 
b/operator/apis/operator/v1alpha1/storage_webhook.go
index 816fbe8..540ca1b 100644
--- a/operator/apis/operator/v1alpha1/storage_webhook.go
+++ b/operator/apis/operator/v1alpha1/storage_webhook.go
@@ -21,12 +21,10 @@ import (
        "context"
 
        apierrors "k8s.io/apimachinery/pkg/api/errors"
-       "k8s.io/apimachinery/pkg/runtime"
        "k8s.io/apimachinery/pkg/runtime/schema"
        "k8s.io/apimachinery/pkg/util/validation/field"
        ctrl "sigs.k8s.io/controller-runtime"
        logf "sigs.k8s.io/controller-runtime/pkg/log"
-       "sigs.k8s.io/controller-runtime/pkg/webhook"
        "sigs.k8s.io/controller-runtime/pkg/webhook/admission"
 )
 
@@ -34,8 +32,7 @@ import (
 var storagelog = logf.Log.WithName("storage-resource")
 
 func (r *Storage) SetupWebhookWithManager(mgr ctrl.Manager) error {
-       return ctrl.NewWebhookManagedBy(mgr).
-               For(r).
+       return ctrl.NewWebhookManagedBy(mgr, r).
                WithDefaulter(r).
                WithValidator(r).
                Complete()
@@ -44,15 +41,8 @@ func (r *Storage) SetupWebhookWithManager(mgr ctrl.Manager) 
error {
 // nolint: lll
 // 
+kubebuilder:webhook:admissionReviewVersions=v1,sideEffects=None,path=/mutate-operator-skywalking-apache-org-v1alpha1-storage,mutating=true,failurePolicy=fail,groups=operator.skywalking.apache.org,resources=storages,verbs=create;update,versions=v1alpha1,name=mstorage.kb.io
 
-var _ webhook.CustomDefaulter = &Storage{}
-
 // Default implements webhook.CustomDefaulter so a webhook will be registered 
for the type
-func (r *Storage) Default(_ context.Context, o runtime.Object) error {
-       storage, ok := o.(*Storage)
-       if !ok {
-               return apierrors.NewBadRequest("object is not a Storage")
-       }
-
+func (r *Storage) Default(_ context.Context, storage *Storage) error {
        storagelog.Info("default", "name", storage.Name)
        if storage.Spec.ConnectType == "internal" {
                if storage.Spec.Image == "" {
@@ -68,37 +58,20 @@ func (r *Storage) Default(_ context.Context, o 
runtime.Object) error {
 // nolint: lll
 // 
+kubebuilder:webhook:admissionReviewVersions=v1,sideEffects=None,verbs=create;update,path=/validate-operator-skywalking-apache-org-v1alpha1-storage,mutating=false,failurePolicy=fail,groups=operator.skywalking.apache.org,resources=storages,versions=v1alpha1,name=vstorage.kb.io
 
-var _ webhook.CustomValidator = &Storage{}
-
 // ValidateCreate implements webhook.CustomValidator so a webhook will be 
registered for the type
-func (r *Storage) ValidateCreate(_ context.Context, o runtime.Object) 
(admission.Warnings, error) {
-       storage, ok := o.(*Storage)
-       if !ok {
-               return nil, apierrors.NewBadRequest("object is not a Storage")
-       }
-
+func (r *Storage) ValidateCreate(_ context.Context, storage *Storage) 
(admission.Warnings, error) {
        storagelog.Info("validate create", "name", storage.Name)
        return nil, storage.valid()
 }
 
 // ValidateUpdate implements webhook.CustomValidator so a webhook will be 
registered for the type
-func (r *Storage) ValidateUpdate(_ context.Context, o runtime.Object, _ 
runtime.Object) (admission.Warnings, error) {
-       storage, ok := o.(*Storage)
-       if !ok {
-               return nil, apierrors.NewBadRequest("object is not a Storage")
-       }
-
+func (r *Storage) ValidateUpdate(_ context.Context, storage *Storage, _ 
*Storage) (admission.Warnings, error) {
        storagelog.Info("validate update", "name", storage.Name)
        return nil, storage.valid()
 }
 
 // ValidateDelete implements webhook.CustomValidator so a webhook will be 
registered for the type
-func (r *Storage) ValidateDelete(_ context.Context, o runtime.Object) 
(admission.Warnings, error) {
-       storage, ok := o.(*Storage)
-       if !ok {
-               return nil, apierrors.NewBadRequest("object is not a Storage")
-       }
-
+func (r *Storage) ValidateDelete(_ context.Context, storage *Storage) 
(admission.Warnings, error) {
        storagelog.Info("validate delete", "name", storage.Name)
        return nil, nil
 }
diff --git a/operator/apis/operator/v1alpha1/swagent_webhook.go 
b/operator/apis/operator/v1alpha1/swagent_webhook.go
index 4e06703..835f9b9 100644
--- a/operator/apis/operator/v1alpha1/swagent_webhook.go
+++ b/operator/apis/operator/v1alpha1/swagent_webhook.go
@@ -20,11 +20,8 @@ package v1alpha1
 import (
        "context"
 
-       apierrors "k8s.io/apimachinery/pkg/api/errors"
-       "k8s.io/apimachinery/pkg/runtime"
        ctrl "sigs.k8s.io/controller-runtime"
        logf "sigs.k8s.io/controller-runtime/pkg/log"
-       "sigs.k8s.io/controller-runtime/pkg/webhook"
        "sigs.k8s.io/controller-runtime/pkg/webhook/admission"
 )
 
@@ -32,8 +29,7 @@ import (
 var swagentlog = logf.Log.WithName("swagent-resource")
 
 func (r *SwAgent) SetupWebhookWithManager(mgr ctrl.Manager) error {
-       return ctrl.NewWebhookManagedBy(mgr).
-               For(r).
+       return ctrl.NewWebhookManagedBy(mgr, r).
                WithDefaulter(r).
                WithValidator(r).
                Complete()
@@ -42,15 +38,8 @@ func (r *SwAgent) SetupWebhookWithManager(mgr ctrl.Manager) 
error {
 // nolint: lll
 
//+kubebuilder:webhook:path=/mutate-operator-skywalking-apache-org-v1alpha1-swagent,mutating=true,failurePolicy=fail,sideEffects=None,groups=operator.skywalking.apache.org,resources=swagents,verbs=create;update,versions=v1alpha1,name=mswagent.kb.io,admissionReviewVersions=v1
 
-var _ webhook.CustomDefaulter = &SwAgent{}
-
 // Default implements webhook.CustomDefaulter so a webhook will be registered 
for the type
-func (r *SwAgent) Default(_ context.Context, o runtime.Object) error {
-       swagent, ok := o.(*SwAgent)
-       if !ok {
-               return apierrors.NewBadRequest("object is not a SwAgent")
-       }
-
+func (r *SwAgent) Default(_ context.Context, swagent *SwAgent) error {
        swagentlog.Info("default", "name", swagent.Name)
        swagent.setDefault()
        return nil
@@ -59,34 +48,22 @@ func (r *SwAgent) Default(_ context.Context, o 
runtime.Object) error {
 // nolint: lll
 
//+kubebuilder:webhook:path=/validate-operator-skywalking-apache-org-v1alpha1-swagent,mutating=false,failurePolicy=fail,sideEffects=None,groups=operator.skywalking.apache.org,resources=swagents,verbs=create;update,versions=v1alpha1,name=vswagent.kb.io,admissionReviewVersions=v1
 
-var _ webhook.CustomValidator = &SwAgent{}
-
 // ValidateCreate implements webhook.CustomValidator so a webhook will be 
registered for the type
-func (r *SwAgent) ValidateCreate(_ context.Context, o runtime.Object) 
(admission.Warnings, error) {
-       swagent, ok := o.(*SwAgent)
-       if !ok {
-               return nil, apierrors.NewBadRequest("object is not a SwAgent")
-       }
-
+func (r *SwAgent) ValidateCreate(_ context.Context, swagent *SwAgent) 
(admission.Warnings, error) {
        swagentlog.Info("validate create", "name", swagent.Name)
        r.setDefault()
        return nil, nil
 }
 
 // ValidateUpdate implements webhook.CustomValidator so a webhook will be 
registered for the type
-func (r *SwAgent) ValidateUpdate(_ context.Context, o runtime.Object, _ 
runtime.Object) (admission.Warnings, error) {
-       swagent, ok := o.(*SwAgent)
-       if !ok {
-               return nil, apierrors.NewBadRequest("object is not a SwAgent")
-       }
-
+func (r *SwAgent) ValidateUpdate(_ context.Context, swagent *SwAgent, _ 
*SwAgent) (admission.Warnings, error) {
        swagentlog.Info("validate update", "name", swagent.Name)
        return nil, nil
 }
 
 // ValidateDelete implements webhook.CustomValidator so a webhook will be 
registered for the type
-func (r *SwAgent) ValidateDelete(_ context.Context, _ runtime.Object) 
(admission.Warnings, error) {
-       swagentlog.Info("validate delete", "name", r.Name)
+func (r *SwAgent) ValidateDelete(_ context.Context, swagent *SwAgent) 
(admission.Warnings, error) {
+       swagentlog.Info("validate delete", "name", swagent.Name)
        return nil, nil
 }
 
diff --git a/operator/apis/operator/v1alpha1/ui_webhook.go 
b/operator/apis/operator/v1alpha1/ui_webhook.go
index 4c38656..0368d5c 100644
--- a/operator/apis/operator/v1alpha1/ui_webhook.go
+++ b/operator/apis/operator/v1alpha1/ui_webhook.go
@@ -21,11 +21,8 @@ import (
        "context"
        "fmt"
 
-       apierrors "k8s.io/apimachinery/pkg/api/errors"
-       "k8s.io/apimachinery/pkg/runtime"
        ctrl "sigs.k8s.io/controller-runtime"
        logf "sigs.k8s.io/controller-runtime/pkg/log"
-       "sigs.k8s.io/controller-runtime/pkg/webhook"
        "sigs.k8s.io/controller-runtime/pkg/webhook/admission"
 )
 
@@ -33,8 +30,7 @@ import (
 var uilog = logf.Log.WithName("ui-resource")
 
 func (r *UI) SetupWebhookWithManager(mgr ctrl.Manager) error {
-       return ctrl.NewWebhookManagedBy(mgr).
-               For(r).
+       return ctrl.NewWebhookManagedBy(mgr, r).
                WithDefaulter(r).
                WithValidator(r).
                Complete()
@@ -43,15 +39,8 @@ func (r *UI) SetupWebhookWithManager(mgr ctrl.Manager) error 
{
 // nolint: lll
 // 
+kubebuilder:webhook:admissionReviewVersions=v1,sideEffects=None,path=/mutate-operator-skywalking-apache-org-v1alpha1-ui,mutating=true,failurePolicy=fail,groups=operator.skywalking.apache.org,resources=uis,verbs=create;update,versions=v1alpha1,name=mui.kb.io
 
-var _ webhook.CustomDefaulter = &UI{}
-
 // Default implements webhook.CustomDefaulter so a webhook will be registered 
for the type
-func (r *UI) Default(_ context.Context, o runtime.Object) error {
-       ui, ok := o.(*UI)
-       if !ok {
-               return apierrors.NewBadRequest("object is not a UI")
-       }
-
+func (r *UI) Default(_ context.Context, ui *UI) error {
        uilog.Info("default", "name", ui.Name)
 
        if ui.Spec.Image == "" {
@@ -69,33 +58,21 @@ func (r *UI) Default(_ context.Context, o runtime.Object) 
error {
 // nolint: lll
 // 
+kubebuilder:webhook:admissionReviewVersions=v1,sideEffects=None,verbs=create;update,path=/validate-operator-skywalking-apache-org-v1alpha1-ui,mutating=false,failurePolicy=fail,groups=operator.skywalking.apache.org,resources=uis,versions=v1alpha1,name=vui.kb.io
 
-var _ webhook.CustomValidator = &UI{}
-
 // ValidateCreate implements webhook.CustomValidator so a webhook will be 
registered for the type
-func (r *UI) ValidateCreate(_ context.Context, o runtime.Object) 
(admission.Warnings, error) {
-       ui, ok := o.(*UI)
-       if !ok {
-               return nil, apierrors.NewBadRequest("object is not a UI")
-       }
-
+func (r *UI) ValidateCreate(_ context.Context, ui *UI) (admission.Warnings, 
error) {
        uilog.Info("validate create", "name", ui.Name)
        return nil, ui.validate()
 }
 
 // ValidateUpdate implements webhook.CustomValidator so a webhook will be 
registered for the type
-func (r *UI) ValidateUpdate(_ context.Context, o runtime.Object, _ 
runtime.Object) (admission.Warnings, error) {
-       ui, ok := o.(*UI)
-       if !ok {
-               return nil, apierrors.NewBadRequest("object is not a UI")
-       }
-
+func (r *UI) ValidateUpdate(_ context.Context, ui *UI, _ *UI) 
(admission.Warnings, error) {
        uilog.Info("validate update", "name", ui.Name)
        return nil, ui.validate()
 }
 
 // ValidateDelete implements webhook.CustomValidator so a webhook will be 
registered for the type
-func (r *UI) ValidateDelete(_ context.Context, _ runtime.Object) 
(admission.Warnings, error) {
-       uilog.Info("validate delete", "name", r.Name)
+func (r *UI) ValidateDelete(_ context.Context, ui *UI) (admission.Warnings, 
error) {
+       uilog.Info("validate delete", "name", ui.Name)
        return nil, nil
 }
 
diff --git a/operator/apis/operator/v1alpha1/zz_generated.deepcopy.go 
b/operator/apis/operator/v1alpha1/zz_generated.deepcopy.go
index 08f0a35..812490c 100644
--- a/operator/apis/operator/v1alpha1/zz_generated.deepcopy.go
+++ b/operator/apis/operator/v1alpha1/zz_generated.deepcopy.go
@@ -25,7 +25,7 @@ import (
        v1 "k8s.io/api/apps/v1"
        corev1 "k8s.io/api/core/v1"
        networkingv1 "k8s.io/api/networking/v1"
-       "k8s.io/apimachinery/pkg/runtime"
+       runtime "k8s.io/apimachinery/pkg/runtime"
 )
 
 // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, 
writing into out. in must be non-nil.
diff --git 
a/operator/config/crd/bases/operator.skywalking.apache.org_banyandbs.yaml 
b/operator/config/crd/bases/operator.skywalking.apache.org_banyandbs.yaml
index f008421..64fa207 100644
--- a/operator/config/crd/bases/operator.skywalking.apache.org_banyandbs.yaml
+++ b/operator/config/crd/bases/operator.skywalking.apache.org_banyandbs.yaml
@@ -1273,7 +1273,7 @@ spec:
                         resources:
                           description: |-
                             resources represents the minimum resources the 
volume should have.
-                            If RecoverVolumeExpansionFailure feature is 
enabled users are allowed to specify resource requirements
+                            Users are allowed to specify resource requirements
                             that are lower than previous value but must still 
be higher than capacity recorded in the
                             status field of the claim.
                             More info: 
https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources
diff --git a/operator/controllers/operator/banyandb_controller.go 
b/operator/controllers/operator/banyandb_controller.go
index 7d2dc62..3e8ae7f 100644
--- a/operator/controllers/operator/banyandb_controller.go
+++ b/operator/controllers/operator/banyandb_controller.go
@@ -26,7 +26,7 @@ import (
        apiequal "k8s.io/apimachinery/pkg/api/equality"
        apierrors "k8s.io/apimachinery/pkg/api/errors"
        "k8s.io/apimachinery/pkg/runtime"
-       "k8s.io/client-go/tools/record"
+       "k8s.io/client-go/tools/events"
        "k8s.io/client-go/util/retry"
        ctrl "sigs.k8s.io/controller-runtime"
        "sigs.k8s.io/controller-runtime/pkg/client"
@@ -42,7 +42,7 @@ type BanyanDBReconciler struct {
        client.Client
        Scheme   *runtime.Scheme
        FileRepo kubernetes.Repo
-       Recorder record.EventRecorder
+       Recorder events.EventRecorder
 }
 
 
//+kubebuilder:rbac:groups=operator.skywalking.apache.org,resources=banyandbs,verbs=get;list;watch;create;update;patch;delete
diff --git a/operator/controllers/operator/eventexporter_controller.go 
b/operator/controllers/operator/eventexporter_controller.go
index ba94285..bca0509 100644
--- a/operator/controllers/operator/eventexporter_controller.go
+++ b/operator/controllers/operator/eventexporter_controller.go
@@ -30,7 +30,7 @@ import (
        apierrors "k8s.io/apimachinery/pkg/api/errors"
        metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
        "k8s.io/apimachinery/pkg/runtime"
-       "k8s.io/client-go/tools/record"
+       "k8s.io/client-go/tools/events"
        "k8s.io/client-go/util/retry"
        ctrl "sigs.k8s.io/controller-runtime"
        "sigs.k8s.io/controller-runtime/pkg/client"
@@ -47,7 +47,7 @@ type EventExporterReconciler struct {
        client.Client
        Scheme   *runtime.Scheme
        FileRepo kubernetes.Repo
-       Recorder record.EventRecorder
+       Recorder events.EventRecorder
 }
 
 // 
+kubebuilder:rbac:groups=operator.skywalking.apache.org,resources=eventexporters,verbs=get;list;watch;create;update;patch;delete
diff --git a/operator/controllers/operator/fetcher_controller.go 
b/operator/controllers/operator/fetcher_controller.go
index 3b00e8d..112f3f4 100644
--- a/operator/controllers/operator/fetcher_controller.go
+++ b/operator/controllers/operator/fetcher_controller.go
@@ -26,7 +26,7 @@ import (
        core "k8s.io/api/core/v1"
        metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
        "k8s.io/apimachinery/pkg/runtime"
-       "k8s.io/client-go/tools/record"
+       "k8s.io/client-go/tools/events"
        "k8s.io/client-go/util/retry"
        ctrl "sigs.k8s.io/controller-runtime"
        "sigs.k8s.io/controller-runtime/pkg/client"
@@ -41,7 +41,7 @@ type FetcherReconciler struct {
        client.Client
        Scheme   *runtime.Scheme
        FileRepo kubernetes.Repo
-       Recorder record.EventRecorder
+       Recorder events.EventRecorder
 }
 
 // 
+kubebuilder:rbac:groups="",resources=configmaps,verbs=get;list;watch;create;update;patch;delete
diff --git a/operator/controllers/operator/oapserver_controller.go 
b/operator/controllers/operator/oapserver_controller.go
index c944570..a2b6bd8 100644
--- a/operator/controllers/operator/oapserver_controller.go
+++ b/operator/controllers/operator/oapserver_controller.go
@@ -30,7 +30,7 @@ import (
        apiequal "k8s.io/apimachinery/pkg/api/equality"
        apierrors "k8s.io/apimachinery/pkg/api/errors"
        "k8s.io/apimachinery/pkg/runtime"
-       "k8s.io/client-go/tools/record"
+       "k8s.io/client-go/tools/events"
        "k8s.io/client-go/util/retry"
        ctrl "sigs.k8s.io/controller-runtime"
        "sigs.k8s.io/controller-runtime/pkg/client"
@@ -47,7 +47,7 @@ type OAPServerReconciler struct {
        client.Client
        Scheme   *runtime.Scheme
        FileRepo kubernetes.Repo
-       Recorder record.EventRecorder
+       Recorder events.EventRecorder
 }
 
 // 
+kubebuilder:rbac:groups=operator.skywalking.apache.org,resources=oapservers,verbs=get;list;watch;create;update;patch;delete
diff --git a/operator/controllers/operator/satellite_controller.go 
b/operator/controllers/operator/satellite_controller.go
index 4735aa4..45047bb 100644
--- a/operator/controllers/operator/satellite_controller.go
+++ b/operator/controllers/operator/satellite_controller.go
@@ -26,7 +26,7 @@ import (
        core "k8s.io/api/core/v1"
        apiequal "k8s.io/apimachinery/pkg/api/equality"
        "k8s.io/apimachinery/pkg/runtime"
-       "k8s.io/client-go/tools/record"
+       "k8s.io/client-go/tools/events"
        "k8s.io/client-go/util/retry"
        ctrl "sigs.k8s.io/controller-runtime"
        "sigs.k8s.io/controller-runtime/pkg/client"
@@ -41,7 +41,7 @@ type SatelliteReconciler struct {
        client.Client
        Scheme   *runtime.Scheme
        FileRepo kubernetes.Repo
-       Recorder record.EventRecorder
+       Recorder events.EventRecorder
 }
 
 
//+kubebuilder:rbac:groups=operator.skywalking.apache.org,resources=satellites,verbs=get;list;watch;create;update;patch;delete
diff --git a/operator/controllers/operator/storage_controller.go 
b/operator/controllers/operator/storage_controller.go
index 95924b9..8b0ca1a 100644
--- a/operator/controllers/operator/storage_controller.go
+++ b/operator/controllers/operator/storage_controller.go
@@ -41,7 +41,7 @@ import (
        "k8s.io/apimachinery/pkg/runtime"
        kubeclient "k8s.io/client-go/kubernetes"
        "k8s.io/client-go/rest"
-       "k8s.io/client-go/tools/record"
+       "k8s.io/client-go/tools/events"
        "k8s.io/client-go/util/retry"
        ctrl "sigs.k8s.io/controller-runtime"
        "sigs.k8s.io/controller-runtime/pkg/client"
@@ -57,7 +57,7 @@ type StorageReconciler struct {
        client.Client
        Scheme     *runtime.Scheme
        FileRepo   kubernetes.Repo
-       Recorder   record.EventRecorder
+       Recorder   events.EventRecorder
        RestConfig *rest.Config
 }
 
diff --git a/operator/controllers/operator/ui_controller.go 
b/operator/controllers/operator/ui_controller.go
index 924e07d..85b22e0 100644
--- a/operator/controllers/operator/ui_controller.go
+++ b/operator/controllers/operator/ui_controller.go
@@ -28,7 +28,7 @@ import (
        apiequal "k8s.io/apimachinery/pkg/api/equality"
        apierrors "k8s.io/apimachinery/pkg/api/errors"
        "k8s.io/apimachinery/pkg/runtime"
-       "k8s.io/client-go/tools/record"
+       "k8s.io/client-go/tools/events"
        "k8s.io/client-go/util/retry"
        ctrl "sigs.k8s.io/controller-runtime"
        "sigs.k8s.io/controller-runtime/pkg/client"
@@ -44,7 +44,7 @@ type UIReconciler struct {
        client.Client
        Scheme   *runtime.Scheme
        FileRepo kubernetes.Repo
-       Recorder record.EventRecorder
+       Recorder events.EventRecorder
 }
 
 // 
+kubebuilder:rbac:groups=operator.skywalking.apache.org,resources=uis,verbs=get;list;watch;create;update;patch;delete
diff --git a/operator/go.mod b/operator/go.mod
index b8117e6..6293f35 100644
--- a/operator/go.mod
+++ b/operator/go.mod
@@ -9,10 +9,10 @@ require (
        github.com/go-logr/logr v1.4.3
        github.com/sirupsen/logrus v1.9.4
        gopkg.in/yaml.v3 v3.0.1
-       k8s.io/api v0.35.0
-       k8s.io/apimachinery v0.35.0
-       k8s.io/client-go v0.35.0
-       sigs.k8s.io/controller-runtime v0.22.4
+       k8s.io/api v0.35.1
+       k8s.io/apimachinery v0.35.1
+       k8s.io/client-go v0.35.1
+       sigs.k8s.io/controller-runtime v0.23.1
        software.sslmate.com/src/go-pkcs12 v0.7.0
 )
 
@@ -31,7 +31,6 @@ require (
        github.com/go-openapi/jsonpointer v0.21.0 // indirect
        github.com/go-openapi/jsonreference v0.20.2 // indirect
        github.com/go-openapi/swag v0.23.0 // indirect
-       github.com/gogo/protobuf v1.3.2 // indirect
        github.com/google/btree v1.1.3 // indirect
        github.com/google/gnostic-models v0.7.0 // indirect
        github.com/google/go-cmp v0.7.0 // indirect
@@ -46,10 +45,10 @@ require (
        github.com/modern-go/reflect2 v1.0.3-0.20250322232337-35a7c28c31ee // 
indirect
        github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // 
indirect
        github.com/pmezard/go-difflib v1.0.0 // indirect
-       github.com/prometheus/client_golang v1.22.0 // indirect
-       github.com/prometheus/client_model v0.6.1 // indirect
-       github.com/prometheus/common v0.62.0 // indirect
-       github.com/prometheus/procfs v0.15.1 // indirect
+       github.com/prometheus/client_golang v1.23.2 // indirect
+       github.com/prometheus/client_model v0.6.2 // indirect
+       github.com/prometheus/common v0.66.1 // indirect
+       github.com/prometheus/procfs v0.16.1 // indirect
        github.com/shopspring/decimal v1.4.0 // indirect
        github.com/spf13/cast v1.7.0 // indirect
        github.com/spf13/pflag v1.0.9 // indirect
@@ -71,12 +70,12 @@ require (
        gopkg.in/evanphx/json-patch.v4 v4.13.0 // indirect
        gopkg.in/inf.v0 v0.9.1 // indirect
        gopkg.in/yaml.v2 v2.4.0 // indirect
-       k8s.io/apiextensions-apiserver v0.34.1 // indirect
+       k8s.io/apiextensions-apiserver v0.35.0 // indirect
        k8s.io/klog/v2 v2.130.1 // indirect
        k8s.io/kube-openapi v0.0.0-20250910181357-589584f1c912 // indirect
        k8s.io/utils v0.0.0-20251002143259-bc988d571ff4 // indirect
        sigs.k8s.io/json v0.0.0-20250730193827-2d320260d730 // indirect
        sigs.k8s.io/randfill v1.0.0 // indirect
-       sigs.k8s.io/structured-merge-diff/v6 v6.3.0 // indirect
+       sigs.k8s.io/structured-merge-diff/v6 
v6.3.2-0.20260122202528-d9cc6641c482 // indirect
        sigs.k8s.io/yaml v1.6.0 // indirect
 )
diff --git a/operator/go.sum b/operator/go.sum
index 9ec3227..00019b9 100644
--- a/operator/go.sum
+++ b/operator/go.sum
@@ -43,8 +43,6 @@ github.com/go-openapi/swag v0.23.0 
h1:vsEVJDUo2hPJ2tu0/Xc+4noaxyEffXNIs3cOULZ+Gr
 github.com/go-openapi/swag v0.23.0/go.mod 
h1:esZ8ITTYEsH1V2trKHjAN8Ai7xHb8RV+YSZ577vPjgQ=
 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/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q=
-github.com/gogo/protobuf v1.3.2/go.mod 
h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q=
 github.com/google/btree v1.1.3 h1:CVpQJjYgC4VbzxeGVHfvZrv1ctoYCAI8vbl07Fcxlyg=
 github.com/google/btree v1.1.3/go.mod 
h1:qOPhT0dTNdNzV6Z/lhRX0YXUafgPLFUh+gZMl761Gm4=
 github.com/google/gnostic-models v0.7.0 
h1:qwTtogB15McXDaNqTZdzPJRHvaVJlAl+HVQnLmJEJxo=
@@ -64,8 +62,6 @@ github.com/josharian/intern v1.0.0 
h1:vlS4z54oSdjm0bgjRigI+G1HpF+tI+9rE5LLzOg8Hm
 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.18.0 
h1:c/Cqfb0r+Yi+JtIEq73FWXVkRonBlf0CRNYc8Zttxdo=
 github.com/klauspost/compress v1.18.0/go.mod 
h1:2Pp+KzxcywXVXMr50+X0Q/Lsb43OQHYWRCY2AiWywWQ=
 github.com/kr/pretty v0.2.1/go.mod 
h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI=
@@ -97,14 +93,14 @@ github.com/onsi/gomega v1.38.2 
h1:eZCjf2xjZAqe+LeWvKb5weQ+NcPwX84kqJ0cZNxok2A=
 github.com/onsi/gomega v1.38.2/go.mod 
h1:W2MJcYxRGV63b418Ai34Ud0hEdTVXq9NW9+Sx6uXf3k=
 github.com/pmezard/go-difflib v1.0.0 
h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
 github.com/pmezard/go-difflib v1.0.0/go.mod 
h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
-github.com/prometheus/client_golang v1.22.0 
h1:rb93p9lokFEsctTys46VnV1kLCDpVZ0a/Y92Vm0Zc6Q=
-github.com/prometheus/client_golang v1.22.0/go.mod 
h1:R7ljNsLXhuQXYZYtw6GAE9AZg8Y7vEW5scdCXrWRXC0=
-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.62.0 
h1:xasJaQlnWAeyHdUBeGjXmutelfJHWMRr+Fg4QszZ2Io=
-github.com/prometheus/common v0.62.0/go.mod 
h1:vyBcEuLSvWos9B1+CyL7JZ2up+uFzXhkqml0W5zIY1I=
-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/client_golang v1.23.2 
h1:Je96obch5RDVy3FDMndoUsjAhG5Edi49h0RJWRi/o0o=
+github.com/prometheus/client_golang v1.23.2/go.mod 
h1:Tb1a6LWHB3/SPIzCoaDXI4I8UHKeFTEQ1YCr+0Gyqmg=
+github.com/prometheus/client_model v0.6.2 
h1:oBsgwpGs7iVziMvrGhE53c/GrLUsZdHnqNwqPLxwZyk=
+github.com/prometheus/client_model v0.6.2/go.mod 
h1:y3m2F6Gdpfy6Ut/GBsUqTWZqCUvMVzSfMLjcu6wAwpE=
+github.com/prometheus/common v0.66.1 
h1:h5E0h5/Y8niHc5DlaLlWLArTQI7tMrsfQjHV+d9ZoGs=
+github.com/prometheus/common v0.66.1/go.mod 
h1:gcaUsgf3KfRSwHY4dIMXLPV0K/Wg1oZ8+SbZk/HH/dA=
+github.com/prometheus/procfs v0.16.1 
h1:hZ15bTNuirocR6u0JZ6BAHHmwS1p8B4P6MRqxtzMyRg=
+github.com/prometheus/procfs v0.16.1/go.mod 
h1:teAbpZRB1iIAJYREa1LsoWUXykVXA1KlTmWl8x/U+Is=
 github.com/rogpeppe/go-internal v1.14.1 
h1:UQB4HGPB6osV0SQTLymcB4TgvyWu6ZyliaW0tI/otEQ=
 github.com/rogpeppe/go-internal v1.14.1/go.mod 
h1:MaRKkUm5W0goXpeCfT7UZI6fk/L7L7so1lCWt35ZSgc=
 github.com/shopspring/decimal v1.4.0 
h1:bxl37RwXBklmTi0C79JfXCEBD1cqqHt0bbgBAGFp81k=
@@ -128,8 +124,6 @@ github.com/stretchr/testify v1.11.1 
h1:7s2iGBzp5EwR7/aIZr8ao5+dra3wiQyKjjFuvgVKu
 github.com/stretchr/testify v1.11.1/go.mod 
h1:wZwfW3scLgRK+23gO65QZefKpKQRnfz6sD981Nm4B6U=
 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=
 go.uber.org/goleak v1.3.0 h1:2K3zAYmnTNqV73imy9J1T3WC+gmCePx2hEGkimedGto=
 go.uber.org/goleak v1.3.0/go.mod 
h1:CoHD4mav9JJNrW/WLlf7HGZPjdw8EucARQHekz1X6bE=
 go.uber.org/multierr v1.11.0 h1:blXXJkSxSSfBVBlC76pxqeO+LN3aDfLQo+309xJstO0=
@@ -140,51 +134,26 @@ go.yaml.in/yaml/v2 v2.4.3 
h1:6gvOSjQoTB3vt1l+CU+tSyi/HOjfOjRLJ4YwYZGwRO0=
 go.yaml.in/yaml/v2 v2.4.3/go.mod 
h1:zSxWcmIDjOzPXpjlTTbAsKokqkDNAVtZO0WOMiT90s8=
 go.yaml.in/yaml/v3 v3.0.4 h1:tfq32ie2Jv2UxXFdLJdh3jXuOzWiL1fo0bu/FbuKpbc=
 go.yaml.in/yaml/v3 v3.0.4/go.mod 
h1:DhzuOOF2ATzADvBadXxruRBLzYTpT36CKvDb3+aBEFg=
-golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod 
h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
-golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod 
h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
-golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod 
h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
 golang.org/x/crypto v0.45.0 h1:jMBrvKuj23MTlT0bQEOBcAE0mjg8mK9RXFhRH6nyF3Q=
 golang.org/x/crypto v0.45.0/go.mod 
h1:XTGrrkGJve7CYK7J8PEww4aY7gM3qMCElcJQ8n8JdX4=
-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.29.0 h1:HV8lRxZC4l2cr3Zq1LvtOsi/ThTgWnUk/y64QSs8GwA=
 golang.org/x/mod v0.29.0/go.mod h1:NyhrlYXJ2H4eJiRy/WDBO6HMqZQ6q9nk4JzS3NuCK+w=
-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.47.0 h1:Mx+4dIFzqraBXUugkia1OOvlD6LemFo1ALMHjrXDOhY=
 golang.org/x/net v0.47.0/go.mod h1:/jNxtkgq5yWUGYkaZGqo27cfGZ1c5Nen03aYrrKpVRU=
 golang.org/x/oauth2 v0.30.0 h1:dnDm7JmhM45NNpd8FDDeLhK6FwqbOf4MLCM9zb1BOHI=
 golang.org/x/oauth2 v0.30.0/go.mod 
h1:B++QgG3ZKulg6sRPGD/mqlHQs5rB3Ml9erfeDY7xKlU=
-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.18.0 h1:kr88TuHDroi+UVf+0hZnirlk8o8T+4MrK6mr60WkH/I=
 golang.org/x/sync v0.18.0/go.mod 
h1:9KTHXmSnoGruLpwFjVSX0lNNA75CykiMECbovNTZqGI=
-golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod 
h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
-golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod 
h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod 
h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
 golang.org/x/sys v0.38.0 h1:3yZWxaJjBmCWXqhN1qh02AkOnCQ1poK6oF+a7xWL6Gc=
 golang.org/x/sys v0.38.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks=
 golang.org/x/term v0.37.0 h1:8EGAD0qCmHYZg6J17DvsMy9/wJ7/D/4pV/wfnld5lTU=
 golang.org/x/term v0.37.0/go.mod 
h1:5pB4lxRNYYVZuTLmy8oR2BH8dflOR+IbTYFD8fi3254=
-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.31.0 h1:aC8ghyu4JhP8VojJ2lEHBnochRno1sgL6nEi9WGFGMM=
 golang.org/x/text v0.31.0/go.mod 
h1:tKRAlv61yKIjGGHX/4tP1LTbc13YSec1pxVEWXzfoeM=
 golang.org/x/time v0.9.0 h1:EsRrnYcQiGH+5FfbgvV4AP7qEZstoyrHB0DzarOQ4ZY=
 golang.org/x/time v0.9.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM=
-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.38.0 h1:Hx2Xv8hISq8Lm16jvBZ2VQf+RLmbd7wVUsALibYI/IQ=
 golang.org/x/tools v0.38.0/go.mod 
h1:yEsQ/d/YK8cjh0L6rZlY8tgtlKiBNTL14pGDJPJpYQs=
-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=
 gomodules.xyz/jsonpatch/v2 v2.4.0 
h1:Ci3iUJyx9UeRx7CeFN8ARgGbkESwJK+KB9lLcWxY/Zw=
 gomodules.xyz/jsonpatch/v2 v2.4.0/go.mod 
h1:AH3dM2RI6uoBZxn3LVrfvJ3E0/9dG4cSrbuBJT4moAY=
 google.golang.org/protobuf v1.36.8 
h1:xHScyCOEuuwZEc6UtSOvPbAT4zRh0xcNRYekJwfqyMc=
@@ -201,28 +170,28 @@ gopkg.in/yaml.v2 v2.4.0/go.mod 
h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ=
 gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod 
h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
 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.35.0 h1:iBAU5LTyBI9vw3L5glmat1njFK34srdLmktWwLTprlY=
-k8s.io/api v0.35.0/go.mod h1:AQ0SNTzm4ZAczM03QH42c7l3bih1TbAXYo0DkF8ktnA=
-k8s.io/apiextensions-apiserver v0.34.1 
h1:NNPBva8FNAPt1iSVwIE0FsdrVriRXMsaWFMqJbII2CI=
-k8s.io/apiextensions-apiserver v0.34.1/go.mod 
h1:hP9Rld3zF5Ay2Of3BeEpLAToP+l4s5UlxiHfqRaRcMc=
-k8s.io/apimachinery v0.35.0 h1:Z2L3IHvPVv/MJ7xRxHEtk6GoJElaAqDCCU0S6ncYok8=
-k8s.io/apimachinery v0.35.0/go.mod 
h1:jQCgFZFR1F4Ik7hvr2g84RTJSZegBc8yHgFWKn//hns=
-k8s.io/client-go v0.35.0 h1:IAW0ifFbfQQwQmga0UdoH0yvdqrbwMdq9vIFEhRpxBE=
-k8s.io/client-go v0.35.0/go.mod h1:q2E5AAyqcbeLGPdoRB+Nxe3KYTfPce1Dnu1myQdqz9o=
+k8s.io/api v0.35.1 h1:0PO/1FhlK/EQNVK5+txc4FuhQibV25VLSdLMmGpDE/Q=
+k8s.io/api v0.35.1/go.mod h1:28uR9xlXWml9eT0uaGo6y71xK86JBELShLy4wR1XtxM=
+k8s.io/apiextensions-apiserver v0.35.0 
h1:3xHk2rTOdWXXJM+RDQZJvdx0yEOgC0FgQ1PlJatA5T4=
+k8s.io/apiextensions-apiserver v0.35.0/go.mod 
h1:E1Ahk9SADaLQ4qtzYFkwUqusXTcaV2uw3l14aqpL2LU=
+k8s.io/apimachinery v0.35.1 h1:yxO6gV555P1YV0SANtnTjXYfiivaTPvCTKX6w6qdDsU=
+k8s.io/apimachinery v0.35.1/go.mod 
h1:jQCgFZFR1F4Ik7hvr2g84RTJSZegBc8yHgFWKn//hns=
+k8s.io/client-go v0.35.1 h1:+eSfZHwuo/I19PaSxqumjqZ9l5XiTEKbIaJ+j1wLcLM=
+k8s.io/client-go v0.35.1/go.mod h1:1p1KxDt3a0ruRfc/pG4qT/3oHmUj1AhSHEcxNSGg+OA=
 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-20250910181357-589584f1c912 
h1:Y3gxNAuB0OBLImH611+UDZcmKS3g6CthxToOb37KgwE=
 k8s.io/kube-openapi v0.0.0-20250910181357-589584f1c912/go.mod 
h1:kdmbQkyfwUagLfXIad1y2TdrjPFWp2Q89B3qkRwf/pQ=
 k8s.io/utils v0.0.0-20251002143259-bc988d571ff4 
h1:SjGebBtkBqHFOli+05xYbK8YF1Dzkbzn+gDM4X9T4Ck=
 k8s.io/utils v0.0.0-20251002143259-bc988d571ff4/go.mod 
h1:OLgZIPagt7ERELqWJFomSt595RzquPNLL48iOWgYOg0=
-sigs.k8s.io/controller-runtime v0.22.4 
h1:GEjV7KV3TY8e+tJ2LCTxUTanW4z/FmNB7l327UfMq9A=
-sigs.k8s.io/controller-runtime v0.22.4/go.mod 
h1:+QX1XUpTXN4mLoblf4tqr5CQcyHPAki2HLXqQMY6vh8=
+sigs.k8s.io/controller-runtime v0.23.1 
h1:TjJSM80Nf43Mg21+RCy3J70aj/W6KyvDtOlpKf+PupE=
+sigs.k8s.io/controller-runtime v0.23.1/go.mod 
h1:B6COOxKptp+YaUT5q4l6LqUJTRpizbgf9KSRNdQGns0=
 sigs.k8s.io/json v0.0.0-20250730193827-2d320260d730 
h1:IpInykpT6ceI+QxKBbEflcR5EXP7sU1kvOlxwZh5txg=
 sigs.k8s.io/json v0.0.0-20250730193827-2d320260d730/go.mod 
h1:mdzfpAEoE6DHQEN0uh9ZbOCuHbLK5wOm7dK4ctXE9Tg=
 sigs.k8s.io/randfill v1.0.0 h1:JfjMILfT8A6RbawdsK2JXGBR5AQVfd+9TbzrlneTyrU=
 sigs.k8s.io/randfill v1.0.0/go.mod 
h1:XeLlZ/jmk4i1HRopwe7/aU3H5n1zNUcX6TM94b3QxOY=
-sigs.k8s.io/structured-merge-diff/v6 v6.3.0 
h1:jTijUJbW353oVOd9oTlifJqOGEkUw2jB/fXCbTiQEco=
-sigs.k8s.io/structured-merge-diff/v6 v6.3.0/go.mod 
h1:M3W8sfWvn2HhQDIbGWj3S099YozAsymCo/wrT5ohRUE=
+sigs.k8s.io/structured-merge-diff/v6 v6.3.2-0.20260122202528-d9cc6641c482 
h1:2WOzJpHUBVrrkDjU4KBT8n5LDcj824eX0I5UKcgeRUs=
+sigs.k8s.io/structured-merge-diff/v6 
v6.3.2-0.20260122202528-d9cc6641c482/go.mod 
h1:M3W8sfWvn2HhQDIbGWj3S099YozAsymCo/wrT5ohRUE=
 sigs.k8s.io/yaml v1.6.0 h1:G8fkbMSAFqgEFgh4b1wmtzDnioxFCUgTZhlbj5P9QYs=
 sigs.k8s.io/yaml v1.6.0/go.mod h1:796bPqUfzR/0jLAl6XjHl3Ck7MiyVv8dbTdyT3/pMf4=
 software.sslmate.com/src/go-pkcs12 v0.7.0 
h1:Db8W44cB54TWD7stUFFSWxdfpdn6fZVcDl0w3R4RVM0=
diff --git a/operator/main.go b/operator/main.go
index c048484..779e767 100644
--- a/operator/main.go
+++ b/operator/main.go
@@ -88,7 +88,7 @@ func main() {
                Client:   mgr.GetClient(),
                Scheme:   mgr.GetScheme(),
                FileRepo: manifests.NewRepo("oapserver"),
-               Recorder: mgr.GetEventRecorderFor("oapserver-controller"),
+               Recorder: mgr.GetEventRecorder("oapserver-controller"),
        }).SetupWithManager(mgr); err != nil {
                setupLog.Error(err, "unable to create controller", 
"controller", "OAPServer")
                os.Exit(1)
@@ -97,7 +97,7 @@ func main() {
                Client:   mgr.GetClient(),
                Scheme:   mgr.GetScheme(),
                FileRepo: manifests.NewRepo("ui"),
-               Recorder: mgr.GetEventRecorderFor("ui-controller"),
+               Recorder: mgr.GetEventRecorder("ui-controller"),
        }).SetupWithManager(mgr); err != nil {
                setupLog.Error(err, "unable to create controller", 
"controller", "UI")
                os.Exit(1)
@@ -106,7 +106,7 @@ func main() {
                Client:   mgr.GetClient(),
                Scheme:   mgr.GetScheme(),
                FileRepo: manifests.NewRepo("fetcher"),
-               Recorder: mgr.GetEventRecorderFor("fetcher-controller"),
+               Recorder: mgr.GetEventRecorder("fetcher-controller"),
        }).SetupWithManager(mgr); err != nil {
                setupLog.Error(err, "unable to create controller", 
"controller", "Fetcher")
                os.Exit(1)
@@ -116,7 +116,7 @@ func main() {
                Scheme:     mgr.GetScheme(),
                FileRepo:   manifests.NewRepo("storage"),
                RestConfig: mgr.GetConfig(),
-               Recorder:   mgr.GetEventRecorderFor("storage-controller"),
+               Recorder:   mgr.GetEventRecorder("storage-controller"),
        }).SetupWithManager(mgr); err != nil {
                setupLog.Error(err, "unable to create controller", 
"controller", "Storage")
                os.Exit(1)
@@ -134,7 +134,7 @@ func main() {
                Client:   mgr.GetClient(),
                Scheme:   mgr.GetScheme(),
                FileRepo: manifests.NewRepo("satellite"),
-               Recorder: mgr.GetEventRecorderFor("satellite-controller"),
+               Recorder: mgr.GetEventRecorder("satellite-controller"),
        }).SetupWithManager(mgr); err != nil {
                setupLog.Error(err, "unable to create controller", 
"controller", "Satellite")
                os.Exit(1)
@@ -165,7 +165,7 @@ func main() {
                Client:   mgr.GetClient(),
                Scheme:   mgr.GetScheme(),
                FileRepo: manifests.NewRepo("banyandb"),
-               Recorder: mgr.GetEventRecorderFor("banyandb-controller"),
+               Recorder: mgr.GetEventRecorder("banyandb-controller"),
        }).SetupWithManager(mgr); err != nil {
                setupLog.Error(err, "unable to create controller", 
"controller", "BanyanDB")
                os.Exit(1)
@@ -174,7 +174,7 @@ func main() {
                Client:   mgr.GetClient(),
                Scheme:   mgr.GetScheme(),
                FileRepo: manifests.NewRepo("eventexporter"),
-               Recorder: mgr.GetEventRecorderFor("eventexporter-controller"),
+               Recorder: mgr.GetEventRecorder("eventexporter-controller"),
        }).SetupWithManager(mgr); err != nil {
                setupLog.Error(err, "unable to create controller", 
"controller", "EventExporter")
                os.Exit(1)
diff --git a/operator/pkg/kubernetes/apply.go b/operator/pkg/kubernetes/apply.go
index b4ca561..10c526c 100644
--- a/operator/pkg/kubernetes/apply.go
+++ b/operator/pkg/kubernetes/apply.go
@@ -30,7 +30,7 @@ import (
        "k8s.io/apimachinery/pkg/apis/meta/v1/unstructured"
        "k8s.io/apimachinery/pkg/runtime"
        "k8s.io/apimachinery/pkg/runtime/schema"
-       "k8s.io/client-go/tools/record"
+       "k8s.io/client-go/tools/events"
        "sigs.k8s.io/controller-runtime/pkg/client"
 )
 
@@ -47,7 +47,7 @@ type Application struct {
        FileRepo Repo
        GVK      schema.GroupVersionKind
        TmplFunc template.FuncMap
-       Recorder record.EventRecorder
+       Recorder events.EventRecorder
 }
 
 // ApplyAll manifests dependent a single CR
@@ -58,7 +58,7 @@ func (a *Application) ApplyAll(ctx context.Context, 
manifestFiles []string, log
                changed, err := a.Apply(ctx, f, sl, true)
                if err != nil {
                        l.Error(err, "failed to apply resource")
-                       a.Recorder.Eventf(a.CR, v1.EventTypeWarning, "failed to 
apply resource", "encountered err: %v", err)
+                       a.Recorder.Eventf(a.CR, nil, v1.EventTypeWarning, 
"FailedApply", "Failed", "encountered err: %v", err)
                        return err
                }
                if changed {
@@ -66,7 +66,7 @@ func (a *Application) ApplyAll(ctx context.Context, 
manifestFiles []string, log
                }
        }
        if len(changedFf) > 0 {
-               a.Recorder.Eventf(a.CR, v1.EventTypeNormal, "resources are 
created or updated", "resources: %v", changedFf)
+               a.Recorder.Eventf(a.CR, nil, v1.EventTypeNormal, "Applied", 
"Applied", "resources: %v", changedFf)
        }
        return nil
 }

Reply via email to