mirror of
https://github.com/kyverno/kyverno.git
synced 2025-03-06 16:06:56 +00:00
Signed-off-by: MarcelMue <marcel.mueller1@rwth-aachen.de> Signed-off-by: Marcel Mueller <marcel.mueller1@rwth-aachen.de>
84 lines
1.8 KiB
Go
84 lines
1.8 KiB
Go
package mutate
|
|
|
|
// Namespace Description
|
|
var namespaceYaml = []byte(`
|
|
apiVersion: v1
|
|
kind: Namespace
|
|
metadata:
|
|
name: test-mutate
|
|
`)
|
|
|
|
// Cluster Policy to copy the copy me label from one configmap to the target
|
|
var configMapMutationYaml = []byte(`
|
|
apiVersion: kyverno.io/v1
|
|
kind: ClusterPolicy
|
|
metadata:
|
|
name: "mutate-policy"
|
|
spec:
|
|
rules:
|
|
- name: "gen-role"
|
|
match:
|
|
resources:
|
|
kinds:
|
|
- ConfigMap
|
|
context:
|
|
- name: labelValue
|
|
apiCall:
|
|
urlPath: "/api/v1/namespaces/{{ request.object.metadata.namespace }}/configmaps"
|
|
jmesPath: "items[*]"
|
|
mutate:
|
|
patchStrategicMerge:
|
|
metadata:
|
|
labels:
|
|
+(kyverno.key/copy-me): "{{ labelValue[?metadata.name == 'source'].metadata.labels.\"kyverno.key/copy-me\" | [0] }}"
|
|
`)
|
|
|
|
var configMapMutationWithContextLogicYaml = []byte(`
|
|
apiVersion: kyverno.io/v1
|
|
kind: ClusterPolicy
|
|
metadata:
|
|
name: "mutate-policy"
|
|
spec:
|
|
rules:
|
|
- name: "gen-role"
|
|
match:
|
|
resources:
|
|
kinds:
|
|
- ConfigMap
|
|
context:
|
|
- name: labelValue
|
|
apiCall:
|
|
urlPath: "/api/v1/namespaces/{{ request.object.metadata.namespace }}/configmaps"
|
|
jmesPath: "items[?metadata.name == 'source'].metadata.labels.\"kyverno.key/copy-me\" | [0]"
|
|
mutate:
|
|
patchStrategicMerge:
|
|
metadata:
|
|
labels:
|
|
+(kyverno.key/copy-me): "{{ labelValue }}"
|
|
`)
|
|
|
|
// Source ConfigMap from which data is taken to copy
|
|
var sourceConfigMapYaml = []byte(`
|
|
apiVersion: v1
|
|
kind: ConfigMap
|
|
metadata:
|
|
name: source
|
|
namespace: test-mutate
|
|
labels:
|
|
kyverno.key/copy-me: sample-value
|
|
data:
|
|
data.yaml: |
|
|
some: data
|
|
`)
|
|
|
|
// Target ConfigMap which is mutated
|
|
var targetConfigMapYaml = []byte(`
|
|
apiVersion: v1
|
|
kind: ConfigMap
|
|
metadata:
|
|
name: target
|
|
namespace: test-mutate
|
|
data:
|
|
data.yaml: |
|
|
some: data
|
|
`)
|