@@ -121,12 +121,16 @@ the `admissionregistration.k8s.io/v1alpha1` API.
121
121
This admission controller allows all pods into the cluster. It is ** deprecated** because
122
122
its behavior is the same as if there were no admission controller at all.
123
123
124
+ ** Type** : Validating.
125
+
124
126
### AlwaysDeny {#alwaysdeny}
125
127
126
128
{{< feature-state for_k8s_version="v1.13" state="deprecated" >}}
127
129
128
130
Rejects all requests. AlwaysDeny is ** deprecated** as it has no real meaning.
129
131
132
+ ** Type** : Validating.
133
+
130
134
### AlwaysPullImages {#alwayspullimages}
131
135
132
136
This admission controller modifies every new Pod to force the image pull policy to ` Always ` . This is useful in a
@@ -137,6 +141,8 @@ scheduled onto the right node), without any authorization check against the imag
137
141
is enabled, images are always pulled prior to starting containers, which means valid credentials are
138
142
required.
139
143
144
+ ** Type** : Mutating and Validating.
145
+
140
146
### CertificateApproval {#certificateapproval}
141
147
142
148
This admission controller observes requests to approve CertificateSigningRequest resources and performs additional
@@ -146,6 +152,8 @@ authorization checks to ensure the approving user has permission to **approve**
146
152
See [ Certificate Signing Requests] ( /docs/reference/access-authn-authz/certificate-signing-requests/ ) for more
147
153
information on the permissions required to perform different actions on CertificateSigningRequest resources.
148
154
155
+ ** Type** : Validating.
156
+
149
157
### CertificateSigning {#certificatesigning}
150
158
151
159
This admission controller observes updates to the ` status.certificate ` field of CertificateSigningRequest resources
@@ -155,12 +163,16 @@ requests with the `spec.signerName` requested on the CertificateSigningRequest r
155
163
See [ Certificate Signing Requests] ( /docs/reference/access-authn-authz/certificate-signing-requests/ ) for more
156
164
information on the permissions required to perform different actions on CertificateSigningRequest resources.
157
165
166
+ ** Type** : Validating.
167
+
158
168
### CertificateSubjectRestriction {#certificatesubjectrestriction}
159
169
160
170
This admission controller observes creation of CertificateSigningRequest resources that have a ` spec.signerName `
161
171
of ` kubernetes.io/kube-apiserver-client ` . It rejects any request that specifies a 'group' (or 'organization attribute')
162
172
of ` system:masters ` .
163
173
174
+ ** Type** : Validating.
175
+
164
176
### DefaultIngressClass {#defaultingressclass}
165
177
166
178
This admission controller observes creation of ` Ingress ` objects that do not request any specific
@@ -177,6 +189,8 @@ updates; it acts only on creation.
177
189
See the [ Ingress] ( /docs/concepts/services-networking/ingress/ ) documentation for more about ingress
178
190
classes and how to mark one as default.
179
191
192
+ ** Type** : Mutating.
193
+
180
194
### DefaultStorageClass {#defaultstorageclass}
181
195
182
196
This admission controller observes creation of ` PersistentVolumeClaim ` objects that do not request any specific storage class
@@ -192,6 +206,8 @@ This admission controller ignores any `PersistentVolumeClaim` updates; it acts o
192
206
See [ persistent volume] ( /docs/concepts/storage/persistent-volumes/ ) documentation about persistent volume claims and
193
207
storage classes and how to mark a storage class as default.
194
208
209
+ ** Type** : Mutating.
210
+
195
211
### DefaultTolerationSeconds {#defaulttolerationseconds}
196
212
197
213
This admission controller sets the default forgiveness toleration for pods to tolerate
@@ -201,6 +217,8 @@ have toleration for taints `node.kubernetes.io/not-ready:NoExecute` or
201
217
` node.kubernetes.io/unreachable:NoExecute ` .
202
218
The default value for ` default-not-ready-toleration-seconds ` and ` default-unreachable-toleration-seconds ` is 5 minutes.
203
219
220
+ ** Type** : Mutating.
221
+
204
222
### DenyServiceExternalIPs
205
223
206
224
This admission controller rejects all net-new usage of the ` Service ` field ` externalIPs ` . This
@@ -216,6 +234,8 @@ of it.
216
234
217
235
This admission controller is disabled by default.
218
236
237
+ ** Type** : Validating.
238
+
219
239
### EventRateLimit {#eventratelimit}
220
240
221
241
{{< feature-state for_k8s_version="v1.13" state="alpha" >}}
@@ -264,6 +284,8 @@ for more details.
264
284
265
285
This admission controller is disabled by default.
266
286
287
+ **Type**: Validating.
288
+
267
289
### ExtendedResourceToleration {#extendedresourcetoleration}
268
290
269
291
This plug-in facilitates creation of dedicated nodes with extended resources.
@@ -275,12 +297,16 @@ add these tolerations.
275
297
276
298
This admission controller is disabled by default.
277
299
300
+ **Type**: Mutating.
301
+
278
302
### ImagePolicyWebhook {#imagepolicywebhook}
279
303
280
304
The ImagePolicyWebhook admission controller allows a backend webhook to make admission decisions.
281
305
282
306
This admission controller is disabled by default.
283
307
308
+ **Type**: Validating.
309
+
284
310
#### Configuration file format {#imagereview-config-file-format}
285
311
286
312
ImagePolicyWebhook uses a configuration file to set options for the behavior of the backend.
@@ -444,6 +470,8 @@ This admission controller denies any pod that defines `AntiAffinity` topology ke
444
470
445
471
This admission controller is disabled by default.
446
472
473
+ **Type**: Validating.
474
+
447
475
# ## LimitRanger {#limitranger}
448
476
449
477
This admission controller will observe the incoming request and ensure that it does not violate
@@ -457,6 +485,8 @@ See the [LimitRange API reference](/docs/reference/kubernetes-api/policy-resourc
457
485
and the [example of LimitRange](/docs/tasks/administer-cluster/manage-resources/memory-default-namespace/)
458
486
for more details.
459
487
488
+ **Type**: Mutating and Validating.
489
+
460
490
# ## MutatingAdmissionWebhook {#mutatingadmissionwebhook}
461
491
462
492
This admission controller calls any mutating webhooks which match the request. Matching
@@ -472,6 +502,8 @@ If you disable the MutatingAdmissionWebhook, you must also disable the
472
502
` MutatingWebhookConfiguration` object in the `admissionregistration.k8s.io/v1`
473
503
group/version via the `--runtime-config` flag, both are on by default.
474
504
505
+ **Type**: Mutating.
506
+
475
507
# ### Use caution when authoring and installing mutating webhooks
476
508
477
509
* Users may be confused when the objects they try to create are different from
@@ -493,11 +525,15 @@ It creates a namespace if it cannot be found.
493
525
This admission controller is useful in deployments that do not want to restrict creation of
494
526
a namespace prior to its usage.
495
527
528
+ **Type**: Mutating.
529
+
496
530
# ## NamespaceExists {#namespaceexists}
497
531
498
532
This admission controller checks all requests on namespaced resources other than `Namespace` itself.
499
533
If the namespace referenced from a request doesn't exist, the request is rejected.
500
534
535
+ **Type**: Validating.
536
+
501
537
# ## NamespaceLifecycle {#namespacelifecycle}
502
538
503
539
This admission controller enforces that a `Namespace` that is undergoing termination cannot have
@@ -509,6 +545,8 @@ A `Namespace` deletion kicks off a sequence of operations that remove all object
509
545
etc.) in that namespace. In order to enforce integrity of that process, we strongly recommend
510
546
running this admission controller.
511
547
548
+ **Type**: Validating.
549
+
512
550
# ## NodeRestriction {#noderestriction}
513
551
514
552
This admission controller limits the `Node` and `Pod` objects a kubelet can modify. In order to be limited by this admission controller,
@@ -541,6 +579,8 @@ and may be disallowed or allowed by the `NodeRestriction` admission plugin in th
541
579
Future versions may add additional restrictions to ensure kubelets have the minimal set of
542
580
permissions required to operate correctly.
543
581
582
+ **Type**: Validating.
583
+
544
584
# ## OwnerReferencesPermissionEnforcement {#ownerreferencespermissionenforcement}
545
585
546
586
This admission controller protects the access to the `metadata.ownerReferences` of an object
@@ -549,6 +589,8 @@ This admission controller also protects the access to `metadata.ownerReferences[
549
589
of an object, so that only users with **update** permission to the `finalizers`
550
590
subresource of the referenced *owner* can change it.
551
591
592
+ **Type**: Validating.
593
+
552
594
# ## PersistentVolumeClaimResize {#persistentvolumeclaimresize}
553
595
554
596
{{< feature-state for_k8s_version="v1.24" state="stable" >}}
@@ -578,6 +620,8 @@ allowVolumeExpansion: true
578
620
579
621
For more information about persistent volume claims, see [PersistentVolumeClaims](/docs/concepts/storage/persistent-volumes/#persistentvolumeclaims).
580
622
623
+ **Type**: Validating.
624
+
581
625
# ## PersistentVolumeLabel {#persistentvolumelabel}
582
626
583
627
{{< feature-state for_k8s_version="v1.13" state="deprecated" >}}
@@ -593,6 +637,8 @@ the {{< glossary_tooltip text="cloud-controller-manager" term_id="cloud-controll
593
637
594
638
This admission controller is disabled by default.
595
639
640
+ **Type**: Mutating.
641
+
596
642
# ## PodNodeSelector {#podnodeselector}
597
643
598
644
{{< feature-state for_k8s_version="v1.5" state="alpha" >}}
@@ -602,6 +648,8 @@ by reading a namespace annotation and a global configuration.
602
648
603
649
This admission controller is disabled by default.
604
650
651
+ **Type**: Validating.
652
+
605
653
# ### Configuration file format
606
654
607
655
` PodNodeSelector` uses a configuration file to set options for the behavior of the backend.
@@ -673,6 +721,8 @@ documentation for more information.
673
721
674
722
PodSecurity replaced an older admission controller named PodSecurityPolicy.
675
723
724
+ **Type**: Validating.
725
+
676
726
# ## PodTolerationRestriction {#podtolerationrestriction}
677
727
678
728
{{< feature-state for_k8s_version="v1.7" state="alpha" >}}
@@ -705,12 +755,16 @@ metadata:
705
755
706
756
This admission controller is disabled by default.
707
757
758
+ **Type**: Mutating and Validating.
759
+
708
760
# ## Priority {#priority}
709
761
710
762
The priority admission controller uses the `priorityClassName` field and populates the integer
711
763
value of the priority.
712
764
If the priority class is not found, the Pod is rejected.
713
765
766
+ **Type**: Mutating and Validating.
767
+
714
768
# ## ResourceQuota {#resourcequota}
715
769
716
770
This admission controller will observe the incoming request and ensure that it does not violate
@@ -721,6 +775,8 @@ controller to enforce quota constraints.
721
775
See the [ResourceQuota API reference](/docs/reference/kubernetes-api/policy-resources/resource-quota-v1/)
722
776
and the [example of Resource Quota](/docs/concepts/policy/resource-quotas/) for more details.
723
777
778
+ **Type**: Validating.
779
+
724
780
# ## RuntimeClass {#runtimeclass}
725
781
726
782
If you define a RuntimeClass with [Pod overhead](/docs/concepts/scheduling-eviction/pod-overhead/)
@@ -734,6 +790,8 @@ defined in the corresponding RuntimeClass.
734
790
See also [Pod Overhead](/docs/concepts/scheduling-eviction/pod-overhead/)
735
791
for more information.
736
792
793
+ **Type**: Mutating and Validating.
794
+
737
795
# ## SecurityContextDeny {#securitycontextdeny}
738
796
739
797
{{< feature-state for_k8s_version="v1.27" state="deprecated" >}}
@@ -775,6 +833,8 @@ from the Kubernetes blog article about PodSecurityPolicy and its removal. The
775
833
article details the PodSecurityPolicy historical context and the birth of the
776
834
` securityContext` field for Pods.
777
835
836
+ **Type**: Validating.
837
+
778
838
# ## ServiceAccount {#serviceaccount}
779
839
780
840
This admission controller implements automation for
@@ -783,6 +843,8 @@ The Kubernetes project strongly recommends enabling this admission controller.
783
843
You should enable this admission controller if you intend to make any use of Kubernetes
784
844
` ServiceAccount` objects.
785
845
846
+ **Type**: Mutating and Validating.
847
+
786
848
# ## StorageObjectInUseProtection
787
849
788
850
The `StorageObjectInUseProtection` plugin adds the `kubernetes.io/pvc-protection` or `kubernetes.io/pv-protection`
@@ -793,19 +855,25 @@ Refer to the
793
855
[Storage Object in Use Protection](/docs/concepts/storage/persistent-volumes/#storage-object-in-use-protection)
794
856
for more detailed information.
795
857
858
+ **Type**: Mutating.
859
+
796
860
# ## TaintNodesByCondition {#taintnodesbycondition}
797
861
798
862
This admission controller {{< glossary_tooltip text="taints" term_id="taint" >}} newly created
799
863
Nodes as `NotReady` and `NoSchedule`. That tainting avoids a race condition that could cause Pods
800
864
to be scheduled on new Nodes before their taints were updated to accurately reflect their reported
801
865
conditions.
802
866
867
+ **Type**: Mutating.
868
+
803
869
# ## ValidatingAdmissionPolicy {#validatingadmissionpolicy}
804
870
805
871
[This admission controller](/docs/reference/access-authn-authz/validating-admission-policy/) implements the CEL validation for incoming matched requests.
806
872
It is enabled when both feature gate `validatingadmissionpolicy` and `admissionregistration.k8s.io/v1alpha1` group/version are enabled.
807
873
If any of the ValidatingAdmissionPolicy fails, the request fails.
808
874
875
+ **Type**: Validating.
876
+
809
877
# ## ValidatingAdmissionWebhook {#validatingadmissionwebhook}
810
878
811
879
This admission controller calls any validating webhooks which match the request. Matching
@@ -821,6 +889,8 @@ If you disable the ValidatingAdmissionWebhook, you must also disable the
821
889
` ValidatingWebhookConfiguration` object in the `admissionregistration.k8s.io/v1`
822
890
group/version via the `--runtime-config` flag.
823
891
892
+ **Type**: Validating.
893
+
824
894
# # Is there a recommended set of admission controllers to use?
825
895
826
896
Yes. The recommended admission controllers are enabled by default
0 commit comments