From 8d52c1366bec76ef06d7e0a299e81008b5672981 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Charles-Edouard=20Br=C3=A9t=C3=A9ch=C3=A9?= Date: Tue, 25 Apr 2023 17:31:09 +0200 Subject: [PATCH] feat: improve instrumented clients (#7006) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Charles-Edouard Brétéché --- cmd/internal/setup.go | 27 ++++++++----------- hack/main.go | 4 ++- pkg/clients/aggregator/interface.generated.go | 4 ++- pkg/clients/apiserver/interface.generated.go | 4 ++- pkg/clients/dynamic/interface.generated.go | 4 ++- pkg/clients/kube/interface.generated.go | 4 ++- pkg/clients/kyverno/interface.generated.go | 4 ++- pkg/clients/metadata/interface.generated.go | 4 ++- 8 files changed, 32 insertions(+), 23 deletions(-) diff --git a/cmd/internal/setup.go b/cmd/internal/setup.go index fdec87ac25..26d33e13f9 100644 --- a/cmd/internal/setup.go +++ b/cmd/internal/setup.go @@ -5,7 +5,6 @@ import ( "time" "github.com/go-logr/logr" - "github.com/kyverno/kyverno/pkg/client/clientset/versioned" apiserverclient "github.com/kyverno/kyverno/pkg/clients/apiserver" "github.com/kyverno/kyverno/pkg/clients/dclient" dynamicclient "github.com/kyverno/kyverno/pkg/clients/dynamic" @@ -16,10 +15,6 @@ import ( "github.com/kyverno/kyverno/pkg/engine/jmespath" "github.com/kyverno/kyverno/pkg/metrics" "github.com/kyverno/kyverno/pkg/registryclient" - apiserver "k8s.io/apiextensions-apiserver/pkg/client/clientset/clientset" - "k8s.io/client-go/dynamic" - "k8s.io/client-go/kubernetes" - "k8s.io/client-go/metadata" ) func shutdown(logger logr.Logger, sdowns ...context.CancelFunc) context.CancelFunc { @@ -39,13 +34,13 @@ type SetupResult struct { MetricsConfiguration config.MetricsConfiguration MetricsManager metrics.MetricsConfigManager Jp jmespath.Interface - KubeClient kubernetes.Interface - LeaderElectionClient kubernetes.Interface + KubeClient kubeclient.UpstreamInterface + LeaderElectionClient kubeclient.UpstreamInterface RegistryClient registryclient.Client - KyvernoClient versioned.Interface - DynamicClient dynamic.Interface - ApiServerClient apiserver.Interface - MetadataClient metadata.Interface + KyvernoClient kyvernoclient.UpstreamInterface + DynamicClient dynamicclient.UpstreamInterface + ApiServerClient apiserverclient.UpstreamInterface + MetadataClient metadataclient.UpstreamInterface KyvernoDynamicClient dclient.Interface } @@ -66,19 +61,19 @@ func Setup(config Configuration, name string, skipResourceFilters bool) (context if config.UsesRegistryClient() { registryClient = setupRegistryClient(ctx, logger, client) } - var leaderElectionClient kubernetes.Interface + var leaderElectionClient kubeclient.UpstreamInterface if config.UsesLeaderElection() { leaderElectionClient = createKubernetesClient(logger, kubeclient.WithMetrics(metricsManager, metrics.KubeClient), kubeclient.WithTracing()) } - var kyvernoClient versioned.Interface + var kyvernoClient kyvernoclient.UpstreamInterface if config.UsesKyvernoClient() { kyvernoClient = createKyvernoClient(logger, kyvernoclient.WithMetrics(metricsManager, metrics.KyvernoClient), kyvernoclient.WithTracing()) } - var dynamicClient dynamic.Interface + var dynamicClient dynamicclient.UpstreamInterface if config.UsesDynamicClient() { dynamicClient = createDynamicClient(logger, dynamicclient.WithMetrics(metricsManager, metrics.DynamicClient), dynamicclient.WithTracing()) } - var apiServerClient apiserver.Interface + var apiServerClient apiserverclient.UpstreamInterface if config.UsesApiServerClient() { apiServerClient = createApiServerClient(logger, apiserverclient.WithMetrics(metricsManager, metrics.ApiServerClient), apiserverclient.WithTracing()) } @@ -86,7 +81,7 @@ func Setup(config Configuration, name string, skipResourceFilters bool) (context if config.UsesKyvernoDynamicClient() { dClient = createKyvernoDynamicClient(logger, ctx, dynamicClient, client, 15*time.Minute) } - var metadataClient metadata.Interface + var metadataClient metadataclient.UpstreamInterface if config.UsesMetadataClient() { metadataClient = createMetadataClient(logger, metadataclient.WithMetrics(metricsManager, metrics.MetadataClient), metadataclient.WithTracing()) } diff --git a/hack/main.go b/hack/main.go index 468c6b85b3..30d5ddc457 100644 --- a/hack/main.go +++ b/hack/main.go @@ -370,8 +370,10 @@ import ( {{- end }} ) +type UpstreamInterface = {{ GoType .Target.Type }} + type Interface interface { - {{ GoType .Target.Type }} + UpstreamInterface WithMetrics(metrics.MetricsConfigManager, metrics.ClientType) Interface WithTracing() Interface WithLogging(logr.Logger) Interface diff --git a/pkg/clients/aggregator/interface.generated.go b/pkg/clients/aggregator/interface.generated.go index 4105aa260d..dfb3ce7708 100644 --- a/pkg/clients/aggregator/interface.generated.go +++ b/pkg/clients/aggregator/interface.generated.go @@ -9,8 +9,10 @@ import ( k8s_io_kube_aggregator_pkg_client_clientset_generated_clientset "k8s.io/kube-aggregator/pkg/client/clientset_generated/clientset" ) +type UpstreamInterface = k8s_io_kube_aggregator_pkg_client_clientset_generated_clientset.Interface + type Interface interface { - k8s_io_kube_aggregator_pkg_client_clientset_generated_clientset.Interface + UpstreamInterface WithMetrics(metrics.MetricsConfigManager, metrics.ClientType) Interface WithTracing() Interface WithLogging(logr.Logger) Interface diff --git a/pkg/clients/apiserver/interface.generated.go b/pkg/clients/apiserver/interface.generated.go index eb99c87569..99654d21b6 100644 --- a/pkg/clients/apiserver/interface.generated.go +++ b/pkg/clients/apiserver/interface.generated.go @@ -9,8 +9,10 @@ import ( "k8s.io/client-go/rest" ) +type UpstreamInterface = k8s_io_apiextensions_apiserver_pkg_client_clientset_clientset.Interface + type Interface interface { - k8s_io_apiextensions_apiserver_pkg_client_clientset_clientset.Interface + UpstreamInterface WithMetrics(metrics.MetricsConfigManager, metrics.ClientType) Interface WithTracing() Interface WithLogging(logr.Logger) Interface diff --git a/pkg/clients/dynamic/interface.generated.go b/pkg/clients/dynamic/interface.generated.go index b1aaa37437..e574bd20a0 100644 --- a/pkg/clients/dynamic/interface.generated.go +++ b/pkg/clients/dynamic/interface.generated.go @@ -9,8 +9,10 @@ import ( "k8s.io/client-go/rest" ) +type UpstreamInterface = k8s_io_client_go_dynamic.Interface + type Interface interface { - k8s_io_client_go_dynamic.Interface + UpstreamInterface WithMetrics(metrics.MetricsConfigManager, metrics.ClientType) Interface WithTracing() Interface WithLogging(logr.Logger) Interface diff --git a/pkg/clients/kube/interface.generated.go b/pkg/clients/kube/interface.generated.go index f17043b231..5b6ec5548d 100644 --- a/pkg/clients/kube/interface.generated.go +++ b/pkg/clients/kube/interface.generated.go @@ -9,8 +9,10 @@ import ( "k8s.io/client-go/rest" ) +type UpstreamInterface = k8s_io_client_go_kubernetes.Interface + type Interface interface { - k8s_io_client_go_kubernetes.Interface + UpstreamInterface WithMetrics(metrics.MetricsConfigManager, metrics.ClientType) Interface WithTracing() Interface WithLogging(logr.Logger) Interface diff --git a/pkg/clients/kyverno/interface.generated.go b/pkg/clients/kyverno/interface.generated.go index 51d7616d57..cc203f5bf9 100644 --- a/pkg/clients/kyverno/interface.generated.go +++ b/pkg/clients/kyverno/interface.generated.go @@ -9,8 +9,10 @@ import ( "k8s.io/client-go/rest" ) +type UpstreamInterface = github_com_kyverno_kyverno_pkg_client_clientset_versioned.Interface + type Interface interface { - github_com_kyverno_kyverno_pkg_client_clientset_versioned.Interface + UpstreamInterface WithMetrics(metrics.MetricsConfigManager, metrics.ClientType) Interface WithTracing() Interface WithLogging(logr.Logger) Interface diff --git a/pkg/clients/metadata/interface.generated.go b/pkg/clients/metadata/interface.generated.go index 3bef2f4b56..89ae7ac228 100644 --- a/pkg/clients/metadata/interface.generated.go +++ b/pkg/clients/metadata/interface.generated.go @@ -9,8 +9,10 @@ import ( "k8s.io/client-go/rest" ) +type UpstreamInterface = k8s_io_client_go_metadata.Interface + type Interface interface { - k8s_io_client_go_metadata.Interface + UpstreamInterface WithMetrics(metrics.MetricsConfigManager, metrics.ClientType) Interface WithTracing() Interface WithLogging(logr.Logger) Interface