diff --git a/cmd/cli/kubectl-kyverno/apply/apply_command.go b/cmd/cli/kubectl-kyverno/apply/apply_command.go index fb5eac6798..fe5dca01d0 100644 --- a/cmd/cli/kubectl-kyverno/apply/apply_command.go +++ b/cmd/cli/kubectl-kyverno/apply/apply_command.go @@ -176,7 +176,7 @@ func applyCommandHelper(resourcePaths []string, userInfoPath string, cluster boo if err != nil { return rc, resources, skipInvalidPolicies, pvInfos, err } - dClient, err = client.NewClient(restConfig, 15*time.Minute, make(chan struct{}), log.Log) + dClient, err = client.NewClient(restConfig, 15*time.Minute, make(chan struct{})) if err != nil { return rc, resources, skipInvalidPolicies, pvInfos, err } diff --git a/cmd/initContainer/main.go b/cmd/initContainer/main.go index 12ba933ebd..8213bd8db1 100644 --- a/cmd/initContainer/main.go +++ b/cmd/initContainer/main.go @@ -81,7 +81,7 @@ func main() { // DYNAMIC CLIENT // - client for all registered resources - client, err := client.NewClient(clientConfig, 15*time.Minute, stopCh, log.Log) + client, err := client.NewClient(clientConfig, 15*time.Minute, stopCh) if err != nil { setupLog.Error(err, "Failed to create client") os.Exit(1) diff --git a/cmd/kyverno/main.go b/cmd/kyverno/main.go index 7e36f07318..c0b2e2fdaa 100755 --- a/cmd/kyverno/main.go +++ b/cmd/kyverno/main.go @@ -115,7 +115,7 @@ func main() { setupLog.Error(err, "Failed to create client") os.Exit(1) } - dynamicClient, err := dclient.NewClient(clientConfig, 15*time.Minute, stopCh, log.Log) + dynamicClient, err := dclient.NewClient(clientConfig, 15*time.Minute, stopCh) if err != nil { setupLog.Error(err, "Failed to create dynamic client") os.Exit(1) diff --git a/pkg/dclient/client.go b/pkg/dclient/client.go index 0a3263867a..2bf2f9c324 100644 --- a/pkg/dclient/client.go +++ b/pkg/dclient/client.go @@ -5,7 +5,6 @@ import ( "fmt" "time" - "github.com/go-logr/logr" kubeutils "github.com/kyverno/kyverno/pkg/utils/kube" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/apis/meta/v1/unstructured" @@ -54,13 +53,12 @@ type Interface interface { type client struct { client dynamic.Interface discoveryClient IDiscovery - log logr.Logger clientConfig *rest.Config kclient kubernetes.Interface } // NewClient creates new instance of client -func NewClient(config *rest.Config, resync time.Duration, stopCh <-chan struct{}, log logr.Logger) (Interface, error) { +func NewClient(config *rest.Config, resync time.Duration, stopCh <-chan struct{}) (Interface, error) { dclient, err := dynamic.NewForConfig(config) if err != nil { return nil, err @@ -73,12 +71,10 @@ func NewClient(config *rest.Config, resync time.Duration, stopCh <-chan struct{} client: dclient, clientConfig: config, kclient: kclient, - log: log.WithName("dclient"), } // Set discovery client discoveryClient := &serverPreferredResources{ cachedClient: memory.NewMemCacheClient(kclient.Discovery()), - log: client.log, } // client will invalidate registered resources cache every x seconds, // As there is no way to identify if the registered resource is available or not diff --git a/pkg/dclient/discovery.go b/pkg/dclient/discovery.go index 66330ed7d9..8a898dd83e 100644 --- a/pkg/dclient/discovery.go +++ b/pkg/dclient/discovery.go @@ -5,7 +5,6 @@ import ( "strings" "time" - "github.com/go-logr/logr" openapiv2 "github.com/googleapis/gnostic/openapiv2" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/runtime/schema" @@ -26,7 +25,6 @@ type IDiscovery interface { // serverPreferredResources stores the cachedClient instance for discovery client type serverPreferredResources struct { cachedClient discovery.CachedDiscoveryInterface - log logr.Logger } // DiscoveryCache gets the discovery client cache @@ -36,7 +34,7 @@ func (c serverPreferredResources) DiscoveryCache() discovery.CachedDiscoveryInte // Poll will keep invalidate the local cache func (c serverPreferredResources) Poll(resync time.Duration, stopCh <-chan struct{}) { - logger := c.log.WithName("Poll") + logger := logger.WithName("Poll") // start a ticker ticker := time.NewTicker(resync) defer func() { ticker.Stop() }() @@ -67,7 +65,7 @@ func (c serverPreferredResources) GetGVRFromKind(kind string) (schema.GroupVersi _, gvr, err := c.FindResource("", kind) if err != nil { - c.log.Info("schema not found", "kind", kind) + logger.Info("schema not found", "kind", kind) return schema.GroupVersionResource{}, err } @@ -78,7 +76,7 @@ func (c serverPreferredResources) GetGVRFromKind(kind string) (schema.GroupVersi func (c serverPreferredResources) GetGVRFromAPIVersionKind(apiVersion string, kind string) schema.GroupVersionResource { _, gvr, err := c.FindResource(apiVersion, kind) if err != nil { - c.log.Info("schema not found", "kind", kind, "apiVersion", apiVersion, "error : ", err) + logger.Info("schema not found", "kind", kind, "apiVersion", apiVersion, "error : ", err) return schema.GroupVersionResource{} } @@ -121,9 +119,9 @@ func (c serverPreferredResources) findResource(apiVersion string, kind string) ( if discovery.IsGroupDiscoveryFailedError(err) { logDiscoveryErrors(err, c) } else if isMetricsServerUnavailable(kind, err) { - c.log.V(3).Info("failed to find preferred resource version", "error", err.Error()) + logger.V(3).Info("failed to find preferred resource version", "error", err.Error()) } else { - c.log.Error(err, "failed to find preferred resource version") + logger.Error(err, "failed to find preferred resource version") return nil, schema.GroupVersionResource{}, err } } @@ -144,7 +142,7 @@ func (c serverPreferredResources) findResource(apiVersion string, kind string) ( if resource.Kind == kind || resource.Name == kind || resource.SingularName == kind { gv, err := schema.ParseGroupVersion(serverResource.GroupVersion) if err != nil { - c.log.Error(err, "failed to parse groupVersion", "groupVersion", serverResource.GroupVersion) + logger.Error(err, "failed to parse groupVersion", "groupVersion", serverResource.GroupVersion) return nil, schema.GroupVersionResource{}, err } diff --git a/pkg/dclient/log.go b/pkg/dclient/log.go new file mode 100644 index 0000000000..712d8e5fb5 --- /dev/null +++ b/pkg/dclient/log.go @@ -0,0 +1,5 @@ +package client + +import "sigs.k8s.io/controller-runtime/pkg/log" + +var logger = log.Log.WithName("dynamic-client") diff --git a/pkg/dclient/utils.go b/pkg/dclient/utils.go index 56ef22438d..e4aabc114d 100644 --- a/pkg/dclient/utils.go +++ b/pkg/dclient/utils.go @@ -12,11 +12,10 @@ func logDiscoveryErrors(err error, c serverPreferredResources) { if gv.Group == "custom.metrics.k8s.io" || gv.Group == "metrics.k8s.io" || gv.Group == "external.metrics.k8s.io" { // These errors occur when Prometheus is installed as an external metrics server // See: https://github.com/kyverno/kyverno/issues/1490 - c.log.V(3).Info("failed to retrieve metrics API group", "gv", gv) + logger.V(3).Info("failed to retrieve metrics API group", "gv", gv) continue } - - c.log.Error(e, "failed to retrieve API group", "gv", gv) + logger.Error(e, "failed to retrieve API group", "gv", gv) } }