mirror of
https://github.com/kyverno/kyverno.git
synced 2025-03-05 15:37:19 +00:00
* refactor: move registry client init in internal package Signed-off-by: Charles-Edouard Brétéché <charles.edouard@nirmata.com> * refactor: move leader election code in internal package Signed-off-by: Charles-Edouard Brétéché <charles.edouard@nirmata.com> --------- Signed-off-by: Charles-Edouard Brétéché <charles.edouard@nirmata.com>
67 lines
2.3 KiB
Go
67 lines
2.3 KiB
Go
package internal
|
|
|
|
import (
|
|
"context"
|
|
|
|
"github.com/go-logr/logr"
|
|
kubeclient "github.com/kyverno/kyverno/pkg/clients/kube"
|
|
"github.com/kyverno/kyverno/pkg/config"
|
|
"github.com/kyverno/kyverno/pkg/metrics"
|
|
"github.com/kyverno/kyverno/pkg/registryclient"
|
|
"k8s.io/client-go/kubernetes"
|
|
)
|
|
|
|
func shutdown(logger logr.Logger, sdowns ...context.CancelFunc) context.CancelFunc {
|
|
return func() {
|
|
for i := range sdowns {
|
|
if sdowns[i] != nil {
|
|
logger.Info("shutting down...")
|
|
defer sdowns[i]()
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
type SetupResult struct {
|
|
Logger logr.Logger
|
|
Configuration config.Configuration
|
|
MetricsConfiguration config.MetricsConfiguration
|
|
MetricsManager metrics.MetricsConfigManager
|
|
KubeClient kubernetes.Interface
|
|
LeaderElectionClient kubernetes.Interface
|
|
RegistryClient registryclient.Client
|
|
}
|
|
|
|
func Setup(config Configuration, name string, skipResourceFilters bool) (context.Context, SetupResult, context.CancelFunc) {
|
|
logger := setupLogger()
|
|
showVersion(logger)
|
|
sdownMaxProcs := setupMaxProcs(logger)
|
|
setupProfiling(logger)
|
|
ctx, sdownSignals := setupSignals(logger)
|
|
client := kubeclient.From(createKubernetesClient(logger), kubeclient.WithTracing())
|
|
metricsConfiguration := startMetricsConfigController(ctx, logger, client)
|
|
metricsManager, sdownMetrics := SetupMetrics(ctx, logger, metricsConfiguration, client)
|
|
client = client.WithMetrics(metricsManager, metrics.KubeClient)
|
|
configuration := startConfigController(ctx, logger, client, skipResourceFilters)
|
|
sdownTracing := SetupTracing(logger, name, client)
|
|
setupCosign(logger)
|
|
var registryClient registryclient.Client
|
|
if config.UsesRegistryClient() {
|
|
registryClient = setupRegistryClient(ctx, logger, client)
|
|
}
|
|
var leaderElectionClient kubernetes.Interface
|
|
if config.UsesLeaderElection() {
|
|
leaderElectionClient = createKubernetesClient(logger, kubeclient.WithMetrics(metricsManager, metrics.KubeClient), kubeclient.WithTracing())
|
|
}
|
|
return ctx,
|
|
SetupResult{
|
|
Logger: logger,
|
|
Configuration: configuration,
|
|
MetricsConfiguration: metricsConfiguration,
|
|
MetricsManager: metricsManager,
|
|
KubeClient: client,
|
|
LeaderElectionClient: leaderElectionClient,
|
|
RegistryClient: registryClient,
|
|
},
|
|
shutdown(logger.WithName("shutdown"), sdownMaxProcs, sdownMetrics, sdownTracing, sdownSignals)
|
|
}
|