@@ -118,17 +118,23 @@ the `admissionregistration.k8s.io/v1alpha1` API.
118
118
119
119
{{< feature-state for_k8s_version="v1.13" state="deprecated" >}}
120
120
121
+ ** Type** : Validating.
122
+
121
123
This admission controller allows all pods into the cluster. It is ** deprecated** because
122
124
its behavior is the same as if there were no admission controller at all.
123
125
124
126
### AlwaysDeny {#alwaysdeny}
125
127
126
128
{{< feature-state for_k8s_version="v1.13" state="deprecated" >}}
127
129
130
+ ** Type** : Validating.
131
+
128
132
Rejects all requests. AlwaysDeny is ** deprecated** as it has no real meaning.
129
133
130
134
### AlwaysPullImages {#alwayspullimages}
131
135
136
+ ** Type** : Mutating and Validating.
137
+
132
138
This admission controller modifies every new Pod to force the image pull policy to ` Always ` . This is useful in a
133
139
multitenant cluster so that users can be assured that their private images can only be used by those
134
140
who have the credentials to pull them. Without this admission controller, once an image has been pulled to a
@@ -139,6 +145,8 @@ required.
139
145
140
146
### CertificateApproval {#certificateapproval}
141
147
148
+ ** Type** : Validating.
149
+
142
150
This admission controller observes requests to approve CertificateSigningRequest resources and performs additional
143
151
authorization checks to ensure the approving user has permission to ** approve** certificate requests with the
144
152
` spec.signerName ` requested on the CertificateSigningRequest resource.
@@ -148,6 +156,8 @@ information on the permissions required to perform different actions on Certific
148
156
149
157
### CertificateSigning {#certificatesigning}
150
158
159
+ ** Type** : Validating.
160
+
151
161
This admission controller observes updates to the ` status.certificate ` field of CertificateSigningRequest resources
152
162
and performs an additional authorization checks to ensure the signing user has permission to ** sign** certificate
153
163
requests with the ` spec.signerName ` requested on the CertificateSigningRequest resource.
@@ -157,12 +167,16 @@ information on the permissions required to perform different actions on Certific
157
167
158
168
### CertificateSubjectRestriction {#certificatesubjectrestriction}
159
169
170
+ ** Type** : Validating.
171
+
160
172
This admission controller observes creation of CertificateSigningRequest resources that have a ` spec.signerName `
161
173
of ` kubernetes.io/kube-apiserver-client ` . It rejects any request that specifies a 'group' (or 'organization attribute')
162
174
of ` system:masters ` .
163
175
164
176
### DefaultIngressClass {#defaultingressclass}
165
177
178
+ ** Type** : Mutating.
179
+
166
180
This admission controller observes creation of ` Ingress ` objects that do not request any specific
167
181
ingress class and automatically adds a default ingress class to them. This way, users that do not
168
182
request any special ingress class do not need to care about them at all and they will get the
@@ -179,6 +193,8 @@ classes and how to mark one as default.
179
193
180
194
### DefaultStorageClass {#defaultstorageclass}
181
195
196
+ ** Type** : Mutating.
197
+
182
198
This admission controller observes creation of ` PersistentVolumeClaim ` objects that do not request any specific storage class
183
199
and automatically adds a default storage class to them.
184
200
This way, users that do not request any special storage class do not need to care about them at all and they
@@ -194,6 +210,8 @@ storage classes and how to mark a storage class as default.
194
210
195
211
### DefaultTolerationSeconds {#defaulttolerationseconds}
196
212
213
+ ** Type** : Mutating.
214
+
197
215
This admission controller sets the default forgiveness toleration for pods to tolerate
198
216
the taints ` notready:NoExecute ` and ` unreachable:NoExecute ` based on the k8s-apiserver input parameters
199
217
` default-not-ready-toleration-seconds ` and ` default-unreachable-toleration-seconds ` if the pods don't already
@@ -203,6 +221,8 @@ The default value for `default-not-ready-toleration-seconds` and `default-unreac
203
221
204
222
### DenyServiceExternalIPs
205
223
224
+ ** Type** : Validating.
225
+
206
226
This admission controller rejects all net-new usage of the ` Service ` field ` externalIPs ` . This
207
227
feature is very powerful (allows network traffic interception) and not well
208
228
controlled by policy. When enabled, users of the cluster may not create new
@@ -220,6 +240,8 @@ This admission controller is disabled by default.
220
240
221
241
{{< feature-state for_k8s_version="v1.13" state="alpha" >}}
222
242
243
+ ** Type** : Validating.
244
+
223
245
This admission controller mitigates the problem where the API server gets flooded by
224
246
requests to store new Events. The cluster admin can specify event rate limits by:
225
247
@@ -266,6 +288,8 @@ This admission controller is disabled by default.
266
288
267
289
### ExtendedResourceToleration {#extendedresourcetoleration}
268
290
291
+ **Type**: Mutating.
292
+
269
293
This plug-in facilitates creation of dedicated nodes with extended resources.
270
294
If operators want to create dedicated nodes with extended resources (like GPUs, FPGAs etc.), they are expected to
271
295
[taint the node](/docs/concepts/scheduling-eviction/taint-and-toleration/#example-use-cases) with the extended resource
@@ -277,6 +301,8 @@ This admission controller is disabled by default.
277
301
278
302
### ImagePolicyWebhook {#imagepolicywebhook}
279
303
304
+ **Type**: Validating.
305
+
280
306
The ImagePolicyWebhook admission controller allows a backend webhook to make admission decisions.
281
307
282
308
This admission controller is disabled by default.
@@ -439,13 +465,17 @@ In any case, the annotations are provided by the user and are not validated by K
439
465
440
466
# ## LimitPodHardAntiAffinityTopology {#limitpodhardantiaffinitytopology}
441
467
468
+ **Type**: Validating.
469
+
442
470
This admission controller denies any pod that defines `AntiAffinity` topology key other than
443
471
` kubernetes.io/hostname` in `requiredDuringSchedulingRequiredDuringExecution`.
444
472
445
473
This admission controller is disabled by default.
446
474
447
475
# ## LimitRanger {#limitranger}
448
476
477
+ **Type**: Mutating and Validating.
478
+
449
479
This admission controller will observe the incoming request and ensure that it does not violate
450
480
any of the constraints enumerated in the `LimitRange` object in a `Namespace`. If you are using
451
481
` LimitRange` objects in your Kubernetes deployment, you MUST use this admission controller to
@@ -459,6 +489,8 @@ for more details.
459
489
460
490
# ## MutatingAdmissionWebhook {#mutatingadmissionwebhook}
461
491
492
+ **Type**: Mutating.
493
+
462
494
This admission controller calls any mutating webhooks which match the request. Matching
463
495
webhooks are called in serial; each one may modify the object if it desires.
464
496
@@ -487,6 +519,8 @@ group/version via the `--runtime-config` flag, both are on by default.
487
519
488
520
# ## NamespaceAutoProvision {#namespaceautoprovision}
489
521
522
+ **Type**: Mutating.
523
+
490
524
This admission controller examines all incoming requests on namespaced resources and checks
491
525
if the referenced namespace does exist.
492
526
It creates a namespace if it cannot be found.
@@ -495,11 +529,15 @@ a namespace prior to its usage.
495
529
496
530
# ## NamespaceExists {#namespaceexists}
497
531
532
+ **Type**: Validating.
533
+
498
534
This admission controller checks all requests on namespaced resources other than `Namespace` itself.
499
535
If the namespace referenced from a request doesn't exist, the request is rejected.
500
536
501
537
# ## NamespaceLifecycle {#namespacelifecycle}
502
538
539
+ **Type**: Validating.
540
+
503
541
This admission controller enforces that a `Namespace` that is undergoing termination cannot have
504
542
new objects created in it, and ensures that requests in a non-existent `Namespace` are rejected.
505
543
This admission controller also prevents deletion of three system reserved namespaces `default`,
@@ -511,6 +549,8 @@ running this admission controller.
511
549
512
550
# ## NodeRestriction {#noderestriction}
513
551
552
+ **Type**: Validating.
553
+
514
554
This admission controller limits the `Node` and `Pod` objects a kubelet can modify. In order to be limited by this admission controller,
515
555
kubelets must use credentials in the `system:nodes` group, with a username in the form `system:node:<nodeName>`.
516
556
Such kubelets will only be allowed to modify their own `Node` API object, and only modify `Pod` API objects that are bound to their node.
@@ -543,6 +583,8 @@ permissions required to operate correctly.
543
583
544
584
# ## OwnerReferencesPermissionEnforcement {#ownerreferencespermissionenforcement}
545
585
586
+ **Type**: Validating.
587
+
546
588
This admission controller protects the access to the `metadata.ownerReferences` of an object
547
589
so that only users with **delete** permission to the object can change it.
548
590
This admission controller also protects the access to `metadata.ownerReferences[x].blockOwnerDeletion`
@@ -553,6 +595,8 @@ subresource of the referenced *owner* can change it.
553
595
554
596
{{< feature-state for_k8s_version="v1.24" state="stable" >}}
555
597
598
+ **Type**: Validating.
599
+
556
600
This admission controller implements additional validations for checking incoming
557
601
` PersistentVolumeClaim` resize requests.
558
602
@@ -582,6 +626,8 @@ For more information about persistent volume claims, see [PersistentVolumeClaims
582
626
583
627
{{< feature-state for_k8s_version="v1.13" state="deprecated" >}}
584
628
629
+ **Type**: Mutating.
630
+
585
631
This admission controller automatically attaches region or zone labels to PersistentVolumes
586
632
as defined by the cloud provider (for example, Azure or GCP).
587
633
It helps ensure the Pods and the PersistentVolumes mounted are in the same
@@ -597,6 +643,8 @@ This admission controller is disabled by default.
597
643
598
644
{{< feature-state for_k8s_version="v1.5" state="alpha" >}}
599
645
646
+ **Type**: Validating.
647
+
600
648
This admission controller defaults and limits what node selectors may be used within a namespace
601
649
by reading a namespace annotation and a global configuration.
602
650
@@ -663,6 +711,8 @@ admission plugin, which allows preventing pods from running on specifically tain
663
711
664
712
{{< feature-state for_k8s_version="v1.25" state="stable" >}}
665
713
714
+ **Type**: Validating.
715
+
666
716
The PodSecurity admission controller checks new Pods before they are
667
717
admitted, determines if it should be admitted based on the requested security context and the restrictions on permitted
668
718
[Pod Security Standards](/docs/concepts/security/pod-security-standards/)
@@ -677,6 +727,8 @@ PodSecurity replaced an older admission controller named PodSecurityPolicy.
677
727
678
728
{{< feature-state for_k8s_version="v1.7" state="alpha" >}}
679
729
730
+ **Type**: Mutating and Validating.
731
+
680
732
The PodTolerationRestriction admission controller verifies any conflict between tolerations of a
681
733
pod and the tolerations of its namespace.
682
734
It rejects the pod request if there is a conflict.
@@ -707,12 +759,16 @@ This admission controller is disabled by default.
707
759
708
760
# ## Priority {#priority}
709
761
762
+ **Type**: Mutating and Validating.
763
+
710
764
The priority admission controller uses the `priorityClassName` field and populates the integer
711
765
value of the priority.
712
766
If the priority class is not found, the Pod is rejected.
713
767
714
768
# ## ResourceQuota {#resourcequota}
715
769
770
+ **Type**: Validating.
771
+
716
772
This admission controller will observe the incoming request and ensure that it does not violate
717
773
any of the constraints enumerated in the `ResourceQuota` object in a `Namespace`. If you are
718
774
using `ResourceQuota` objects in your Kubernetes deployment, you MUST use this admission
@@ -723,6 +779,8 @@ and the [example of Resource Quota](/docs/concepts/policy/resource-quotas/) for
723
779
724
780
# ## RuntimeClass {#runtimeclass}
725
781
782
+ **Type**: Mutating and Validating.
783
+
726
784
If you define a RuntimeClass with [Pod overhead](/docs/concepts/scheduling-eviction/pod-overhead/)
727
785
configured, this admission controller checks incoming Pods.
728
786
When enabled, this admission controller rejects any Pod create requests
@@ -736,6 +794,8 @@ for more information.
736
794
737
795
# ## SecurityContextDeny {#securitycontextdeny}
738
796
797
+ **Type**: Validating.
798
+
739
799
{{< feature-state for_k8s_version="v1.27" state="deprecated" >}}
740
800
741
801
{{< caution >}}
@@ -777,6 +837,8 @@ article details the PodSecurityPolicy historical context and the birth of the
777
837
778
838
# ## ServiceAccount {#serviceaccount}
779
839
840
+ **Type**: Mutating and Validating.
841
+
780
842
This admission controller implements automation for
781
843
[serviceAccounts](/docs/tasks/configure-pod-container/configure-service-account/).
782
844
The Kubernetes project strongly recommends enabling this admission controller.
@@ -785,6 +847,8 @@ You should enable this admission controller if you intend to make any use of Kub
785
847
786
848
# ## StorageObjectInUseProtection
787
849
850
+ **Type**: Mutating.
851
+
788
852
The `StorageObjectInUseProtection` plugin adds the `kubernetes.io/pvc-protection` or `kubernetes.io/pv-protection`
789
853
finalizers to newly created Persistent Volume Claims (PVCs) or Persistent Volumes (PV).
790
854
In case a user deletes a PVC or PV the PVC or PV is not removed until the finalizer is removed
@@ -795,19 +859,25 @@ for more detailed information.
795
859
796
860
# ## TaintNodesByCondition {#taintnodesbycondition}
797
861
862
+ **Type**: Mutating.
863
+
798
864
This admission controller {{< glossary_tooltip text="taints" term_id="taint" >}} newly created
799
865
Nodes as `NotReady` and `NoSchedule`. That tainting avoids a race condition that could cause Pods
800
866
to be scheduled on new Nodes before their taints were updated to accurately reflect their reported
801
867
conditions.
802
868
803
869
# ## ValidatingAdmissionPolicy {#validatingadmissionpolicy}
804
870
871
+ **Type**: Validating.
872
+
805
873
[This admission controller](/docs/reference/access-authn-authz/validating-admission-policy/) implements the CEL validation for incoming matched requests.
806
874
It is enabled when both feature gate `validatingadmissionpolicy` and `admissionregistration.k8s.io/v1alpha1` group/version are enabled.
807
875
If any of the ValidatingAdmissionPolicy fails, the request fails.
808
876
809
877
# ## ValidatingAdmissionWebhook {#validatingadmissionwebhook}
810
878
879
+ **Type**: Validating.
880
+
811
881
This admission controller calls any validating webhooks which match the request. Matching
812
882
webhooks are called in parallel; if any of them rejects the request, the request
813
883
fails. This admission controller only runs in the validation phase; the webhooks it calls may not
0 commit comments