diff --git a/.crds/chainsaw.kyverno.io_tests.yaml b/.crds/chainsaw.kyverno.io_tests.yaml index aabc3f97b..74a25008d 100644 --- a/.crds/chainsaw.kyverno.io_tests.yaml +++ b/.crds/chainsaw.kyverno.io_tests.yaml @@ -123,6 +123,23 @@ spec: items: type: string type: array + bindings: + description: Bindings defines additional binding key/values. + items: + description: Binding represents a key/value set + as a binding in an executing test. + properties: + name: + description: Name the name of the binding. + type: string + value: + description: Value value of the binding. + x-kubernetes-preserve-unknown-fields: true + required: + - name + - value + type: object + type: array check: description: Check is an assertion tree to validate the operation outcome. @@ -389,6 +406,23 @@ spec: script: description: Script defines a script to run. properties: + bindings: + description: Bindings defines additional binding key/values. + items: + description: Binding represents a key/value set + as a binding in an executing test. + properties: + name: + description: Name the name of the binding. + type: string + value: + description: Value value of the binding. + x-kubernetes-preserve-unknown-fields: true + required: + - name + - value + type: object + type: array check: description: Check is an assertion tree to validate the operation outcome. @@ -463,6 +497,23 @@ spec: items: type: string type: array + bindings: + description: Bindings defines additional binding key/values. + items: + description: Binding represents a key/value set + as a binding in an executing test. + properties: + name: + description: Name the name of the binding. + type: string + value: + description: Value value of the binding. + x-kubernetes-preserve-unknown-fields: true + required: + - name + - value + type: object + type: array check: description: Check is an assertion tree to validate the operation outcome. @@ -729,6 +780,23 @@ spec: script: description: Script defines a script to run. properties: + bindings: + description: Bindings defines additional binding key/values. + items: + description: Binding represents a key/value set + as a binding in an executing test. + properties: + name: + description: Name the name of the binding. + type: string + value: + description: Value value of the binding. + x-kubernetes-preserve-unknown-fields: true + required: + - name + - value + type: object + type: array check: description: Check is an assertion tree to validate the operation outcome. @@ -948,6 +1016,23 @@ spec: items: type: string type: array + bindings: + description: Bindings defines additional binding key/values. + items: + description: Binding represents a key/value set + as a binding in an executing test. + properties: + name: + description: Name the name of the binding. + type: string + value: + description: Value value of the binding. + x-kubernetes-preserve-unknown-fields: true + required: + - name + - value + type: object + type: array check: description: Check is an assertion tree to validate the operation outcome. @@ -1275,6 +1360,23 @@ spec: script: description: Script defines a script to run. properties: + bindings: + description: Bindings defines additional binding key/values. + items: + description: Binding represents a key/value set + as a binding in an executing test. + properties: + name: + description: Name the name of the binding. + type: string + value: + description: Value value of the binding. + x-kubernetes-preserve-unknown-fields: true + required: + - name + - value + type: object + type: array check: description: Check is an assertion tree to validate the operation outcome. diff --git a/.crds/chainsaw.kyverno.io_teststeps.yaml b/.crds/chainsaw.kyverno.io_teststeps.yaml index 65ea21658..b013964ec 100644 --- a/.crds/chainsaw.kyverno.io_teststeps.yaml +++ b/.crds/chainsaw.kyverno.io_teststeps.yaml @@ -66,6 +66,23 @@ spec: items: type: string type: array + bindings: + description: Bindings defines additional binding key/values. + items: + description: Binding represents a key/value set as a binding + in an executing test. + properties: + name: + description: Name the name of the binding. + type: string + value: + description: Value value of the binding. + x-kubernetes-preserve-unknown-fields: true + required: + - name + - value + type: object + type: array check: description: Check is an assertion tree to validate the operation outcome. @@ -315,6 +332,23 @@ spec: script: description: Script defines a script to run. properties: + bindings: + description: Bindings defines additional binding key/values. + items: + description: Binding represents a key/value set as a binding + in an executing test. + properties: + name: + description: Name the name of the binding. + type: string + value: + description: Value value of the binding. + x-kubernetes-preserve-unknown-fields: true + required: + - name + - value + type: object + type: array check: description: Check is an assertion tree to validate the operation outcome. @@ -387,6 +421,23 @@ spec: items: type: string type: array + bindings: + description: Bindings defines additional binding key/values. + items: + description: Binding represents a key/value set as a binding + in an executing test. + properties: + name: + description: Name the name of the binding. + type: string + value: + description: Value value of the binding. + x-kubernetes-preserve-unknown-fields: true + required: + - name + - value + type: object + type: array check: description: Check is an assertion tree to validate the operation outcome. @@ -636,6 +687,23 @@ spec: script: description: Script defines a script to run. properties: + bindings: + description: Bindings defines additional binding key/values. + items: + description: Binding represents a key/value set as a binding + in an executing test. + properties: + name: + description: Name the name of the binding. + type: string + value: + description: Value value of the binding. + x-kubernetes-preserve-unknown-fields: true + required: + - name + - value + type: object + type: array check: description: Check is an assertion tree to validate the operation outcome. @@ -847,6 +915,23 @@ spec: items: type: string type: array + bindings: + description: Bindings defines additional binding key/values. + items: + description: Binding represents a key/value set as a binding + in an executing test. + properties: + name: + description: Name the name of the binding. + type: string + value: + description: Value value of the binding. + x-kubernetes-preserve-unknown-fields: true + required: + - name + - value + type: object + type: array check: description: Check is an assertion tree to validate the operation outcome. @@ -1161,6 +1246,23 @@ spec: script: description: Script defines a script to run. properties: + bindings: + description: Bindings defines additional binding key/values. + items: + description: Binding represents a key/value set as a binding + in an executing test. + properties: + name: + description: Name the name of the binding. + type: string + value: + description: Value value of the binding. + x-kubernetes-preserve-unknown-fields: true + required: + - name + - value + type: object + type: array check: description: Check is an assertion tree to validate the operation outcome. diff --git a/.schemas/json/test-chainsaw-v1alpha1.json b/.schemas/json/test-chainsaw-v1alpha1.json index 2770a328d..371cfa7b7 100644 --- a/.schemas/json/test-chainsaw-v1alpha1.json +++ b/.schemas/json/test-chainsaw-v1alpha1.json @@ -444,6 +444,34 @@ ] } }, + "bindings": { + "description": "Bindings defines additional binding key/values.", + "type": [ + "array", + "null" + ], + "items": { + "description": "Binding represents a key/value set as a binding in an executing test.", + "type": [ + "object", + "null" + ], + "required": [ + "name", + "value" + ], + "properties": { + "name": { + "description": "Name the name of the binding.", + "type": "string" + }, + "value": { + "description": "Value value of the binding.", + "x-kubernetes-preserve-unknown-fields": true + } + } + } + }, "check": { "description": "Check is an assertion tree to validate the operation outcome.", "x-kubernetes-preserve-unknown-fields": true @@ -883,6 +911,34 @@ "null" ], "properties": { + "bindings": { + "description": "Bindings defines additional binding key/values.", + "type": [ + "array", + "null" + ], + "items": { + "description": "Binding represents a key/value set as a binding in an executing test.", + "type": [ + "object", + "null" + ], + "required": [ + "name", + "value" + ], + "properties": { + "name": { + "description": "Name the name of the binding.", + "type": "string" + }, + "value": { + "description": "Value value of the binding.", + "x-kubernetes-preserve-unknown-fields": true + } + } + } + }, "check": { "description": "Check is an assertion tree to validate the operation outcome.", "x-kubernetes-preserve-unknown-fields": true @@ -1014,6 +1070,34 @@ ] } }, + "bindings": { + "description": "Bindings defines additional binding key/values.", + "type": [ + "array", + "null" + ], + "items": { + "description": "Binding represents a key/value set as a binding in an executing test.", + "type": [ + "object", + "null" + ], + "required": [ + "name", + "value" + ], + "properties": { + "name": { + "description": "Name the name of the binding.", + "type": "string" + }, + "value": { + "description": "Value value of the binding.", + "x-kubernetes-preserve-unknown-fields": true + } + } + } + }, "check": { "description": "Check is an assertion tree to validate the operation outcome.", "x-kubernetes-preserve-unknown-fields": true @@ -1453,6 +1537,34 @@ "null" ], "properties": { + "bindings": { + "description": "Bindings defines additional binding key/values.", + "type": [ + "array", + "null" + ], + "items": { + "description": "Binding represents a key/value set as a binding in an executing test.", + "type": [ + "object", + "null" + ], + "required": [ + "name", + "value" + ], + "properties": { + "name": { + "description": "Name the name of the binding.", + "type": "string" + }, + "value": { + "description": "Value value of the binding.", + "x-kubernetes-preserve-unknown-fields": true + } + } + } + }, "check": { "description": "Check is an assertion tree to validate the operation outcome.", "x-kubernetes-preserve-unknown-fields": true @@ -1813,6 +1925,34 @@ ] } }, + "bindings": { + "description": "Bindings defines additional binding key/values.", + "type": [ + "array", + "null" + ], + "items": { + "description": "Binding represents a key/value set as a binding in an executing test.", + "type": [ + "object", + "null" + ], + "required": [ + "name", + "value" + ], + "properties": { + "name": { + "description": "Name the name of the binding.", + "type": "string" + }, + "value": { + "description": "Value value of the binding.", + "x-kubernetes-preserve-unknown-fields": true + } + } + } + }, "check": { "description": "Check is an assertion tree to validate the operation outcome.", "x-kubernetes-preserve-unknown-fields": true @@ -2303,6 +2443,34 @@ "null" ], "properties": { + "bindings": { + "description": "Bindings defines additional binding key/values.", + "type": [ + "array", + "null" + ], + "items": { + "description": "Binding represents a key/value set as a binding in an executing test.", + "type": [ + "object", + "null" + ], + "required": [ + "name", + "value" + ], + "properties": { + "name": { + "description": "Name the name of the binding.", + "type": "string" + }, + "value": { + "description": "Value value of the binding.", + "x-kubernetes-preserve-unknown-fields": true + } + } + } + }, "check": { "description": "Check is an assertion tree to validate the operation outcome.", "x-kubernetes-preserve-unknown-fields": true diff --git a/pkg/apis/v1alpha1/command.go b/pkg/apis/v1alpha1/command.go index 376e22e6a..6e06bd3f3 100644 --- a/pkg/apis/v1alpha1/command.go +++ b/pkg/apis/v1alpha1/command.go @@ -10,6 +10,10 @@ type Command struct { // +optional Timeout *metav1.Duration `json:"timeout,omitempty"` + // Bindings defines additional binding key/values. + // +optional + Bindings []Binding `json:"bindings,omitempty"` + // Env defines additional environment variables. // +optional Env []Binding `json:"env,omitempty"` diff --git a/pkg/apis/v1alpha1/script.go b/pkg/apis/v1alpha1/script.go index 5fa1e3628..5d7e18ffe 100644 --- a/pkg/apis/v1alpha1/script.go +++ b/pkg/apis/v1alpha1/script.go @@ -10,6 +10,10 @@ type Script struct { // +optional Timeout *metav1.Duration `json:"timeout,omitempty"` + // Bindings defines additional binding key/values. + // +optional + Bindings []Binding `json:"bindings,omitempty"` + // Env defines additional environment variables. // +optional Env []Binding `json:"env,omitempty"` diff --git a/pkg/apis/v1alpha1/zz_generated.deepcopy.go b/pkg/apis/v1alpha1/zz_generated.deepcopy.go index 04fb3e707..7793a161d 100644 --- a/pkg/apis/v1alpha1/zz_generated.deepcopy.go +++ b/pkg/apis/v1alpha1/zz_generated.deepcopy.go @@ -203,6 +203,13 @@ func (in *Command) DeepCopyInto(out *Command) { *out = new(v1.Duration) **out = **in } + if in.Bindings != nil { + in, out := &in.Bindings, &out.Bindings + *out = make([]Binding, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } if in.Env != nil { in, out := &in.Env, &out.Env *out = make([]Binding, len(*in)) @@ -841,6 +848,13 @@ func (in *Script) DeepCopyInto(out *Script) { *out = new(v1.Duration) **out = **in } + if in.Bindings != nil { + in, out := &in.Bindings, &out.Bindings + *out = make([]Binding, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } if in.Env != nil { in, out := &in.Env, &out.Env *out = make([]Binding, len(*in)) diff --git a/pkg/data/crds/chainsaw.kyverno.io_tests.yaml b/pkg/data/crds/chainsaw.kyverno.io_tests.yaml index aabc3f97b..74a25008d 100644 --- a/pkg/data/crds/chainsaw.kyverno.io_tests.yaml +++ b/pkg/data/crds/chainsaw.kyverno.io_tests.yaml @@ -123,6 +123,23 @@ spec: items: type: string type: array + bindings: + description: Bindings defines additional binding key/values. + items: + description: Binding represents a key/value set + as a binding in an executing test. + properties: + name: + description: Name the name of the binding. + type: string + value: + description: Value value of the binding. + x-kubernetes-preserve-unknown-fields: true + required: + - name + - value + type: object + type: array check: description: Check is an assertion tree to validate the operation outcome. @@ -389,6 +406,23 @@ spec: script: description: Script defines a script to run. properties: + bindings: + description: Bindings defines additional binding key/values. + items: + description: Binding represents a key/value set + as a binding in an executing test. + properties: + name: + description: Name the name of the binding. + type: string + value: + description: Value value of the binding. + x-kubernetes-preserve-unknown-fields: true + required: + - name + - value + type: object + type: array check: description: Check is an assertion tree to validate the operation outcome. @@ -463,6 +497,23 @@ spec: items: type: string type: array + bindings: + description: Bindings defines additional binding key/values. + items: + description: Binding represents a key/value set + as a binding in an executing test. + properties: + name: + description: Name the name of the binding. + type: string + value: + description: Value value of the binding. + x-kubernetes-preserve-unknown-fields: true + required: + - name + - value + type: object + type: array check: description: Check is an assertion tree to validate the operation outcome. @@ -729,6 +780,23 @@ spec: script: description: Script defines a script to run. properties: + bindings: + description: Bindings defines additional binding key/values. + items: + description: Binding represents a key/value set + as a binding in an executing test. + properties: + name: + description: Name the name of the binding. + type: string + value: + description: Value value of the binding. + x-kubernetes-preserve-unknown-fields: true + required: + - name + - value + type: object + type: array check: description: Check is an assertion tree to validate the operation outcome. @@ -948,6 +1016,23 @@ spec: items: type: string type: array + bindings: + description: Bindings defines additional binding key/values. + items: + description: Binding represents a key/value set + as a binding in an executing test. + properties: + name: + description: Name the name of the binding. + type: string + value: + description: Value value of the binding. + x-kubernetes-preserve-unknown-fields: true + required: + - name + - value + type: object + type: array check: description: Check is an assertion tree to validate the operation outcome. @@ -1275,6 +1360,23 @@ spec: script: description: Script defines a script to run. properties: + bindings: + description: Bindings defines additional binding key/values. + items: + description: Binding represents a key/value set + as a binding in an executing test. + properties: + name: + description: Name the name of the binding. + type: string + value: + description: Value value of the binding. + x-kubernetes-preserve-unknown-fields: true + required: + - name + - value + type: object + type: array check: description: Check is an assertion tree to validate the operation outcome. diff --git a/pkg/data/crds/chainsaw.kyverno.io_teststeps.yaml b/pkg/data/crds/chainsaw.kyverno.io_teststeps.yaml index 65ea21658..b013964ec 100644 --- a/pkg/data/crds/chainsaw.kyverno.io_teststeps.yaml +++ b/pkg/data/crds/chainsaw.kyverno.io_teststeps.yaml @@ -66,6 +66,23 @@ spec: items: type: string type: array + bindings: + description: Bindings defines additional binding key/values. + items: + description: Binding represents a key/value set as a binding + in an executing test. + properties: + name: + description: Name the name of the binding. + type: string + value: + description: Value value of the binding. + x-kubernetes-preserve-unknown-fields: true + required: + - name + - value + type: object + type: array check: description: Check is an assertion tree to validate the operation outcome. @@ -315,6 +332,23 @@ spec: script: description: Script defines a script to run. properties: + bindings: + description: Bindings defines additional binding key/values. + items: + description: Binding represents a key/value set as a binding + in an executing test. + properties: + name: + description: Name the name of the binding. + type: string + value: + description: Value value of the binding. + x-kubernetes-preserve-unknown-fields: true + required: + - name + - value + type: object + type: array check: description: Check is an assertion tree to validate the operation outcome. @@ -387,6 +421,23 @@ spec: items: type: string type: array + bindings: + description: Bindings defines additional binding key/values. + items: + description: Binding represents a key/value set as a binding + in an executing test. + properties: + name: + description: Name the name of the binding. + type: string + value: + description: Value value of the binding. + x-kubernetes-preserve-unknown-fields: true + required: + - name + - value + type: object + type: array check: description: Check is an assertion tree to validate the operation outcome. @@ -636,6 +687,23 @@ spec: script: description: Script defines a script to run. properties: + bindings: + description: Bindings defines additional binding key/values. + items: + description: Binding represents a key/value set as a binding + in an executing test. + properties: + name: + description: Name the name of the binding. + type: string + value: + description: Value value of the binding. + x-kubernetes-preserve-unknown-fields: true + required: + - name + - value + type: object + type: array check: description: Check is an assertion tree to validate the operation outcome. @@ -847,6 +915,23 @@ spec: items: type: string type: array + bindings: + description: Bindings defines additional binding key/values. + items: + description: Binding represents a key/value set as a binding + in an executing test. + properties: + name: + description: Name the name of the binding. + type: string + value: + description: Value value of the binding. + x-kubernetes-preserve-unknown-fields: true + required: + - name + - value + type: object + type: array check: description: Check is an assertion tree to validate the operation outcome. @@ -1161,6 +1246,23 @@ spec: script: description: Script defines a script to run. properties: + bindings: + description: Bindings defines additional binding key/values. + items: + description: Binding represents a key/value set as a binding + in an executing test. + properties: + name: + description: Name the name of the binding. + type: string + value: + description: Value value of the binding. + x-kubernetes-preserve-unknown-fields: true + required: + - name + - value + type: object + type: array check: description: Check is an assertion tree to validate the operation outcome. diff --git a/pkg/data/schemas/json/test-chainsaw-v1alpha1.json b/pkg/data/schemas/json/test-chainsaw-v1alpha1.json index 2770a328d..371cfa7b7 100644 --- a/pkg/data/schemas/json/test-chainsaw-v1alpha1.json +++ b/pkg/data/schemas/json/test-chainsaw-v1alpha1.json @@ -444,6 +444,34 @@ ] } }, + "bindings": { + "description": "Bindings defines additional binding key/values.", + "type": [ + "array", + "null" + ], + "items": { + "description": "Binding represents a key/value set as a binding in an executing test.", + "type": [ + "object", + "null" + ], + "required": [ + "name", + "value" + ], + "properties": { + "name": { + "description": "Name the name of the binding.", + "type": "string" + }, + "value": { + "description": "Value value of the binding.", + "x-kubernetes-preserve-unknown-fields": true + } + } + } + }, "check": { "description": "Check is an assertion tree to validate the operation outcome.", "x-kubernetes-preserve-unknown-fields": true @@ -883,6 +911,34 @@ "null" ], "properties": { + "bindings": { + "description": "Bindings defines additional binding key/values.", + "type": [ + "array", + "null" + ], + "items": { + "description": "Binding represents a key/value set as a binding in an executing test.", + "type": [ + "object", + "null" + ], + "required": [ + "name", + "value" + ], + "properties": { + "name": { + "description": "Name the name of the binding.", + "type": "string" + }, + "value": { + "description": "Value value of the binding.", + "x-kubernetes-preserve-unknown-fields": true + } + } + } + }, "check": { "description": "Check is an assertion tree to validate the operation outcome.", "x-kubernetes-preserve-unknown-fields": true @@ -1014,6 +1070,34 @@ ] } }, + "bindings": { + "description": "Bindings defines additional binding key/values.", + "type": [ + "array", + "null" + ], + "items": { + "description": "Binding represents a key/value set as a binding in an executing test.", + "type": [ + "object", + "null" + ], + "required": [ + "name", + "value" + ], + "properties": { + "name": { + "description": "Name the name of the binding.", + "type": "string" + }, + "value": { + "description": "Value value of the binding.", + "x-kubernetes-preserve-unknown-fields": true + } + } + } + }, "check": { "description": "Check is an assertion tree to validate the operation outcome.", "x-kubernetes-preserve-unknown-fields": true @@ -1453,6 +1537,34 @@ "null" ], "properties": { + "bindings": { + "description": "Bindings defines additional binding key/values.", + "type": [ + "array", + "null" + ], + "items": { + "description": "Binding represents a key/value set as a binding in an executing test.", + "type": [ + "object", + "null" + ], + "required": [ + "name", + "value" + ], + "properties": { + "name": { + "description": "Name the name of the binding.", + "type": "string" + }, + "value": { + "description": "Value value of the binding.", + "x-kubernetes-preserve-unknown-fields": true + } + } + } + }, "check": { "description": "Check is an assertion tree to validate the operation outcome.", "x-kubernetes-preserve-unknown-fields": true @@ -1813,6 +1925,34 @@ ] } }, + "bindings": { + "description": "Bindings defines additional binding key/values.", + "type": [ + "array", + "null" + ], + "items": { + "description": "Binding represents a key/value set as a binding in an executing test.", + "type": [ + "object", + "null" + ], + "required": [ + "name", + "value" + ], + "properties": { + "name": { + "description": "Name the name of the binding.", + "type": "string" + }, + "value": { + "description": "Value value of the binding.", + "x-kubernetes-preserve-unknown-fields": true + } + } + } + }, "check": { "description": "Check is an assertion tree to validate the operation outcome.", "x-kubernetes-preserve-unknown-fields": true @@ -2303,6 +2443,34 @@ "null" ], "properties": { + "bindings": { + "description": "Bindings defines additional binding key/values.", + "type": [ + "array", + "null" + ], + "items": { + "description": "Binding represents a key/value set as a binding in an executing test.", + "type": [ + "object", + "null" + ], + "required": [ + "name", + "value" + ], + "properties": { + "name": { + "description": "Name the name of the binding.", + "type": "string" + }, + "value": { + "description": "Value value of the binding.", + "x-kubernetes-preserve-unknown-fields": true + } + } + } + }, "check": { "description": "Check is an assertion tree to validate the operation outcome.", "x-kubernetes-preserve-unknown-fields": true diff --git a/pkg/runner/processors/step.go b/pkg/runner/processors/step.go index 0ccfe485f..48ddee738 100644 --- a/pkg/runner/processors/step.go +++ b/pkg/runner/processors/step.go @@ -384,6 +384,7 @@ func (p *stepProcessor) commandOperation(ctx context.Context, bindings binding.B opcommand.New(op, p.test.BasePath, ns, config), operationReport, bindings, + op.Bindings..., ) } @@ -519,6 +520,7 @@ func (p *stepProcessor) scriptOperation(ctx context.Context, bindings binding.Bi opscript.New(op, p.test.BasePath, ns, config), operationReport, bindings, + op.Bindings..., ) } diff --git a/website/docs/apis/chainsaw.v1alpha1.md b/website/docs/apis/chainsaw.v1alpha1.md index f6fc562a9..08f0f1b95 100644 --- a/website/docs/apis/chainsaw.v1alpha1.md +++ b/website/docs/apis/chainsaw.v1alpha1.md @@ -157,6 +157,7 @@ during the testing process.
| Field | Type | Required | Inline | Description | |---|---|---|---|---| | `timeout` | [`meta/v1.Duration`](https://pkg.go.dev/k8s.io/apimachinery/pkg/apis/meta/v1#Duration) | | |Timeout for the operation. Overrides the global timeout set in the Configuration.
| +| `bindings` | [`[]Binding`](#chainsaw-kyverno-io-v1alpha1-Binding) | | |Bindings defines additional binding key/values.
| | `env` | [`[]Binding`](#chainsaw-kyverno-io-v1alpha1-Binding) | | |Env defines additional environment variables.
| | `cluster` | `string` | | |Cluster defines the target cluster (default cluster will be used if not specified and/or overridden).
| | `entrypoint` | `string` | :white_check_mark: | |Entrypoint is the command entry point to run.
| @@ -539,6 +540,7 @@ If a resource doesn't exist yet in the cluster it will fail. | Field | Type | Required | Inline | Description | |---|---|---|---|---| | `timeout` | [`meta/v1.Duration`](https://pkg.go.dev/k8s.io/apimachinery/pkg/apis/meta/v1#Duration) | | |Timeout for the operation. Overrides the global timeout set in the Configuration.
| +| `bindings` | [`[]Binding`](#chainsaw-kyverno-io-v1alpha1-Binding) | | |Bindings defines additional binding key/values.
| | `env` | [`[]Binding`](#chainsaw-kyverno-io-v1alpha1-Binding) | | |Env defines additional environment variables.
| | `cluster` | `string` | | |Cluster defines the target cluster (default cluster will be used if not specified and/or overridden).
| | `content` | `string` | | |Content defines a shell script (run with "sh -c ...").
|