package apply import ( "fmt" "os" "path/filepath" "strings" "time" "github.com/go-git/go-billy/v5/memfs" "github.com/kyverno/kyverno/api/kyverno/v1beta1" "github.com/kyverno/kyverno/cmd/cli/kubectl-kyverno/utils/common" sanitizederror "github.com/kyverno/kyverno/cmd/cli/kubectl-kyverno/utils/sanitizedError" "github.com/kyverno/kyverno/cmd/cli/kubectl-kyverno/utils/store" "github.com/kyverno/kyverno/pkg/dclient" "github.com/kyverno/kyverno/pkg/openapi" policy2 "github.com/kyverno/kyverno/pkg/policy" "github.com/kyverno/kyverno/pkg/policyreport" "github.com/spf13/cobra" "k8s.io/apimachinery/pkg/apis/meta/v1/unstructured" "k8s.io/cli-runtime/pkg/genericclioptions" "k8s.io/client-go/kubernetes" log "sigs.k8s.io/controller-runtime/pkg/log" yaml1 "sigs.k8s.io/yaml" ) type Resource struct { Name string `json:"name"` Values map[string]string `json:"values"` } type Policy struct { Name string `json:"name"` Resources []Resource `json:"resources"` } type Values struct { Policies []Policy `json:"policies"` } type SkippedInvalidPolicies struct { skipped []string invalid []string } var applyHelp = ` To apply on a resource: kyverno apply /path/to/policy.yaml /path/to/folderOfPolicies --resource=/path/to/resource1 --resource=/path/to/resource2 To apply on a cluster: kyverno apply /path/to/policy.yaml /path/to/folderOfPolicies --cluster To apply policy with variables: 1. To apply single policy with variable on single resource use flag "set". Example: kyverno apply /path/to/policy.yaml --resource /path/to/resource.yaml --set =,= 2. To apply multiple policy with variable on multiple resource use flag "values_file". Example: kyverno apply /path/to/policy1.yaml /path/to/policy2.yaml --resource /path/to/resource1.yaml --resource /path/to/resource2.yaml -f /path/to/value.yaml Format of value.yaml: policies: - name: rules: - name: values: : : - name: values: : : resources: - name: values: : : - name: values: : : - name: resources: - name: values: : : - name: values: : : namespaceSelector: - name: labels: