Skip to content

Commit

Permalink
Enable controller-runtime backwards-compatibility
Browse files Browse the repository at this point in the history
Make kdp backwards-compatible with versions of controller-runtime before
v0.16, which introduced the metrics/server package.
  • Loading branch information
annasong20 committed Nov 30, 2023
1 parent d7eaf43 commit 6fd1d76
Show file tree
Hide file tree
Showing 5 changed files with 61 additions and 21 deletions.
19 changes: 19 additions & 0 deletions commonclient/metrics_cr11.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
//go:build controllerruntime_11 || controllerruntime_12 || controllerruntime_13 || controllerruntime_14 || controllerruntime_15

package commonclient

import (
"fmt"

ctrl "sigs.k8s.io/controller-runtime"
)

// SetMetricsBindAddress sets the metrics address on options independent of
// manager options version
func SetMetricsBindAddress(options *ctrl.Options, bindAddress string) error {
if options == nil {
return fmt.Errorf("unable to set metrics bind address on non-existent manager options")
}
options.MetricsBindAddress = bindAddress
return nil
}
19 changes: 19 additions & 0 deletions commonclient/metrics_cr16.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
//go:build !(controllerruntime_11 || controllerruntime_12 || controllerruntime_13 || controllerruntime_14 || controllerruntime_15)

package commonclient

import (
"fmt"

ctrl "sigs.k8s.io/controller-runtime"
)

// SetMetricsBindAddress sets the metrics address on options independent of
// manager options version
func SetMetricsBindAddress(options *ctrl.Options, bindAddress string) error {
if options == nil {
return fmt.Errorf("unable to set metrics bind address on non-existent manager options")
}
options.Metrics.BindAddress = bindAddress
return nil
}
18 changes: 9 additions & 9 deletions examples/guestbook-operator/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ import (
ctrl "sigs.k8s.io/controller-runtime"
"sigs.k8s.io/controller-runtime/pkg/healthz"
"sigs.k8s.io/controller-runtime/pkg/log/zap"
metricsserver "sigs.k8s.io/controller-runtime/pkg/metrics/server"
"sigs.k8s.io/kubebuilder-declarative-pattern/commonclient"
"sigs.k8s.io/kubebuilder-declarative-pattern/pkg/patterns/addon"

addonsv1alpha1 "sigs.k8s.io/kubebuilder-declarative-pattern/examples/guestbook-operator/api/v1alpha1"
Expand All @@ -51,10 +51,8 @@ func init() {
}

func main() {
var metricsAddr string
var enableLeaderElection bool
var probeAddr string
flag.StringVar(&metricsAddr, "metrics-bind-address", ":8080", "The address the metric endpoint binds to.")
flag.StringVar(&probeAddr, "health-probe-bind-address", ":8081", "The address the probe endpoint binds to.")
flag.BoolVar(&enableLeaderElection, "leader-elect", false,
"Enable leader election for controller manager. "+
Expand All @@ -68,15 +66,17 @@ func main() {
ctrl.SetLogger(zap.New(zap.UseFlagOptions(&opts)))
addon.Init()

mgr, err := ctrl.NewManager(ctrl.GetConfigOrDie(), ctrl.Options{
Scheme: scheme,
Metrics: metricsserver.Options{
BindAddress: "0", // Disable the metrics server
},
mgrOpt := ctrl.Options{
Scheme: scheme,
HealthProbeBindAddress: probeAddr,
LeaderElection: enableLeaderElection,
LeaderElectionID: "c3cffa1a.example.org",
})
}
err := commonclient.SetMetricsBindAddress(&mgrOpt, "0")
if err != nil {
setupLog.Error(err, "unable to configure manager")
}
mgr, err := ctrl.NewManager(ctrl.GetConfigOrDie(), mgrOpt)
if err != nil {
setupLog.Error(err, "unable to start manager")
os.Exit(1)
Expand Down
10 changes: 5 additions & 5 deletions pkg/patterns/declarative/metrics_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -38,11 +38,11 @@ import (
"k8s.io/klog/v2"
"sigs.k8s.io/controller-runtime/pkg/client/fake"
"sigs.k8s.io/controller-runtime/pkg/manager"
metricsserver "sigs.k8s.io/controller-runtime/pkg/metrics/server"
"sigs.k8s.io/controller-runtime/pkg/reconcile"
"sigs.k8s.io/yaml"

"sigs.k8s.io/kubebuilder-declarative-pattern/applylib/applyset"
"sigs.k8s.io/kubebuilder-declarative-pattern/commonclient"
"sigs.k8s.io/kubebuilder-declarative-pattern/mockkubeapiserver"
"sigs.k8s.io/kubebuilder-declarative-pattern/pkg/patterns/declarative/pkg/applier"
"sigs.k8s.io/kubebuilder-declarative-pattern/pkg/patterns/declarative/pkg/manifest"
Expand Down Expand Up @@ -277,10 +277,10 @@ func TestAddIfNotPresent(t *testing.T) {
}

// Create manager
mgrOpt := manager.Options{
Metrics: metricsserver.Options{
BindAddress: "0", // Disable the metrics server, don't open unneeded ports
},
mgrOpt := manager.Options{}
err = commonclient.SetMetricsBindAddress(&mgrOpt, "0")
if err != nil {
t.Error(err)
}
mgr, err := manager.New(restConfig, mgrOpt)
if err != nil {
Expand Down
16 changes: 9 additions & 7 deletions pkg/test/testreconciler/simpletest/controller_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -13,8 +13,8 @@ import (
"k8s.io/klog/v2"
"k8s.io/klog/v2/klogr"
ctrl "sigs.k8s.io/controller-runtime"
metricsserver "sigs.k8s.io/controller-runtime/pkg/metrics/server"

"sigs.k8s.io/kubebuilder-declarative-pattern/commonclient"
"sigs.k8s.io/kubebuilder-declarative-pattern/mockkubeapiserver"
"sigs.k8s.io/kubebuilder-declarative-pattern/pkg/patterns/addon/pkg/loaders"
"sigs.k8s.io/kubebuilder-declarative-pattern/pkg/patterns/declarative"
Expand Down Expand Up @@ -68,18 +68,20 @@ func testSimpleReconciler(h *testharness.Harness, testdir string, applier applie
}

logger := klogr.New()
mgr, err := ctrl.NewManager(restConfig, ctrl.Options{
Scheme: scheme,
Metrics: metricsserver.Options{
BindAddress: "0", // Disable the metrics server
},
mgrOpt := ctrl.Options{
Scheme: scheme,
LeaderElection: false,

// MapperProvider provides the rest mapper used to map go types to Kubernetes APIs
MapperProvider: restmapper.NewControllerRESTMapper,

Logger: logger,
})
}
err = commonclient.SetMetricsBindAddress(&mgrOpt, "0")
if err != nil {
h.Errorf("error configuring manager: %v", err)
}
mgr, err := ctrl.NewManager(restConfig, mgrOpt)
if err != nil {
h.Fatalf("error starting manager: %v", err)
}
Expand Down

0 comments on commit 6fd1d76

Please sign in to comment.