diff --git a/pkg/generate/generate.go b/pkg/generate/generate.go index 267a62d34d..dc3b31da7b 100644 --- a/pkg/generate/generate.go +++ b/pkg/generate/generate.go @@ -47,18 +47,22 @@ func (c *Controller) applyGenerate(resource unstructured.Unstructured, gr kyvern policy, err := c.pLister.Get(gr.Spec.Policy) if err != nil { if apierrors.IsNotFound(err) { - for _, e := range policy.Spec.Rules { - if e.Generation.Synchronize { - if err := c.client.DeleteResource(e.Generation.Kind, e.Generation.Namespace, e.Generation.Name, false); err != nil { - logger.V(4).Info("Generated resource is deleted") - return nil, err - } + resource, err := c.client.GetResource(gr.Spec.Resource.Kind, gr.Spec.Resource.Namespace, gr.Spec.Resource.Name) + if err != nil { + logger.V(4).Info("Generated resource is deleted") + return nil, err + } + labels := resource.GetLabels() + if labels["app.kubernetes.io/synchronize"] == "enable" { + if err := c.client.DeleteResource(gr.Spec.Resource.Kind, gr.Spec.Resource.Namespace, gr.Spec.Resource.Name, false); err != nil { + logger.V(4).Info("Generated resource is deleted") + return nil, err } } - return nil, nil } logger.Error(err, "error in getting policy") + return nil, err } resourceRaw, err := resource.MarshalJSON()