mirror of
https://github.com/kyverno/kyverno.git
synced 2025-04-15 16:56:56 +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"
|
||||
kyvernoclient "github.com/kyverno/kyverno/pkg/clients/kyverno"
|
||||
"github.com/kyverno/kyverno/pkg/config"
|
||||
configcontroller "github.com/kyverno/kyverno/pkg/controllers/config"
|
||||
policymetricscontroller "github.com/kyverno/kyverno/pkg/controllers/metrics/policy"
|
||||
"github.com/kyverno/kyverno/pkg/cosign"
|
||||
"github.com/kyverno/kyverno/pkg/engine"
|
||||
|
@ -94,7 +95,6 @@ func createrLeaderControllers(
|
|||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
backgroundController := background.NewController(
|
||||
kyvernoClient,
|
||||
dynamicClient,
|
||||
|
@ -113,6 +113,20 @@ func createrLeaderControllers(
|
|||
}, 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() {
|
||||
var (
|
||||
genWorkers int
|
||||
|
@ -221,11 +235,23 @@ func main() {
|
|||
// TODO: do we need exceptions here ?
|
||||
nil,
|
||||
)
|
||||
// create non leader controllers
|
||||
nonLeaderControllers, nonLeaderBootstrap := createNonLeaderControllers(
|
||||
configuration,
|
||||
kubeKyvernoInformer,
|
||||
)
|
||||
// start informers and wait for cache sync
|
||||
if !internal.StartInformersAndWaitForCacheSync(signalCtx, 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
|
||||
go eventGenerator.Run(signalCtx, 3, &wg)
|
||||
// setup leader election
|
||||
|
@ -278,6 +304,10 @@ func main() {
|
|||
logger.Error(err, "failed to initialize leader election")
|
||||
os.Exit(1)
|
||||
}
|
||||
// start non leader controllers
|
||||
for _, controller := range nonLeaderControllers {
|
||||
controller.Run(signalCtx, logger.WithName("controllers"), &wg)
|
||||
}
|
||||
// start leader election
|
||||
for {
|
||||
select {
|
||||
|
|
|
@ -19,6 +19,7 @@ import (
|
|||
kyvernoclient "github.com/kyverno/kyverno/pkg/clients/kyverno"
|
||||
metadataclient "github.com/kyverno/kyverno/pkg/clients/metadata"
|
||||
"github.com/kyverno/kyverno/pkg/config"
|
||||
configcontroller "github.com/kyverno/kyverno/pkg/controllers/config"
|
||||
admissionreportcontroller "github.com/kyverno/kyverno/pkg/controllers/report/admission"
|
||||
aggregatereportcontroller "github.com/kyverno/kyverno/pkg/controllers/report/aggregate"
|
||||
backgroundscancontroller "github.com/kyverno/kyverno/pkg/controllers/report/background"
|
||||
|
@ -191,6 +192,20 @@ func createrLeaderControllers(
|
|||
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() {
|
||||
var (
|
||||
leaderElectionRetryPeriod time.Duration
|
||||
|
@ -304,14 +319,6 @@ func main() {
|
|||
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(
|
||||
configuration,
|
||||
dClient,
|
||||
|
@ -319,6 +326,26 @@ func main() {
|
|||
engineapi.DefaultContextLoaderFactory(configMapResolver),
|
||||
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
|
||||
le, err := leaderelection.New(
|
||||
logger.WithName("leader-election"),
|
||||
|
@ -384,6 +411,10 @@ func main() {
|
|||
logger.Error(err, "failed to initialize leader election")
|
||||
os.Exit(1)
|
||||
}
|
||||
// start non leader controllers
|
||||
for _, controller := range nonLeaderControllers {
|
||||
controller.Run(ctx, logger.WithName("controllers"), &wg)
|
||||
}
|
||||
for {
|
||||
select {
|
||||
case <-ctx.Done():
|
||||
|
|
Loading…
Add table
Reference in a new issue