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:
parent
266bfa1077
commit
52d1b642d6
7 changed files with 17 additions and 19 deletions
|
@ -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
|
||||
}
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
}
|
||||
|
||||
|
|
5
pkg/dclient/log.go
Normal file
5
pkg/dclient/log.go
Normal file
|
@ -0,0 +1,5 @@
|
|||
package client
|
||||
|
||||
import "sigs.k8s.io/controller-runtime/pkg/log"
|
||||
|
||||
var logger = log.Log.WithName("dynamic-client")
|
|
@ -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)
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue