mirror of
https://github.com/kyverno/kyverno.git
synced 2025-03-28 10:28:36 +00:00
chore: add informer util (#3796)
This commit is contained in:
parent
0a783bdc7d
commit
288125ebd0
3 changed files with 35 additions and 14 deletions
10
Makefile
10
Makefile
|
@ -59,7 +59,7 @@ PWD := $(CURDIR)
|
|||
INITC_PATH := cmd/initContainer
|
||||
INITC_IMAGE := kyvernopre
|
||||
initContainer: fmt vet
|
||||
GOOS=$(GOOS) go build -o $(PWD)/$(INITC_PATH)/kyvernopre -ldflags=$(LD_FLAGS) $(PWD)/$(INITC_PATH)/main.go
|
||||
GOOS=$(GOOS) go build -o $(PWD)/$(INITC_PATH)/kyvernopre -ldflags=$(LD_FLAGS) $(PWD)/$(INITC_PATH)
|
||||
|
||||
.PHONY: docker-build-initContainer docker-push-initContainer
|
||||
|
||||
|
@ -84,7 +84,7 @@ docker-get-initContainer-digest:
|
|||
@docker buildx imagetools inspect --raw $(REPO)/$(INITC_IMAGE):$(IMAGE_TAG) | perl -pe 'chomp if eof' | openssl dgst -sha256 | sed 's/^.* //'
|
||||
|
||||
docker-build-initContainer-local:
|
||||
CGO_ENABLED=0 GOOS=linux go build -o $(PWD)/$(INITC_PATH)/kyvernopre -ldflags=$(LD_FLAGS) $(PWD)/$(INITC_PATH)/main.go
|
||||
CGO_ENABLED=0 GOOS=linux go build -o $(PWD)/$(INITC_PATH)/kyvernopre -ldflags=$(LD_FLAGS) $(PWD)/$(INITC_PATH)
|
||||
@docker build -f $(PWD)/$(INITC_PATH)/localDockerfile -t $(REPO)/$(INITC_IMAGE):$(IMAGE_TAG_DEV) $(PWD)/$(INITC_PATH)
|
||||
@docker tag $(REPO)/$(INITC_IMAGE):$(IMAGE_TAG_DEV) $(REPO)/$(INITC_IMAGE):latest
|
||||
|
||||
|
@ -111,7 +111,7 @@ local:
|
|||
go build -ldflags=$(LD_FLAGS) $(PWD)/$(CLI_PATH)
|
||||
|
||||
kyverno: fmt vet
|
||||
GOOS=$(GOOS) go build -o $(PWD)/$(KYVERNO_PATH)/kyverno -ldflags=$(LD_FLAGS) $(PWD)/$(KYVERNO_PATH)/main.go
|
||||
GOOS=$(GOOS) go build -o $(PWD)/$(KYVERNO_PATH)/kyverno -ldflags=$(LD_FLAGS) $(PWD)/$(KYVERNO_PATH)
|
||||
|
||||
docker-publish-kyverno: docker-buildx-builder docker-build-kyverno docker-push-kyverno
|
||||
|
||||
|
@ -119,7 +119,7 @@ docker-build-kyverno: docker-buildx-builder
|
|||
@docker buildx build --file $(PWD)/$(KYVERNO_PATH)/Dockerfile --progress plane --platform linux/arm64,linux/amd64,linux/s390x --tag $(REPO)/$(KYVERNO_IMAGE):$(IMAGE_TAG) . --build-arg LD_FLAGS=$(LD_FLAGS)
|
||||
|
||||
docker-build-kyverno-local:
|
||||
CGO_ENABLED=0 GOOS=linux go build -o $(PWD)/$(KYVERNO_PATH)/kyverno -ldflags=$(LD_FLAGS_DEV) $(PWD)/$(KYVERNO_PATH)/main.go
|
||||
CGO_ENABLED=0 GOOS=linux go build -o $(PWD)/$(KYVERNO_PATH)/kyverno -ldflags=$(LD_FLAGS_DEV) $(PWD)/$(KYVERNO_PATH)
|
||||
@docker build -f $(PWD)/$(KYVERNO_PATH)/localDockerfile -t $(REPO)/$(KYVERNO_IMAGE):$(IMAGE_TAG_DEV) -t $(REPO)/$(KYVERNO_IMAGE):latest $(PWD)/$(KYVERNO_PATH)
|
||||
@docker tag $(REPO)/$(KYVERNO_IMAGE):$(IMAGE_TAG_DEV) $(REPO)/$(KYVERNO_IMAGE):$(IMAGE_TAG_LATEST_DEV)-latest
|
||||
|
||||
|
@ -174,7 +174,7 @@ CLI_PATH := cmd/cli/kubectl-kyverno
|
|||
KYVERNO_CLI_IMAGE := kyverno-cli
|
||||
|
||||
cli:
|
||||
GOOS=$(GOOS) go build -o $(PWD)/$(CLI_PATH)/kyverno -ldflags=$(LD_FLAGS) $(PWD)/$(CLI_PATH)/main.go
|
||||
GOOS=$(GOOS) go build -o $(PWD)/$(CLI_PATH)/kyverno -ldflags=$(LD_FLAGS) $(PWD)/$(CLI_PATH)
|
||||
|
||||
docker-publish-cli: docker-buildx-builder docker-build-cli docker-push-cli
|
||||
|
||||
|
|
28
cmd/kyverno/informer.go
Normal file
28
cmd/kyverno/informer.go
Normal file
|
@ -0,0 +1,28 @@
|
|||
package main
|
||||
|
||||
import (
|
||||
"reflect"
|
||||
)
|
||||
|
||||
// TODO: eventually move this in an util package
|
||||
type informer interface {
|
||||
Start(stopCh <-chan struct{})
|
||||
WaitForCacheSync(stopCh <-chan struct{}) map[reflect.Type]bool
|
||||
}
|
||||
|
||||
func startInformers(stopCh <-chan struct{}, informers ...informer) {
|
||||
for i := range informers {
|
||||
informers[i].Start(stopCh)
|
||||
}
|
||||
}
|
||||
|
||||
func waitForCacheSync(stopCh <-chan struct{}, informers ...informer) {
|
||||
for i := range informers {
|
||||
informers[i].WaitForCacheSync(stopCh)
|
||||
}
|
||||
}
|
||||
|
||||
func startInformersAndWaitForCacheSync(stopCh <-chan struct{}, informers ...informer) {
|
||||
startInformers(stopCh, informers...)
|
||||
waitForCacheSync(stopCh, informers...)
|
||||
}
|
|
@ -343,9 +343,7 @@ func main() {
|
|||
registerWrapperRetry := common.RetryFunc(time.Second, webhookRegistrationTimeout, webhookCfg.Register, "failed to register webhook", setupLog)
|
||||
registerWebhookConfigurations := func() {
|
||||
certManager.InitTLSPemPair()
|
||||
kyvernoInformer.WaitForCacheSync(stopCh)
|
||||
kubeInformer.WaitForCacheSync(stopCh)
|
||||
kubeKyvernoInformer.WaitForCacheSync(stopCh)
|
||||
waitForCacheSync(stopCh, kyvernoInformer, kubeInformer, kubeKyvernoInformer)
|
||||
|
||||
// validate the ConfigMap format
|
||||
if err := webhookCfg.ValidateWebhookConfigurations(config.KyvernoNamespace, configData.GetInitConfigMapName()); err != nil {
|
||||
|
@ -459,12 +457,7 @@ func main() {
|
|||
os.Exit(1)
|
||||
}
|
||||
|
||||
kyvernoInformer.Start(stopCh)
|
||||
kubeInformer.Start(stopCh)
|
||||
kubeKyvernoInformer.Start(stopCh)
|
||||
kyvernoInformer.WaitForCacheSync(stopCh)
|
||||
kubeInformer.WaitForCacheSync(stopCh)
|
||||
kubeKyvernoInformer.WaitForCacheSync(stopCh)
|
||||
startInformersAndWaitForCacheSync(stopCh, kyvernoInformer, kubeInformer, kubeKyvernoInformer)
|
||||
|
||||
pCacheController.CheckPolicySync(stopCh)
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue