Add kyverno tests
This commit is contained in:
parent
f359292d05
commit
7fe5124427
@ -0,0 +1,138 @@
|
|||||||
|
apiVersion: cli.kyverno.io/v1alpha1
|
||||||
|
kind: Test
|
||||||
|
metadata:
|
||||||
|
name: test-topology-spread
|
||||||
|
policies:
|
||||||
|
- ../rossumTopologySpread.yaml
|
||||||
|
resources:
|
||||||
|
- resources.yaml
|
||||||
|
results:
|
||||||
|
# spread-undefined
|
||||||
|
- kind: Deployment
|
||||||
|
patchedResource: patched-spread-undefined.yaml
|
||||||
|
policy: rossum/enforce-topology-spread
|
||||||
|
resources:
|
||||||
|
- spread-undefined
|
||||||
|
result: pass
|
||||||
|
rule: create-topology-spread
|
||||||
|
- kind: Deployment
|
||||||
|
patchedResource: patched-spread-undefined.yaml
|
||||||
|
policy: rossum/enforce-topology-spread
|
||||||
|
resources:
|
||||||
|
- spread-undefined
|
||||||
|
result: skip
|
||||||
|
rule: enforce-zone-topology-spread-configuration
|
||||||
|
- kind: Deployment
|
||||||
|
patchedResource: patched-spread-undefined.yaml
|
||||||
|
policy: rossum/enforce-topology-spread
|
||||||
|
resources:
|
||||||
|
- spread-undefined
|
||||||
|
result: skip
|
||||||
|
rule: inject-zone-topology-spread
|
||||||
|
# spread-different-topology
|
||||||
|
- kind: Deployment
|
||||||
|
patchedResource: patched-spread-different-topology.yaml
|
||||||
|
policy: rossum/enforce-topology-spread
|
||||||
|
resources:
|
||||||
|
- spread-different-topology
|
||||||
|
result: skip
|
||||||
|
rule: create-topology-spread
|
||||||
|
- kind: Deployment
|
||||||
|
patchedResource: patched-spread-different-topology.yaml
|
||||||
|
policy: rossum/enforce-topology-spread
|
||||||
|
resources:
|
||||||
|
- spread-different-topology
|
||||||
|
result: skip
|
||||||
|
rule: enforce-zone-topology-spread-configuration
|
||||||
|
- kind: Deployment
|
||||||
|
patchedResource: patched-spread-different-topology.yaml
|
||||||
|
policy: rossum/enforce-topology-spread
|
||||||
|
resources:
|
||||||
|
- spread-different-topology
|
||||||
|
result: pass
|
||||||
|
rule: inject-zone-topology-spread
|
||||||
|
# spread-same-topology
|
||||||
|
- kind: Deployment
|
||||||
|
patchedResource: patched-spread-same-topology.yaml
|
||||||
|
policy: rossum/enforce-topology-spread
|
||||||
|
resources:
|
||||||
|
- spread-same-topology
|
||||||
|
result: skip
|
||||||
|
rule: create-topology-spread
|
||||||
|
- kind: Deployment
|
||||||
|
patchedResource: patched-spread-same-topology.yaml
|
||||||
|
policy: rossum/enforce-topology-spread
|
||||||
|
resources:
|
||||||
|
- spread-same-topology
|
||||||
|
result: skip
|
||||||
|
rule: enforce-zone-topology-spread-configuration
|
||||||
|
- kind: Deployment
|
||||||
|
patchedResource: patched-spread-same-topology.yaml
|
||||||
|
policy: rossum/enforce-topology-spread
|
||||||
|
resources:
|
||||||
|
- spread-same-topology
|
||||||
|
result: skip
|
||||||
|
rule: inject-zone-topology-spread
|
||||||
|
# spread-same-topology-different-settings
|
||||||
|
- kind: Deployment
|
||||||
|
patchedResource: patched-spread-same-topology-different-settings.yaml
|
||||||
|
policy: rossum/enforce-topology-spread
|
||||||
|
resources:
|
||||||
|
- spread-same-topology-different-settings
|
||||||
|
result: skip
|
||||||
|
rule: create-topology-spread
|
||||||
|
- kind: Deployment
|
||||||
|
patchedResource: patched-spread-same-topology-different-settings.yaml
|
||||||
|
policy: rossum/enforce-topology-spread
|
||||||
|
resources:
|
||||||
|
- spread-same-topology-different-settings
|
||||||
|
result: pass
|
||||||
|
rule: enforce-zone-topology-spread-configuration
|
||||||
|
- kind: Deployment
|
||||||
|
patchedResource: patched-spread-same-topology-different-settings.yaml
|
||||||
|
policy: rossum/enforce-topology-spread
|
||||||
|
resources:
|
||||||
|
- spread-same-topology-different-settings
|
||||||
|
result: skip
|
||||||
|
rule: inject-zone-topology-spread
|
||||||
|
# spread-multi-topologies
|
||||||
|
- kind: Deployment
|
||||||
|
patchedResource: patched-spread-multi-topologies.yaml
|
||||||
|
policy: rossum/enforce-topology-spread
|
||||||
|
resources:
|
||||||
|
- spread-multi-topologies
|
||||||
|
result: skip
|
||||||
|
rule: create-topology-spread
|
||||||
|
- kind: Deployment
|
||||||
|
patchedResource: patched-spread-multi-topologies.yaml
|
||||||
|
policy: rossum/enforce-topology-spread
|
||||||
|
resources:
|
||||||
|
- spread-multi-topologies
|
||||||
|
result: pass
|
||||||
|
rule: enforce-zone-topology-spread-configuration
|
||||||
|
- kind: Deployment
|
||||||
|
patchedResource: patched-spread-multi-topologies.yaml
|
||||||
|
policy: rossum/enforce-topology-spread
|
||||||
|
resources:
|
||||||
|
- spread-multi-topologies
|
||||||
|
result: skip
|
||||||
|
rule: inject-zone-topology-spread
|
||||||
|
# test-wrong-label
|
||||||
|
- kind: Deployment
|
||||||
|
policy: rossum/enforce-topology-spread
|
||||||
|
resources:
|
||||||
|
- test-wrong-label
|
||||||
|
result: skip
|
||||||
|
rule: create-topology-spread
|
||||||
|
- kind: Deployment
|
||||||
|
policy: rossum/enforce-topology-spread
|
||||||
|
resources:
|
||||||
|
- test-wrong-label
|
||||||
|
result: skip
|
||||||
|
rule: enforce-zone-topology-spread-configuration
|
||||||
|
- kind: Deployment
|
||||||
|
policy: rossum/enforce-topology-spread
|
||||||
|
resources:
|
||||||
|
- test-wrong-label
|
||||||
|
result: skip
|
||||||
|
rule: inject-zone-topology-spread
|
||||||
@ -0,0 +1,32 @@
|
|||||||
|
apiVersion: apps/v1
|
||||||
|
kind: Deployment
|
||||||
|
metadata:
|
||||||
|
name: spread-different-topology
|
||||||
|
namespace: rossum
|
||||||
|
labels:
|
||||||
|
app.kubernetes.io/name: spread-different-topology
|
||||||
|
spec:
|
||||||
|
selector:
|
||||||
|
matchLabels:
|
||||||
|
app.kubernetes.io/name: spread-different-topology
|
||||||
|
template:
|
||||||
|
metadata:
|
||||||
|
labels:
|
||||||
|
app.kubernetes.io/name: spread-different-topology
|
||||||
|
spec:
|
||||||
|
containers:
|
||||||
|
- name: busybox
|
||||||
|
image: busybox
|
||||||
|
topologySpreadConstraints:
|
||||||
|
- maxSkew: 1
|
||||||
|
topologyKey: topology.kubernetes.io/zone
|
||||||
|
whenUnsatisfiable: ScheduleAnyway
|
||||||
|
labelSelector:
|
||||||
|
matchLabels:
|
||||||
|
app.kubernetes.io/name: spread-different-topology
|
||||||
|
- maxSkew: 1
|
||||||
|
topologyKey: topology.kubernetes.io/hostname
|
||||||
|
whenUnsatisfiable: DoNotSchedule
|
||||||
|
labelSelector:
|
||||||
|
matchLabels:
|
||||||
|
app.kubernetes.io/name: spread-different-topology
|
||||||
@ -0,0 +1,32 @@
|
|||||||
|
apiVersion: apps/v1
|
||||||
|
kind: Deployment
|
||||||
|
metadata:
|
||||||
|
name: spread-multi-topologies
|
||||||
|
namespace: rossum
|
||||||
|
labels:
|
||||||
|
app.kubernetes.io/name: spread-multi-topologies
|
||||||
|
spec:
|
||||||
|
selector:
|
||||||
|
matchLabels:
|
||||||
|
app.kubernetes.io/name: spread-multi-topologies
|
||||||
|
template:
|
||||||
|
metadata:
|
||||||
|
labels:
|
||||||
|
app.kubernetes.io/name: spread-multi-topologies
|
||||||
|
spec:
|
||||||
|
containers:
|
||||||
|
- name: busybox
|
||||||
|
image: busybox
|
||||||
|
topologySpreadConstraints:
|
||||||
|
- maxSkew: 1
|
||||||
|
topologyKey: topology.kubernetes.io/hostname
|
||||||
|
whenUnsatisfiable: DoNotSchedule
|
||||||
|
labelSelector:
|
||||||
|
matchLabels:
|
||||||
|
app.kubernetes.io/name: spread-multi-topologies
|
||||||
|
- maxSkew: 1
|
||||||
|
topologyKey: topology.kubernetes.io/zone
|
||||||
|
whenUnsatisfiable: ScheduleAnyway
|
||||||
|
labelSelector:
|
||||||
|
matchLabels:
|
||||||
|
app.kubernetes.io/name: spread-multi-topologies
|
||||||
@ -0,0 +1,26 @@
|
|||||||
|
apiVersion: apps/v1
|
||||||
|
kind: Deployment
|
||||||
|
metadata:
|
||||||
|
name: spread-same-topology-different-settings
|
||||||
|
namespace: rossum
|
||||||
|
labels:
|
||||||
|
app.kubernetes.io/name: spread-same-topology-different-settings
|
||||||
|
spec:
|
||||||
|
selector:
|
||||||
|
matchLabels:
|
||||||
|
app.kubernetes.io/name: spread-same-topology-different-settings
|
||||||
|
template:
|
||||||
|
metadata:
|
||||||
|
labels:
|
||||||
|
app.kubernetes.io/name: spread-same-topology-different-settings
|
||||||
|
spec:
|
||||||
|
containers:
|
||||||
|
- name: busybox
|
||||||
|
image: busybox
|
||||||
|
topologySpreadConstraints:
|
||||||
|
- maxSkew: 1
|
||||||
|
topologyKey: topology.kubernetes.io/zone
|
||||||
|
whenUnsatisfiable: ScheduleAnyway
|
||||||
|
labelSelector:
|
||||||
|
matchLabels:
|
||||||
|
app.kubernetes.io/name: spread-same-topology-different-settings
|
||||||
@ -0,0 +1,26 @@
|
|||||||
|
apiVersion: apps/v1
|
||||||
|
kind: Deployment
|
||||||
|
metadata:
|
||||||
|
name: spread-same-topology
|
||||||
|
namespace: rossum
|
||||||
|
labels:
|
||||||
|
app.kubernetes.io/name: spread-same-topology
|
||||||
|
spec:
|
||||||
|
selector:
|
||||||
|
matchLabels:
|
||||||
|
app.kubernetes.io/name: spread-same-topology
|
||||||
|
template:
|
||||||
|
metadata:
|
||||||
|
labels:
|
||||||
|
app.kubernetes.io/name: spread-same-topology
|
||||||
|
spec:
|
||||||
|
containers:
|
||||||
|
- name: busybox
|
||||||
|
image: busybox
|
||||||
|
topologySpreadConstraints:
|
||||||
|
- maxSkew: 1
|
||||||
|
topologyKey: topology.kubernetes.io/zone
|
||||||
|
whenUnsatisfiable: ScheduleAnyway
|
||||||
|
labelSelector:
|
||||||
|
matchLabels:
|
||||||
|
app.kubernetes.io/name: spread-same-topology
|
||||||
@ -0,0 +1,26 @@
|
|||||||
|
apiVersion: apps/v1
|
||||||
|
kind: Deployment
|
||||||
|
metadata:
|
||||||
|
name: spread-undefined
|
||||||
|
namespace: rossum
|
||||||
|
labels:
|
||||||
|
app.kubernetes.io/name: spread-undefined
|
||||||
|
spec:
|
||||||
|
selector:
|
||||||
|
matchLabels:
|
||||||
|
app.kubernetes.io/name: spread-undefined
|
||||||
|
template:
|
||||||
|
metadata:
|
||||||
|
labels:
|
||||||
|
app.kubernetes.io/name: spread-undefined
|
||||||
|
spec:
|
||||||
|
containers:
|
||||||
|
- name: busybox
|
||||||
|
image: busybox
|
||||||
|
topologySpreadConstraints:
|
||||||
|
- maxSkew: 1
|
||||||
|
topologyKey: topology.kubernetes.io/zone
|
||||||
|
whenUnsatisfiable: ScheduleAnyway
|
||||||
|
labelSelector:
|
||||||
|
matchLabels:
|
||||||
|
app.kubernetes.io/name: spread-undefined
|
||||||
@ -0,0 +1,32 @@
|
|||||||
|
apiVersion: apps/v1
|
||||||
|
kind: Deployment
|
||||||
|
metadata:
|
||||||
|
name: spread-multi-topologies
|
||||||
|
namespace: rossum
|
||||||
|
labels:
|
||||||
|
app.kubernetes.io/name: spread-multi-topologies
|
||||||
|
spec:
|
||||||
|
selector:
|
||||||
|
matchLabels:
|
||||||
|
app.kubernetes.io/name: spread-multi-topologies
|
||||||
|
template:
|
||||||
|
metadata:
|
||||||
|
labels:
|
||||||
|
app.kubernetes.io/name: spread-multi-topologies
|
||||||
|
spec:
|
||||||
|
containers:
|
||||||
|
- name: busybox
|
||||||
|
image: busybox
|
||||||
|
topologySpreadConstraints:
|
||||||
|
- maxSkew: 1
|
||||||
|
topologyKey: topology.kubernetes.io/hostname
|
||||||
|
whenUnsatisfiable: DoNotSchedule
|
||||||
|
labelSelector:
|
||||||
|
matchLabels:
|
||||||
|
app.kubernetes.io/name: spread-multi-topologies
|
||||||
|
- maxSkew: 1
|
||||||
|
topologyKey: topology.kubernetes.io/zone
|
||||||
|
whenUnsatisfiable: DoNotSchedule
|
||||||
|
labelSelector:
|
||||||
|
matchLabels:
|
||||||
|
app.kubernetes.io/name: spread-multi-topologies
|
||||||
@ -0,0 +1,155 @@
|
|||||||
|
apiVersion: apps/v1
|
||||||
|
kind: Deployment
|
||||||
|
metadata:
|
||||||
|
name: spread-undefined
|
||||||
|
namespace: rossum
|
||||||
|
labels:
|
||||||
|
app.kubernetes.io/name: spread-undefined
|
||||||
|
spec:
|
||||||
|
selector:
|
||||||
|
matchLabels:
|
||||||
|
app.kubernetes.io/name: spread-undefined
|
||||||
|
template:
|
||||||
|
metadata:
|
||||||
|
labels:
|
||||||
|
app.kubernetes.io/name: spread-undefined
|
||||||
|
spec:
|
||||||
|
containers:
|
||||||
|
- name: busybox
|
||||||
|
image: busybox
|
||||||
|
---
|
||||||
|
apiVersion: apps/v1
|
||||||
|
kind: Deployment
|
||||||
|
metadata:
|
||||||
|
name: spread-same-topology
|
||||||
|
namespace: rossum
|
||||||
|
labels:
|
||||||
|
app.kubernetes.io/name: spread-same-topology
|
||||||
|
spec:
|
||||||
|
selector:
|
||||||
|
matchLabels:
|
||||||
|
app.kubernetes.io/name: spread-same-topology
|
||||||
|
template:
|
||||||
|
metadata:
|
||||||
|
labels:
|
||||||
|
app.kubernetes.io/name: spread-same-topology
|
||||||
|
spec:
|
||||||
|
containers:
|
||||||
|
- name: busybox
|
||||||
|
image: busybox
|
||||||
|
topologySpreadConstraints:
|
||||||
|
- maxSkew: 1
|
||||||
|
topologyKey: topology.kubernetes.io/zone
|
||||||
|
whenUnsatisfiable: ScheduleAnyway
|
||||||
|
labelSelector:
|
||||||
|
matchLabels:
|
||||||
|
app.kubernetes.io/name: spread-same-topology
|
||||||
|
---
|
||||||
|
apiVersion: apps/v1
|
||||||
|
kind: Deployment
|
||||||
|
metadata:
|
||||||
|
name: spread-same-topology-different-settings
|
||||||
|
namespace: rossum
|
||||||
|
labels:
|
||||||
|
app.kubernetes.io/name: spread-same-topology-different-settings
|
||||||
|
spec:
|
||||||
|
selector:
|
||||||
|
matchLabels:
|
||||||
|
app.kubernetes.io/name: spread-same-topology-different-settings
|
||||||
|
template:
|
||||||
|
metadata:
|
||||||
|
labels:
|
||||||
|
app.kubernetes.io/name: spread-same-topology-different-settings
|
||||||
|
spec:
|
||||||
|
containers:
|
||||||
|
- name: busybox
|
||||||
|
image: busybox
|
||||||
|
topologySpreadConstraints:
|
||||||
|
- maxSkew: 1
|
||||||
|
topologyKey: topology.kubernetes.io/zone
|
||||||
|
whenUnsatisfiable: DoNotSchedule
|
||||||
|
labelSelector:
|
||||||
|
matchLabels:
|
||||||
|
app.kubernetes.io/name: spread-same-topology-different-settings
|
||||||
|
---
|
||||||
|
apiVersion: apps/v1
|
||||||
|
kind: Deployment
|
||||||
|
metadata:
|
||||||
|
name: spread-different-topology
|
||||||
|
namespace: rossum
|
||||||
|
labels:
|
||||||
|
app.kubernetes.io/name: spread-different-topology
|
||||||
|
spec:
|
||||||
|
selector:
|
||||||
|
matchLabels:
|
||||||
|
app.kubernetes.io/name: spread-different-topology
|
||||||
|
template:
|
||||||
|
metadata:
|
||||||
|
labels:
|
||||||
|
app.kubernetes.io/name: spread-different-topology
|
||||||
|
spec:
|
||||||
|
containers:
|
||||||
|
- name: busybox
|
||||||
|
image: busybox
|
||||||
|
topologySpreadConstraints:
|
||||||
|
- maxSkew: 1
|
||||||
|
topologyKey: topology.kubernetes.io/hostname
|
||||||
|
whenUnsatisfiable: DoNotSchedule
|
||||||
|
labelSelector:
|
||||||
|
matchLabels:
|
||||||
|
app.kubernetes.io/name: spread-different-topology
|
||||||
|
---
|
||||||
|
apiVersion: apps/v1
|
||||||
|
kind: Deployment
|
||||||
|
metadata:
|
||||||
|
name: spread-multi-topologies
|
||||||
|
namespace: rossum
|
||||||
|
labels:
|
||||||
|
app.kubernetes.io/name: spread-multi-topologies
|
||||||
|
spec:
|
||||||
|
selector:
|
||||||
|
matchLabels:
|
||||||
|
app.kubernetes.io/name: spread-multi-topologies
|
||||||
|
template:
|
||||||
|
metadata:
|
||||||
|
labels:
|
||||||
|
app.kubernetes.io/name: spread-multi-topologies
|
||||||
|
spec:
|
||||||
|
containers:
|
||||||
|
- name: busybox
|
||||||
|
image: busybox
|
||||||
|
topologySpreadConstraints:
|
||||||
|
- maxSkew: 1
|
||||||
|
topologyKey: topology.kubernetes.io/hostname
|
||||||
|
whenUnsatisfiable: DoNotSchedule
|
||||||
|
labelSelector:
|
||||||
|
matchLabels:
|
||||||
|
app.kubernetes.io/name: spread-multi-topologies
|
||||||
|
- maxSkew: 1
|
||||||
|
topologyKey: topology.kubernetes.io/zone
|
||||||
|
whenUnsatisfiable: DoNotSchedule
|
||||||
|
labelSelector:
|
||||||
|
matchLabels:
|
||||||
|
app.kubernetes.io/name: spread-multi-topologies
|
||||||
|
---
|
||||||
|
apiVersion: apps/v1
|
||||||
|
kind: Deployment
|
||||||
|
metadata:
|
||||||
|
name: test-wrong-label
|
||||||
|
namespace: rossum
|
||||||
|
labels:
|
||||||
|
name: test-wrong-label
|
||||||
|
spec:
|
||||||
|
selector:
|
||||||
|
matchLabels:
|
||||||
|
name: test-wrong-label
|
||||||
|
template:
|
||||||
|
metadata:
|
||||||
|
labels:
|
||||||
|
name: test-wrong-label
|
||||||
|
spec:
|
||||||
|
containers:
|
||||||
|
- name: busybox
|
||||||
|
image: busybox
|
||||||
|
---
|
||||||
|
|
||||||
11
flake.nix
11
flake.nix
@ -20,6 +20,7 @@
|
|||||||
{
|
{
|
||||||
packages = with pkgs; [
|
packages = with pkgs; [
|
||||||
terraform
|
terraform
|
||||||
|
kyverno
|
||||||
];
|
];
|
||||||
|
|
||||||
scripts = {
|
scripts = {
|
||||||
@ -41,6 +42,16 @@
|
|||||||
${nix.lib.cd_root}
|
${nix.lib.cd_root}
|
||||||
nix fmt ./*.nix
|
nix fmt ./*.nix
|
||||||
terraform fmt --recursive
|
terraform fmt --recursive
|
||||||
|
${pkgs.yamlfmt}/bin/yamlfmt ./anydatacenter
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
|
tests = {
|
||||||
|
description = "Run terraform and kyverno tests";
|
||||||
|
exec = ''
|
||||||
|
${nix.lib.cd_root}
|
||||||
|
terraform validate
|
||||||
|
${pkgs.kyverno}/bin/kyverno test ./anydatacenter/30-policy-demo --detailed-results
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user