All Policies
Disallow Default Namespace
Kubernetes Namespaces are an optional feature that provide a way to segment and isolate cluster resources across multiple applications and users. As a best practice, workloads should be isolated with Namespaces. Namespaces should be required and the default (empty) Namespace should not be used. This policy validates that Pods specify a Namespace name other than `default`.
Policy Definition
/best-practices/disallow_default_namespace/disallow_default_namespace.yaml
1apiVersion: kyverno.io/v1
2kind: ClusterPolicy
3metadata:
4 name: disallow-default-namespace
5 annotations:
6 pod-policies.kyverno.io/autogen-controllers: none
7 policies.kyverno.io/title: Disallow Default Namespace
8 policies.kyverno.io/category: Multi-Tenancy
9 policies.kyverno.io/severity: medium
10 policies.kyverno.io/subject: Pod
11 policies.kyverno.io/description: >-
12 Kubernetes Namespaces are an optional feature that provide a way to segment and
13 isolate cluster resources across multiple applications and users. As a best
14 practice, workloads should be isolated with Namespaces. Namespaces should be required
15 and the default (empty) Namespace should not be used. This policy validates that Pods
16 specify a Namespace name other than `default`.
17spec:
18 validationFailureAction: audit
19 background: true
20 rules:
21 - name: validate-namespace
22 match:
23 resources:
24 kinds:
25 - Pod
26 validate:
27 message: "Using 'default' namespace is not allowed."
28 pattern:
29 metadata:
30 namespace: "!default"
31 - name: validate-podcontroller-namespace
32 match:
33 resources:
34 kinds:
35 - DaemonSet
36 - Deployment
37 - Job
38 - StatefulSet
39 validate:
40 message: "Using 'default' namespace is not allowed for pod controllers."
41 pattern:
42 metadata:
43 namespace: "!default"