mirror of
https://github.com/kyverno/kyverno.git
synced 2025-03-31 03:45:17 +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_PATH := cmd/initContainer
|
||||||
INITC_IMAGE := kyvernopre
|
INITC_IMAGE := kyvernopre
|
||||||
initContainer: fmt vet
|
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
|
.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 buildx imagetools inspect --raw $(REPO)/$(INITC_IMAGE):$(IMAGE_TAG) | perl -pe 'chomp if eof' | openssl dgst -sha256 | sed 's/^.* //'
|
||||||
|
|
||||||
docker-build-initContainer-local:
|
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 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
|
@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)
|
go build -ldflags=$(LD_FLAGS) $(PWD)/$(CLI_PATH)
|
||||||
|
|
||||||
kyverno: fmt vet
|
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
|
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 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:
|
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 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
|
@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
|
KYVERNO_CLI_IMAGE := kyverno-cli
|
||||||
|
|
||||||
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
|
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)
|
registerWrapperRetry := common.RetryFunc(time.Second, webhookRegistrationTimeout, webhookCfg.Register, "failed to register webhook", setupLog)
|
||||||
registerWebhookConfigurations := func() {
|
registerWebhookConfigurations := func() {
|
||||||
certManager.InitTLSPemPair()
|
certManager.InitTLSPemPair()
|
||||||
kyvernoInformer.WaitForCacheSync(stopCh)
|
waitForCacheSync(stopCh, kyvernoInformer, kubeInformer, kubeKyvernoInformer)
|
||||||
kubeInformer.WaitForCacheSync(stopCh)
|
|
||||||
kubeKyvernoInformer.WaitForCacheSync(stopCh)
|
|
||||||
|
|
||||||
// validate the ConfigMap format
|
// validate the ConfigMap format
|
||||||
if err := webhookCfg.ValidateWebhookConfigurations(config.KyvernoNamespace, configData.GetInitConfigMapName()); err != nil {
|
if err := webhookCfg.ValidateWebhookConfigurations(config.KyvernoNamespace, configData.GetInitConfigMapName()); err != nil {
|
||||||
|
@ -459,12 +457,7 @@ func main() {
|
||||||
os.Exit(1)
|
os.Exit(1)
|
||||||
}
|
}
|
||||||
|
|
||||||
kyvernoInformer.Start(stopCh)
|
startInformersAndWaitForCacheSync(stopCh, kyvernoInformer, kubeInformer, kubeKyvernoInformer)
|
||||||
kubeInformer.Start(stopCh)
|
|
||||||
kubeKyvernoInformer.Start(stopCh)
|
|
||||||
kyvernoInformer.WaitForCacheSync(stopCh)
|
|
||||||
kubeInformer.WaitForCacheSync(stopCh)
|
|
||||||
kubeKyvernoInformer.WaitForCacheSync(stopCh)
|
|
||||||
|
|
||||||
pCacheController.CheckPolicySync(stopCh)
|
pCacheController.CheckPolicySync(stopCh)
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue