From 4b3de264330afc12dab9b6e8f286612924ad5167 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Charles-Edouard=20Br=C3=A9t=C3=A9ch=C3=A9?= Date: Mon, 4 Apr 2022 22:16:45 +0200 Subject: [PATCH] refactor: use BackgroundProcessingEnabled method (#3544) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Charles-Edouard Brétéché Co-authored-by: shuting --- Makefile | 13 +++++++++++++ pkg/metrics/parsers.go | 5 ++--- pkg/metrics/policychanges/policyChanges.go | 4 ++-- .../policyExecutionDuration.go | 3 +-- pkg/metrics/policyresults/policyResults.go | 2 +- pkg/metrics/policyruleinfo/policyRuleInfo.go | 8 ++++---- pkg/policy/metrics.go | 2 +- pkg/policy/validate.go | 4 ++-- 8 files changed, 26 insertions(+), 15 deletions(-) diff --git a/Makefile b/Makefile index aa63af2460..c7a3e39ae1 100644 --- a/Makefile +++ b/Makefile @@ -466,3 +466,16 @@ verify-helm: gen-helm ## Check Helm charts are up to date .PHONY: help help: ## Shows the available commands @grep -E '^[a-zA-Z_-]+:.*?## .*$$' $(MAKEFILE_LIST) | awk 'BEGIN {FS = ":.*?## "}; {printf "\033[36m%-30s\033[0m %s\n", $$1, $$2}' + + +.PHONY: kind-deploy +kind-deploy: docker-build-initContainer-local docker-build-kyverno-local + kind load docker-image $(REPO)/$(INITC_IMAGE):$(IMAGE_TAG_DEV) + kind load docker-image $(REPO)/$(KYVERNO_IMAGE):$(IMAGE_TAG_DEV) + helm upgrade --install kyverno --namespace kyverno --create-namespace ./charts/kyverno \ + --set image.repository=$(REPO)/$(KYVERNO_IMAGE) \ + --set image.tag=$(IMAGE_TAG_DEV) \ + --set initImage.repository=$(REPO)/$(INITC_IMAGE) \ + --set initImage.tag=$(IMAGE_TAG_DEV) \ + --set extraArgs={--autogenInternals=true} + helm upgrade --install kyverno-policies --namespace kyverno --create-namespace ./charts/kyverno-policies diff --git a/pkg/metrics/parsers.go b/pkg/metrics/parsers.go index 5b1f95a26e..66810b76ee 100644 --- a/pkg/metrics/parsers.go +++ b/pkg/metrics/parsers.go @@ -18,11 +18,10 @@ func ParsePolicyValidationMode(validationFailureAction kyverno.ValidationFailure } } -func ParsePolicyBackgroundMode(backgroundMode *bool) PolicyBackgroundMode { - if backgroundMode == nil || *backgroundMode { +func ParsePolicyBackgroundMode(policy kyverno.PolicyInterface) PolicyBackgroundMode { + if policy.BackgroundProcessingEnabled() { return BackgroundTrue } - return BackgroundFalse } diff --git a/pkg/metrics/policychanges/policyChanges.go b/pkg/metrics/policychanges/policyChanges.go index e278e4337b..d61a59f3bd 100644 --- a/pkg/metrics/policychanges/policyChanges.go +++ b/pkg/metrics/policychanges/policyChanges.go @@ -46,7 +46,7 @@ func (pc PromConfig) RegisterPolicy(policy interface{}, policyChangeType PolicyC if err != nil { return err } - policyBackgroundMode := metrics.ParsePolicyBackgroundMode(inputPolicy.Spec.Background) + policyBackgroundMode := metrics.ParsePolicyBackgroundMode(inputPolicy) policyType := metrics.Cluster policyNamespace := "" // doesn't matter for cluster policy policyName := inputPolicy.GetName() @@ -59,7 +59,7 @@ func (pc PromConfig) RegisterPolicy(policy interface{}, policyChangeType PolicyC if err != nil { return err } - policyBackgroundMode := metrics.ParsePolicyBackgroundMode(inputPolicy.Spec.Background) + policyBackgroundMode := metrics.ParsePolicyBackgroundMode(inputPolicy) policyType := metrics.Namespaced policyNamespace := inputPolicy.GetNamespace() policyName := inputPolicy.GetName() diff --git a/pkg/metrics/policyexecutionduration/policyExecutionDuration.go b/pkg/metrics/policyexecutionduration/policyExecutionDuration.go index 739a970386..ed154750f3 100644 --- a/pkg/metrics/policyexecutionduration/policyExecutionDuration.go +++ b/pkg/metrics/policyexecutionduration/policyExecutionDuration.go @@ -60,13 +60,12 @@ func (pc PromConfig) registerPolicyExecutionDurationMetric( //policy - policy related data //engineResponse - resource and rule related data func (pc PromConfig) ProcessEngineResponse(policy kyverno.PolicyInterface, engineResponse response.EngineResponse, executionCause metrics.RuleExecutionCause, generateRuleLatencyType string, resourceRequestOperation metrics.ResourceRequestOperation) error { - policyValidationMode, err := metrics.ParsePolicyValidationMode(policy.GetSpec().GetValidationFailureAction()) if err != nil { return err } policyType := metrics.Namespaced - policyBackgroundMode := metrics.ParsePolicyBackgroundMode(policy.GetSpec().Background) + policyBackgroundMode := metrics.ParsePolicyBackgroundMode(policy) policyNamespace := policy.GetNamespace() if policyNamespace == "" { policyNamespace = "-" diff --git a/pkg/metrics/policyresults/policyResults.go b/pkg/metrics/policyresults/policyResults.go index d5796d1993..33d9323496 100644 --- a/pkg/metrics/policyresults/policyResults.go +++ b/pkg/metrics/policyresults/policyResults.go @@ -59,7 +59,7 @@ func (pc PromConfig) ProcessEngineResponse(policy kyverno.PolicyInterface, engin return err } policyType := metrics.Namespaced - policyBackgroundMode := metrics.ParsePolicyBackgroundMode(policy.GetSpec().Background) + policyBackgroundMode := metrics.ParsePolicyBackgroundMode(policy) policyNamespace := policy.GetNamespace() if policyNamespace == "" { policyNamespace = "-" diff --git a/pkg/metrics/policyruleinfo/policyRuleInfo.go b/pkg/metrics/policyruleinfo/policyRuleInfo.go index 2fe70d20ca..c22d260ff9 100644 --- a/pkg/metrics/policyruleinfo/policyRuleInfo.go +++ b/pkg/metrics/policyruleinfo/policyRuleInfo.go @@ -69,7 +69,7 @@ func (pc PromConfig) AddPolicy(policy interface{}) error { if err != nil { return err } - policyBackgroundMode := metrics.ParsePolicyBackgroundMode(inputPolicy.Spec.Background) + policyBackgroundMode := metrics.ParsePolicyBackgroundMode(inputPolicy) policyType := metrics.Cluster policyNamespace := "" // doesn't matter for cluster policy policyName := inputPolicy.GetName() @@ -89,7 +89,7 @@ func (pc PromConfig) AddPolicy(policy interface{}) error { if err != nil { return err } - policyBackgroundMode := metrics.ParsePolicyBackgroundMode(inputPolicy.Spec.Background) + policyBackgroundMode := metrics.ParsePolicyBackgroundMode(inputPolicy) policyType := metrics.Namespaced policyNamespace := inputPolicy.GetNamespace() policyName := inputPolicy.GetName() @@ -117,7 +117,7 @@ func (pc PromConfig) RemovePolicy(policy interface{}) error { if err != nil { return err } - policyBackgroundMode := metrics.ParsePolicyBackgroundMode(inputPolicy.Spec.Background) + policyBackgroundMode := metrics.ParsePolicyBackgroundMode(inputPolicy) policyType := metrics.Cluster policyNamespace := "" // doesn't matter for cluster policy policyName := inputPolicy.GetName() @@ -136,7 +136,7 @@ func (pc PromConfig) RemovePolicy(policy interface{}) error { if err != nil { return err } - policyBackgroundMode := metrics.ParsePolicyBackgroundMode(inputPolicy.Spec.Background) + policyBackgroundMode := metrics.ParsePolicyBackgroundMode(inputPolicy) policyType := metrics.Namespaced policyNamespace := inputPolicy.GetNamespace() policyName := inputPolicy.GetName() diff --git a/pkg/policy/metrics.go b/pkg/policy/metrics.go index 3730b76736..9dd64f07fc 100644 --- a/pkg/policy/metrics.go +++ b/pkg/policy/metrics.go @@ -54,7 +54,7 @@ func (pc *PolicyController) registerPolicyChangesMetricUpdatePolicy(logger logr. logger.Error(err, "error occurred while registering kyverno_policy_changes_total metrics for the above policy's updation", "name", oldP.GetName()) } // curP will require a new kyverno_policy_changes_total metric if the above update involved change in the following fields: - if curSpec.Background != oldSpec.Background || curSpec.GetValidationFailureAction() != oldSpec.GetValidationFailureAction() { + if curSpec.BackgroundProcessingEnabled() != oldSpec.BackgroundProcessingEnabled() || curSpec.GetValidationFailureAction() != oldSpec.GetValidationFailureAction() { err = policyChangesMetric.ParsePromConfig(*pc.promConfig).RegisterPolicy(curP, policyChangesMetric.PolicyUpdated) if err != nil { logger.Error(err, "error occurred while registering kyverno_policy_changes_total metrics for the above policy's updation", "name", curP.GetName()) diff --git a/pkg/policy/validate.go b/pkg/policy/validate.go index 2a62de7b6a..9a3dfbc4a4 100644 --- a/pkg/policy/validate.go +++ b/pkg/policy/validate.go @@ -81,7 +81,7 @@ func validateJSONPatchPathForForwardSlash(patch string) error { func Validate(policy kyverno.PolicyInterface, client *dclient.Client, mock bool, openAPIController *openapi.Controller) (*v1beta1.AdmissionResponse, error) { namespaced := policy.IsNamespaced() spec := policy.GetSpec() - background := spec.Background == nil || *spec.Background + background := spec.BackgroundProcessingEnabled() var errs field.ErrorList specPath := field.NewPath("spec") @@ -176,7 +176,7 @@ func Validate(policy kyverno.PolicyInterface, client *dclient.Client, mock bool, } } - if utils.ContainsString(rule.MatchResources.Kinds, "*") && (spec.Background == nil || *spec.Background) { + if utils.ContainsString(rule.MatchResources.Kinds, "*") && spec.BackgroundProcessingEnabled() { return nil, fmt.Errorf("wildcard policy not allowed in background mode. Set spec.background=false to disable background mode for this policy rule ") }