1
0
Fork 0
mirror of https://github.com/kyverno/kyverno.git synced 2025-03-31 03:45:17 +00:00

refactor: dclient package logger (#3778)

Signed-off-by: Charles-Edouard Brétéché <charled.breteche@gmail.com>
This commit is contained in:
Charles-Edouard Brétéché 2022-05-03 10:24:30 +02:00 committed by GitHub
parent 266bfa1077
commit 52d1b642d6
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
7 changed files with 17 additions and 19 deletions

View file

@ -176,7 +176,7 @@ func applyCommandHelper(resourcePaths []string, userInfoPath string, cluster boo
if err != nil { if err != nil {
return rc, resources, skipInvalidPolicies, pvInfos, err 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 { if err != nil {
return rc, resources, skipInvalidPolicies, pvInfos, err return rc, resources, skipInvalidPolicies, pvInfos, err
} }

View file

@ -81,7 +81,7 @@ func main() {
// DYNAMIC CLIENT // DYNAMIC CLIENT
// - client for all registered resources // - 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 { if err != nil {
setupLog.Error(err, "Failed to create client") setupLog.Error(err, "Failed to create client")
os.Exit(1) os.Exit(1)

View file

@ -115,7 +115,7 @@ func main() {
setupLog.Error(err, "Failed to create client") setupLog.Error(err, "Failed to create client")
os.Exit(1) 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 { if err != nil {
setupLog.Error(err, "Failed to create dynamic client") setupLog.Error(err, "Failed to create dynamic client")
os.Exit(1) os.Exit(1)

View file

@ -5,7 +5,6 @@ import (
"fmt" "fmt"
"time" "time"
"github.com/go-logr/logr"
kubeutils "github.com/kyverno/kyverno/pkg/utils/kube" kubeutils "github.com/kyverno/kyverno/pkg/utils/kube"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/apis/meta/v1/unstructured" "k8s.io/apimachinery/pkg/apis/meta/v1/unstructured"
@ -54,13 +53,12 @@ type Interface interface {
type client struct { type client struct {
client dynamic.Interface client dynamic.Interface
discoveryClient IDiscovery discoveryClient IDiscovery
log logr.Logger
clientConfig *rest.Config clientConfig *rest.Config
kclient kubernetes.Interface kclient kubernetes.Interface
} }
// NewClient creates new instance of client // 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) dclient, err := dynamic.NewForConfig(config)
if err != nil { if err != nil {
return nil, err return nil, err
@ -73,12 +71,10 @@ func NewClient(config *rest.Config, resync time.Duration, stopCh <-chan struct{}
client: dclient, client: dclient,
clientConfig: config, clientConfig: config,
kclient: kclient, kclient: kclient,
log: log.WithName("dclient"),
} }
// Set discovery client // Set discovery client
discoveryClient := &serverPreferredResources{ discoveryClient := &serverPreferredResources{
cachedClient: memory.NewMemCacheClient(kclient.Discovery()), cachedClient: memory.NewMemCacheClient(kclient.Discovery()),
log: client.log,
} }
// client will invalidate registered resources cache every x seconds, // client will invalidate registered resources cache every x seconds,
// As there is no way to identify if the registered resource is available or not // As there is no way to identify if the registered resource is available or not

View file

@ -5,7 +5,6 @@ import (
"strings" "strings"
"time" "time"
"github.com/go-logr/logr"
openapiv2 "github.com/googleapis/gnostic/openapiv2" openapiv2 "github.com/googleapis/gnostic/openapiv2"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/runtime/schema" "k8s.io/apimachinery/pkg/runtime/schema"
@ -26,7 +25,6 @@ type IDiscovery interface {
// serverPreferredResources stores the cachedClient instance for discovery client // serverPreferredResources stores the cachedClient instance for discovery client
type serverPreferredResources struct { type serverPreferredResources struct {
cachedClient discovery.CachedDiscoveryInterface cachedClient discovery.CachedDiscoveryInterface
log logr.Logger
} }
// DiscoveryCache gets the discovery client cache // DiscoveryCache gets the discovery client cache
@ -36,7 +34,7 @@ func (c serverPreferredResources) DiscoveryCache() discovery.CachedDiscoveryInte
// Poll will keep invalidate the local cache // Poll will keep invalidate the local cache
func (c serverPreferredResources) Poll(resync time.Duration, stopCh <-chan struct{}) { func (c serverPreferredResources) Poll(resync time.Duration, stopCh <-chan struct{}) {
logger := c.log.WithName("Poll") logger := logger.WithName("Poll")
// start a ticker // start a ticker
ticker := time.NewTicker(resync) ticker := time.NewTicker(resync)
defer func() { ticker.Stop() }() defer func() { ticker.Stop() }()
@ -67,7 +65,7 @@ func (c serverPreferredResources) GetGVRFromKind(kind string) (schema.GroupVersi
_, gvr, err := c.FindResource("", kind) _, gvr, err := c.FindResource("", kind)
if err != nil { if err != nil {
c.log.Info("schema not found", "kind", kind) logger.Info("schema not found", "kind", kind)
return schema.GroupVersionResource{}, err 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 { func (c serverPreferredResources) GetGVRFromAPIVersionKind(apiVersion string, kind string) schema.GroupVersionResource {
_, gvr, err := c.FindResource(apiVersion, kind) _, gvr, err := c.FindResource(apiVersion, kind)
if err != nil { 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{} return schema.GroupVersionResource{}
} }
@ -121,9 +119,9 @@ func (c serverPreferredResources) findResource(apiVersion string, kind string) (
if discovery.IsGroupDiscoveryFailedError(err) { if discovery.IsGroupDiscoveryFailedError(err) {
logDiscoveryErrors(err, c) logDiscoveryErrors(err, c)
} else if isMetricsServerUnavailable(kind, err) { } 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 { } 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 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 { if resource.Kind == kind || resource.Name == kind || resource.SingularName == kind {
gv, err := schema.ParseGroupVersion(serverResource.GroupVersion) gv, err := schema.ParseGroupVersion(serverResource.GroupVersion)
if err != nil { 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 return nil, schema.GroupVersionResource{}, err
} }

5
pkg/dclient/log.go Normal file
View file

@ -0,0 +1,5 @@
package client
import "sigs.k8s.io/controller-runtime/pkg/log"
var logger = log.Log.WithName("dynamic-client")

View file

@ -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" { 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 // These errors occur when Prometheus is installed as an external metrics server
// See: https://github.com/kyverno/kyverno/issues/1490 // 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 continue
} }
logger.Error(e, "failed to retrieve API group", "gv", gv)
c.log.Error(e, "failed to retrieve API group", "gv", gv)
} }
} }