mirror of
https://github.com/kyverno/kyverno.git
synced 2025-04-16 09:16:24 +00:00
fix: add missing config controller to reports and background controllers (#6663)
Signed-off-by: Charles-Edouard Brétéché <charles.edouard@nirmata.com>
This commit is contained in:
parent
5c686c4f45
commit
437d908fb8
2 changed files with 70 additions and 9 deletions
|
@ -19,6 +19,7 @@ import (
|
||||||
kubeclient "github.com/kyverno/kyverno/pkg/clients/kube"
|
kubeclient "github.com/kyverno/kyverno/pkg/clients/kube"
|
||||||
kyvernoclient "github.com/kyverno/kyverno/pkg/clients/kyverno"
|
kyvernoclient "github.com/kyverno/kyverno/pkg/clients/kyverno"
|
||||||
"github.com/kyverno/kyverno/pkg/config"
|
"github.com/kyverno/kyverno/pkg/config"
|
||||||
|
configcontroller "github.com/kyverno/kyverno/pkg/controllers/config"
|
||||||
policymetricscontroller "github.com/kyverno/kyverno/pkg/controllers/metrics/policy"
|
policymetricscontroller "github.com/kyverno/kyverno/pkg/controllers/metrics/policy"
|
||||||
"github.com/kyverno/kyverno/pkg/cosign"
|
"github.com/kyverno/kyverno/pkg/cosign"
|
||||||
"github.com/kyverno/kyverno/pkg/engine"
|
"github.com/kyverno/kyverno/pkg/engine"
|
||||||
|
@ -94,7 +95,6 @@ func createrLeaderControllers(
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
backgroundController := background.NewController(
|
backgroundController := background.NewController(
|
||||||
kyvernoClient,
|
kyvernoClient,
|
||||||
dynamicClient,
|
dynamicClient,
|
||||||
|
@ -113,6 +113,20 @@ func createrLeaderControllers(
|
||||||
}, err
|
}, err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func createNonLeaderControllers(
|
||||||
|
configuration config.Configuration,
|
||||||
|
kubeKyvernoInformer kubeinformers.SharedInformerFactory,
|
||||||
|
) ([]internal.Controller, func() error) {
|
||||||
|
configurationController := configcontroller.NewController(
|
||||||
|
configuration,
|
||||||
|
kubeKyvernoInformer.Core().V1().ConfigMaps(),
|
||||||
|
)
|
||||||
|
return []internal.Controller{
|
||||||
|
internal.NewController(configcontroller.ControllerName, configurationController, configcontroller.Workers),
|
||||||
|
},
|
||||||
|
nil
|
||||||
|
}
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
var (
|
var (
|
||||||
genWorkers int
|
genWorkers int
|
||||||
|
@ -221,11 +235,23 @@ func main() {
|
||||||
// TODO: do we need exceptions here ?
|
// TODO: do we need exceptions here ?
|
||||||
nil,
|
nil,
|
||||||
)
|
)
|
||||||
|
// create non leader controllers
|
||||||
|
nonLeaderControllers, nonLeaderBootstrap := createNonLeaderControllers(
|
||||||
|
configuration,
|
||||||
|
kubeKyvernoInformer,
|
||||||
|
)
|
||||||
// start informers and wait for cache sync
|
// start informers and wait for cache sync
|
||||||
if !internal.StartInformersAndWaitForCacheSync(signalCtx, logger, kyvernoInformer, kubeKyvernoInformer, cacheInformer) {
|
if !internal.StartInformersAndWaitForCacheSync(signalCtx, logger, kyvernoInformer, kubeKyvernoInformer, cacheInformer) {
|
||||||
logger.Error(errors.New("failed to wait for cache sync"), "failed to wait for cache sync")
|
logger.Error(errors.New("failed to wait for cache sync"), "failed to wait for cache sync")
|
||||||
os.Exit(1)
|
os.Exit(1)
|
||||||
}
|
}
|
||||||
|
// bootstrap non leader controllers
|
||||||
|
if nonLeaderBootstrap != nil {
|
||||||
|
if err := nonLeaderBootstrap(); err != nil {
|
||||||
|
logger.Error(err, "failed to bootstrap non leader controllers")
|
||||||
|
os.Exit(1)
|
||||||
|
}
|
||||||
|
}
|
||||||
// start event generator
|
// start event generator
|
||||||
go eventGenerator.Run(signalCtx, 3, &wg)
|
go eventGenerator.Run(signalCtx, 3, &wg)
|
||||||
// setup leader election
|
// setup leader election
|
||||||
|
@ -278,6 +304,10 @@ func main() {
|
||||||
logger.Error(err, "failed to initialize leader election")
|
logger.Error(err, "failed to initialize leader election")
|
||||||
os.Exit(1)
|
os.Exit(1)
|
||||||
}
|
}
|
||||||
|
// start non leader controllers
|
||||||
|
for _, controller := range nonLeaderControllers {
|
||||||
|
controller.Run(signalCtx, logger.WithName("controllers"), &wg)
|
||||||
|
}
|
||||||
// start leader election
|
// start leader election
|
||||||
for {
|
for {
|
||||||
select {
|
select {
|
||||||
|
|
|
@ -19,6 +19,7 @@ import (
|
||||||
kyvernoclient "github.com/kyverno/kyverno/pkg/clients/kyverno"
|
kyvernoclient "github.com/kyverno/kyverno/pkg/clients/kyverno"
|
||||||
metadataclient "github.com/kyverno/kyverno/pkg/clients/metadata"
|
metadataclient "github.com/kyverno/kyverno/pkg/clients/metadata"
|
||||||
"github.com/kyverno/kyverno/pkg/config"
|
"github.com/kyverno/kyverno/pkg/config"
|
||||||
|
configcontroller "github.com/kyverno/kyverno/pkg/controllers/config"
|
||||||
admissionreportcontroller "github.com/kyverno/kyverno/pkg/controllers/report/admission"
|
admissionreportcontroller "github.com/kyverno/kyverno/pkg/controllers/report/admission"
|
||||||
aggregatereportcontroller "github.com/kyverno/kyverno/pkg/controllers/report/aggregate"
|
aggregatereportcontroller "github.com/kyverno/kyverno/pkg/controllers/report/aggregate"
|
||||||
backgroundscancontroller "github.com/kyverno/kyverno/pkg/controllers/report/background"
|
backgroundscancontroller "github.com/kyverno/kyverno/pkg/controllers/report/background"
|
||||||
|
@ -191,6 +192,20 @@ func createrLeaderControllers(
|
||||||
return reportControllers, warmup, nil
|
return reportControllers, warmup, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func createNonLeaderControllers(
|
||||||
|
configuration config.Configuration,
|
||||||
|
kubeKyvernoInformer kubeinformers.SharedInformerFactory,
|
||||||
|
) ([]internal.Controller, func() error) {
|
||||||
|
configurationController := configcontroller.NewController(
|
||||||
|
configuration,
|
||||||
|
kubeKyvernoInformer.Core().V1().ConfigMaps(),
|
||||||
|
)
|
||||||
|
return []internal.Controller{
|
||||||
|
internal.NewController(configcontroller.ControllerName, configurationController, configcontroller.Workers),
|
||||||
|
},
|
||||||
|
nil
|
||||||
|
}
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
var (
|
var (
|
||||||
leaderElectionRetryPeriod time.Duration
|
leaderElectionRetryPeriod time.Duration
|
||||||
|
@ -304,14 +319,6 @@ func main() {
|
||||||
exceptionsLister = lister
|
exceptionsLister = lister
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// start informers and wait for cache sync
|
|
||||||
if !internal.StartInformersAndWaitForCacheSync(ctx, logger, kyvernoInformer, kubeKyvernoInformer, cacheInformer) {
|
|
||||||
logger.Error(errors.New("failed to wait for cache sync"), "failed to wait for cache sync")
|
|
||||||
os.Exit(1)
|
|
||||||
}
|
|
||||||
// start event generator
|
|
||||||
var wg sync.WaitGroup
|
|
||||||
go eventGenerator.Run(ctx, 3, &wg)
|
|
||||||
eng := engine.NewEngine(
|
eng := engine.NewEngine(
|
||||||
configuration,
|
configuration,
|
||||||
dClient,
|
dClient,
|
||||||
|
@ -319,6 +326,26 @@ func main() {
|
||||||
engineapi.DefaultContextLoaderFactory(configMapResolver),
|
engineapi.DefaultContextLoaderFactory(configMapResolver),
|
||||||
exceptionsLister,
|
exceptionsLister,
|
||||||
)
|
)
|
||||||
|
// create non leader controllers
|
||||||
|
nonLeaderControllers, nonLeaderBootstrap := createNonLeaderControllers(
|
||||||
|
configuration,
|
||||||
|
kubeKyvernoInformer,
|
||||||
|
)
|
||||||
|
// start informers and wait for cache sync
|
||||||
|
if !internal.StartInformersAndWaitForCacheSync(ctx, logger, kyvernoInformer, kubeKyvernoInformer, cacheInformer) {
|
||||||
|
logger.Error(errors.New("failed to wait for cache sync"), "failed to wait for cache sync")
|
||||||
|
os.Exit(1)
|
||||||
|
}
|
||||||
|
// bootstrap non leader controllers
|
||||||
|
if nonLeaderBootstrap != nil {
|
||||||
|
if err := nonLeaderBootstrap(); err != nil {
|
||||||
|
logger.Error(err, "failed to bootstrap non leader controllers")
|
||||||
|
os.Exit(1)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// start event generator
|
||||||
|
var wg sync.WaitGroup
|
||||||
|
go eventGenerator.Run(ctx, 3, &wg)
|
||||||
// setup leader election
|
// setup leader election
|
||||||
le, err := leaderelection.New(
|
le, err := leaderelection.New(
|
||||||
logger.WithName("leader-election"),
|
logger.WithName("leader-election"),
|
||||||
|
@ -384,6 +411,10 @@ func main() {
|
||||||
logger.Error(err, "failed to initialize leader election")
|
logger.Error(err, "failed to initialize leader election")
|
||||||
os.Exit(1)
|
os.Exit(1)
|
||||||
}
|
}
|
||||||
|
// start non leader controllers
|
||||||
|
for _, controller := range nonLeaderControllers {
|
||||||
|
controller.Run(ctx, logger.WithName("controllers"), &wg)
|
||||||
|
}
|
||||||
for {
|
for {
|
||||||
select {
|
select {
|
||||||
case <-ctx.Done():
|
case <-ctx.Done():
|
||||||
|
|
Loading…
Add table
Reference in a new issue