mirror of
https://github.com/kyverno/kyverno.git
synced 2025-04-08 18:15:48 +00:00
refactor: config package logger (#3683)
Signed-off-by: Charles-Edouard Brétéché <charled.breteche@gmail.com>
This commit is contained in:
parent
d5f6167e56
commit
c97af0094f
7 changed files with 26 additions and 40 deletions
|
@ -69,7 +69,7 @@ func main() {
|
|||
// os signal handler
|
||||
stopCh := signal.SetupSignalHandler()
|
||||
// create client config
|
||||
clientConfig, err := config.CreateClientConfig(kubeconfig, clientRateLimitQPS, clientRateLimitBurst, log.Log)
|
||||
clientConfig, err := config.CreateClientConfig(kubeconfig, clientRateLimitQPS, clientRateLimitBurst)
|
||||
if err != nil {
|
||||
setupLog.Error(err, "Failed to build kubeconfig")
|
||||
os.Exit(1)
|
||||
|
|
|
@ -105,7 +105,7 @@ func main() {
|
|||
version.PrintVersionInfo(log.Log)
|
||||
cleanUp := make(chan struct{})
|
||||
stopCh := signal.SetupSignalHandler()
|
||||
clientConfig, err := config.CreateClientConfig(kubeconfig, clientRateLimitQPS, clientRateLimitBurst, log.Log)
|
||||
clientConfig, err := config.CreateClientConfig(kubeconfig, clientRateLimitQPS, clientRateLimitBurst)
|
||||
if err != nil {
|
||||
setupLog.Error(err, "Failed to build kubeconfig")
|
||||
os.Exit(1)
|
||||
|
@ -251,13 +251,9 @@ func main() {
|
|||
excludeUsername,
|
||||
prgen.ReconcileCh,
|
||||
webhookCfg.UpdateWebhookChan,
|
||||
log.Log.WithName("ConfigData"),
|
||||
)
|
||||
|
||||
metricsConfigData, err := config.NewMetricsConfigData(
|
||||
kubeClient,
|
||||
log.Log.WithName("MetricsConfigData"),
|
||||
)
|
||||
metricsConfigData, err := config.NewMetricsConfigData(kubeClient)
|
||||
if err != nil {
|
||||
setupLog.Error(err, "failed to fetch metrics config")
|
||||
os.Exit(1)
|
||||
|
|
|
@ -4,7 +4,6 @@ import (
|
|||
"fmt"
|
||||
"math"
|
||||
|
||||
"github.com/go-logr/logr"
|
||||
osutils "github.com/kyverno/kyverno/pkg/utils/os"
|
||||
rest "k8s.io/client-go/rest"
|
||||
clientcmd "k8s.io/client-go/tools/clientcmd"
|
||||
|
@ -97,10 +96,8 @@ var (
|
|||
)
|
||||
|
||||
//CreateClientConfig creates client config and applies rate limit QPS and burst
|
||||
func CreateClientConfig(kubeconfig string, qps float64, burst int, log logr.Logger) (*rest.Config, error) {
|
||||
logger := log.WithName("CreateClientConfig")
|
||||
|
||||
clientConfig, err := createClientConfig(kubeconfig, logger)
|
||||
func CreateClientConfig(kubeconfig string, qps float64, burst int) (*rest.Config, error) {
|
||||
clientConfig, err := createClientConfig(kubeconfig)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
@ -115,11 +112,11 @@ func CreateClientConfig(kubeconfig string, qps float64, burst int, log logr.Logg
|
|||
}
|
||||
|
||||
// createClientConfig creates client config
|
||||
func createClientConfig(kubeconfig string, log logr.Logger) (*rest.Config, error) {
|
||||
func createClientConfig(kubeconfig string) (*rest.Config, error) {
|
||||
if kubeconfig == "" {
|
||||
log.Info("Using in-cluster configuration")
|
||||
logger.Info("Using in-cluster configuration")
|
||||
return rest.InClusterConfig()
|
||||
}
|
||||
log.V(4).Info("Using specified kubeconfig", "kubeconfig", kubeconfig)
|
||||
logger.V(4).Info("Using specified kubeconfig", "kubeconfig", kubeconfig)
|
||||
return clientcmd.BuildConfigFromFlags("", kubeconfig)
|
||||
}
|
||||
|
|
|
@ -5,7 +5,6 @@ import (
|
|||
"os"
|
||||
"testing"
|
||||
|
||||
"github.com/go-logr/logr"
|
||||
"gotest.tools/assert"
|
||||
"k8s.io/apimachinery/pkg/runtime"
|
||||
clientcmdapi "k8s.io/client-go/tools/clientcmd/api"
|
||||
|
@ -17,7 +16,7 @@ import (
|
|||
func Test_CreateClientConfig_WithKubeConfig(t *testing.T) {
|
||||
cf := createMinimalKubeconfig(t)
|
||||
defer os.Remove(cf)
|
||||
_, err := config.CreateClientConfig(cf, 0, 0, logr.Discard())
|
||||
_, err := config.CreateClientConfig(cf, 0, 0)
|
||||
assert.NilError(t, err)
|
||||
}
|
||||
|
||||
|
@ -29,7 +28,7 @@ func Test_CreateClientConfig_SetBurstQPS(t *testing.T) {
|
|||
|
||||
cf := createMinimalKubeconfig(t)
|
||||
defer os.Remove(cf)
|
||||
c, err := config.CreateClientConfig(cf, qps, burst, logr.Discard())
|
||||
c, err := config.CreateClientConfig(cf, qps, burst)
|
||||
assert.NilError(t, err)
|
||||
assert.Equal(t, float32(qps), c.QPS)
|
||||
assert.Equal(t, burst, c.Burst)
|
||||
|
@ -40,7 +39,7 @@ func Test_CreateClientConfig_LimitQPStoFloat32(t *testing.T) {
|
|||
|
||||
cf := createMinimalKubeconfig(t)
|
||||
defer os.Remove(cf)
|
||||
_, err := config.CreateClientConfig(cf, qps, 0, logr.Discard())
|
||||
_, err := config.CreateClientConfig(cf, qps, 0)
|
||||
assert.ErrorContains(t, err, "QPS")
|
||||
}
|
||||
|
||||
|
|
|
@ -9,7 +9,6 @@ import (
|
|||
"strings"
|
||||
"sync"
|
||||
|
||||
"github.com/go-logr/logr"
|
||||
wildcard "github.com/kyverno/go-wildcard"
|
||||
v1 "k8s.io/api/core/v1"
|
||||
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||
|
@ -43,7 +42,6 @@ type ConfigData struct {
|
|||
cmSycned cache.InformerSynced
|
||||
reconcilePolicyReport chan<- bool
|
||||
updateWebhookConfigurations chan<- bool
|
||||
log logr.Logger
|
||||
}
|
||||
|
||||
// ToFilter checks if the given resource is set to be filtered in the configuration
|
||||
|
@ -130,10 +128,10 @@ type Interface interface {
|
|||
}
|
||||
|
||||
// NewConfigData ...
|
||||
func NewConfigData(rclient kubernetes.Interface, cmInformer informers.ConfigMapInformer, filterK8sResources, excludeGroupRole, excludeUsername string, reconcilePolicyReport, updateWebhookConfigurations chan<- bool, log logr.Logger) *ConfigData {
|
||||
func NewConfigData(rclient kubernetes.Interface, cmInformer informers.ConfigMapInformer, filterK8sResources, excludeGroupRole, excludeUsername string, reconcilePolicyReport, updateWebhookConfigurations chan<- bool) *ConfigData {
|
||||
// environment var is read at start only
|
||||
if cmNameEnv == "" {
|
||||
log.Info("ConfigMap name not defined in env:INIT_CONFIG: loading no default configuration")
|
||||
logger.Info("ConfigMap name not defined in env:INIT_CONFIG: loading no default configuration")
|
||||
}
|
||||
|
||||
cd := ConfigData{
|
||||
|
@ -142,25 +140,24 @@ func NewConfigData(rclient kubernetes.Interface, cmInformer informers.ConfigMapI
|
|||
cmSycned: cmInformer.Informer().HasSynced,
|
||||
reconcilePolicyReport: reconcilePolicyReport,
|
||||
updateWebhookConfigurations: updateWebhookConfigurations,
|
||||
log: log,
|
||||
}
|
||||
|
||||
cd.restrictDevelopmentUsername = []string{"minikube-user", "kubernetes-admin"}
|
||||
|
||||
if filterK8sResources != "" {
|
||||
cd.log.Info("init configuration from commandline arguments for filterK8sResources")
|
||||
logger.Info("init configuration from commandline arguments for filterK8sResources")
|
||||
cd.initFilters(filterK8sResources)
|
||||
}
|
||||
|
||||
if excludeGroupRole != "" {
|
||||
cd.log.Info("init configuration from commandline arguments for excludeGroupRole")
|
||||
logger.Info("init configuration from commandline arguments for excludeGroupRole")
|
||||
cd.initRbac("excludeRoles", excludeGroupRole)
|
||||
} else {
|
||||
cd.initRbac("excludeRoles", "")
|
||||
}
|
||||
|
||||
if excludeUsername != "" {
|
||||
cd.log.Info("init configuration from commandline arguments for excludeUsername")
|
||||
logger.Info("init configuration from commandline arguments for excludeUsername")
|
||||
cd.initRbac("excludeUsername", excludeUsername)
|
||||
}
|
||||
|
||||
|
@ -175,7 +172,6 @@ func NewConfigData(rclient kubernetes.Interface, cmInformer informers.ConfigMapI
|
|||
|
||||
// Run checks syncing
|
||||
func (cd *ConfigData) Run(stopCh <-chan struct{}) {
|
||||
logger := cd.log
|
||||
// wait for cache to populate first time
|
||||
if !cache.WaitForCacheSync(stopCh, cd.cmSycned) {
|
||||
logger.Info("configuration: failed to sync informer cache")
|
||||
|
@ -199,18 +195,17 @@ func (cd *ConfigData) updateCM(old, cur interface{}) {
|
|||
reconcilePolicyReport, updateWebhook := cd.load(*cm)
|
||||
|
||||
if reconcilePolicyReport {
|
||||
cd.log.Info("resource filters changed, sending reconcile signal to the policy controller")
|
||||
logger.Info("resource filters changed, sending reconcile signal to the policy controller")
|
||||
cd.reconcilePolicyReport <- true
|
||||
}
|
||||
|
||||
if updateWebhook {
|
||||
cd.log.Info("webhook configurations changed, updating webhook configurations")
|
||||
logger.Info("webhook configurations changed, updating webhook configurations")
|
||||
cd.updateWebhookConfigurations <- true
|
||||
}
|
||||
}
|
||||
|
||||
func (cd *ConfigData) deleteCM(obj interface{}) {
|
||||
logger := cd.log
|
||||
cm, ok := obj.(*v1.ConfigMap)
|
||||
if !ok {
|
||||
tombstone, ok := obj.(cache.DeletedFinalStateUnknown)
|
||||
|
@ -233,7 +228,7 @@ func (cd *ConfigData) deleteCM(obj interface{}) {
|
|||
}
|
||||
|
||||
func (cd *ConfigData) load(cm v1.ConfigMap) (reconcilePolicyReport, updateWebhook bool) {
|
||||
logger := cd.log.WithValues("name", cm.Name, "namespace", cm.Namespace)
|
||||
logger := logger.WithValues("name", cm.Name, "namespace", cm.Namespace)
|
||||
if cm.Data == nil {
|
||||
logger.V(4).Info("configuration: No data defined in ConfigMap")
|
||||
return
|
||||
|
@ -328,7 +323,6 @@ func (cd *ConfigData) load(cm v1.ConfigMap) (reconcilePolicyReport, updateWebhoo
|
|||
}
|
||||
|
||||
func (cd *ConfigData) initFilters(filters string) {
|
||||
logger := cd.log
|
||||
// parse and load the configuration
|
||||
cd.mux.Lock()
|
||||
defer cd.mux.Unlock()
|
||||
|
@ -340,7 +334,6 @@ func (cd *ConfigData) initFilters(filters string) {
|
|||
}
|
||||
|
||||
func (cd *ConfigData) initRbac(action, exclude string) {
|
||||
logger := cd.log
|
||||
// parse and load the configuration
|
||||
cd.mux.Lock()
|
||||
defer cd.mux.Unlock()
|
||||
|
@ -357,7 +350,6 @@ func (cd *ConfigData) initRbac(action, exclude string) {
|
|||
}
|
||||
|
||||
func (cd *ConfigData) unload(cm v1.ConfigMap) {
|
||||
logger := cd.log
|
||||
logger.Info("ConfigMap deleted, removing configuration filters", "name", cm.Name, "namespace", cm.Namespace)
|
||||
cd.mux.Lock()
|
||||
defer cd.mux.Unlock()
|
||||
|
|
5
pkg/config/log.go
Normal file
5
pkg/config/log.go
Normal file
|
@ -0,0 +1,5 @@
|
|||
package config
|
||||
|
||||
import "sigs.k8s.io/controller-runtime/pkg/log"
|
||||
|
||||
var logger = log.Log.WithName("config")
|
|
@ -7,7 +7,6 @@ import (
|
|||
"os"
|
||||
"time"
|
||||
|
||||
"github.com/go-logr/logr"
|
||||
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||
"k8s.io/client-go/kubernetes"
|
||||
)
|
||||
|
@ -21,7 +20,6 @@ type MetricsConfigData struct {
|
|||
client kubernetes.Interface
|
||||
cmName string
|
||||
metricsConfig MetricsConfig
|
||||
log logr.Logger
|
||||
}
|
||||
|
||||
// MetricsConfig stores the config for metrics
|
||||
|
@ -56,13 +54,12 @@ func (mcd *MetricsConfigData) GetMetricsConfigMapName() string {
|
|||
}
|
||||
|
||||
// NewMetricsConfigData ...
|
||||
func NewMetricsConfigData(rclient kubernetes.Interface, log logr.Logger) (*MetricsConfigData, error) {
|
||||
func NewMetricsConfigData(rclient kubernetes.Interface) (*MetricsConfigData, error) {
|
||||
cmName := os.Getenv(metricsConfigEnvVar)
|
||||
|
||||
mcd := MetricsConfigData{
|
||||
client: rclient,
|
||||
cmName: cmName,
|
||||
log: log,
|
||||
metricsConfig: MetricsConfig{
|
||||
metricsRefreshInterval: 0,
|
||||
namespaces: namespacesConfig{
|
||||
|
@ -93,7 +90,7 @@ func NewMetricsConfigData(rclient kubernetes.Interface, log logr.Logger) (*Metri
|
|||
}
|
||||
}
|
||||
} else {
|
||||
log.Info("ConfigMap name not defined in env:METRICS_CONFIG: loading no default configuration")
|
||||
logger.Info("ConfigMap name not defined in env:METRICS_CONFIG: loading no default configuration")
|
||||
}
|
||||
|
||||
return &mcd, nil
|
||||
|
|
Loading…
Add table
Reference in a new issue