Skip to content

Commit fce6bfc

Browse files
committed
admission controllers: document types
Signed-off-by: Marek Skrobacki <[email protected]>
1 parent 7813cdb commit fce6bfc

File tree

1 file changed

+70
-0
lines changed

1 file changed

+70
-0
lines changed

content/en/docs/reference/access-authn-authz/admission-controllers.md

Lines changed: 70 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -121,12 +121,16 @@ the `admissionregistration.k8s.io/v1alpha1` API.
121121
This admission controller allows all pods into the cluster. It is **deprecated** because
122122
its behavior is the same as if there were no admission controller at all.
123123

124+
**Type**: Validating.
125+
124126
### AlwaysDeny {#alwaysdeny}
125127

126128
{{< feature-state for_k8s_version="v1.13" state="deprecated" >}}
127129

128130
Rejects all requests. AlwaysDeny is **deprecated** as it has no real meaning.
129131

132+
**Type**: Validating.
133+
130134
### AlwaysPullImages {#alwayspullimages}
131135

132136
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
137141
is enabled, images are always pulled prior to starting containers, which means valid credentials are
138142
required.
139143

144+
**Type**: Mutating and Validating.
145+
140146
### CertificateApproval {#certificateapproval}
141147

142148
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**
146152
See [Certificate Signing Requests](/docs/reference/access-authn-authz/certificate-signing-requests/) for more
147153
information on the permissions required to perform different actions on CertificateSigningRequest resources.
148154

155+
**Type**: Validating.
156+
149157
### CertificateSigning {#certificatesigning}
150158

151159
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
155163
See [Certificate Signing Requests](/docs/reference/access-authn-authz/certificate-signing-requests/) for more
156164
information on the permissions required to perform different actions on CertificateSigningRequest resources.
157165

166+
**Type**: Validating.
167+
158168
### CertificateSubjectRestriction {#certificatesubjectrestriction}
159169

160170
This admission controller observes creation of CertificateSigningRequest resources that have a `spec.signerName`
161171
of `kubernetes.io/kube-apiserver-client`. It rejects any request that specifies a 'group' (or 'organization attribute')
162172
of `system:masters`.
163173

174+
**Type**: Validating.
175+
164176
### DefaultIngressClass {#defaultingressclass}
165177

166178
This admission controller observes creation of `Ingress` objects that do not request any specific
@@ -177,6 +189,8 @@ updates; it acts only on creation.
177189
See the [Ingress](/docs/concepts/services-networking/ingress/) documentation for more about ingress
178190
classes and how to mark one as default.
179191

192+
**Type**: Mutating.
193+
180194
### DefaultStorageClass {#defaultstorageclass}
181195

182196
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
192206
See [persistent volume](/docs/concepts/storage/persistent-volumes/) documentation about persistent volume claims and
193207
storage classes and how to mark a storage class as default.
194208

209+
**Type**: Mutating.
210+
195211
### DefaultTolerationSeconds {#defaulttolerationseconds}
196212

197213
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
201217
`node.kubernetes.io/unreachable:NoExecute`.
202218
The default value for `default-not-ready-toleration-seconds` and `default-unreachable-toleration-seconds` is 5 minutes.
203219

220+
**Type**: Mutating.
221+
204222
### DenyServiceExternalIPs
205223

206224
This admission controller rejects all net-new usage of the `Service` field `externalIPs`. This
@@ -216,6 +234,8 @@ of it.
216234

217235
This admission controller is disabled by default.
218236

237+
**Type**: Validating.
238+
219239
### EventRateLimit {#eventratelimit}
220240

221241
{{< feature-state for_k8s_version="v1.13" state="alpha" >}}
@@ -264,6 +284,8 @@ for more details.
264284
265285
This admission controller is disabled by default.
266286
287+
**Type**: Validating.
288+
267289
### ExtendedResourceToleration {#extendedresourcetoleration}
268290
269291
This plug-in facilitates creation of dedicated nodes with extended resources.
@@ -275,12 +297,16 @@ add these tolerations.
275297
276298
This admission controller is disabled by default.
277299
300+
**Type**: Mutating.
301+
278302
### ImagePolicyWebhook {#imagepolicywebhook}
279303
280304
The ImagePolicyWebhook admission controller allows a backend webhook to make admission decisions.
281305
282306
This admission controller is disabled by default.
283307
308+
**Type**: Validating.
309+
284310
#### Configuration file format {#imagereview-config-file-format}
285311
286312
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
444470

445471
This admission controller is disabled by default.
446472

473+
**Type**: Validating.
474+
447475
### LimitRanger {#limitranger}
448476

449477
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
457485
and the [example of LimitRange](/docs/tasks/administer-cluster/manage-resources/memory-default-namespace/)
458486
for more details.
459487

488+
**Type**: Mutating and Validating.
489+
460490
### MutatingAdmissionWebhook {#mutatingadmissionwebhook}
461491

462492
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
472502
`MutatingWebhookConfiguration` object in the `admissionregistration.k8s.io/v1`
473503
group/version via the `--runtime-config` flag, both are on by default.
474504

505+
**Type**: Mutating.
506+
475507
#### Use caution when authoring and installing mutating webhooks
476508

477509
* 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.
493525
This admission controller is useful in deployments that do not want to restrict creation of
494526
a namespace prior to its usage.
495527

528+
**Type**: Mutating.
529+
496530
### NamespaceExists {#namespaceexists}
497531

498532
This admission controller checks all requests on namespaced resources other than `Namespace` itself.
499533
If the namespace referenced from a request doesn't exist, the request is rejected.
500534

535+
**Type**: Validating.
536+
501537
### NamespaceLifecycle {#namespacelifecycle}
502538

503539
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
509545
etc.) in that namespace. In order to enforce integrity of that process, we strongly recommend
510546
running this admission controller.
511547

548+
**Type**: Validating.
549+
512550
### NodeRestriction {#noderestriction}
513551

514552
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
541579
Future versions may add additional restrictions to ensure kubelets have the minimal set of
542580
permissions required to operate correctly.
543581

582+
**Type**: Validating.
583+
544584
### OwnerReferencesPermissionEnforcement {#ownerreferencespermissionenforcement}
545585

546586
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[
549589
of an object, so that only users with **update** permission to the `finalizers`
550590
subresource of the referenced *owner* can change it.
551591

592+
**Type**: Validating.
593+
552594
### PersistentVolumeClaimResize {#persistentvolumeclaimresize}
553595

554596
{{< feature-state for_k8s_version="v1.24" state="stable" >}}
@@ -578,6 +620,8 @@ allowVolumeExpansion: true
578620

579621
For more information about persistent volume claims, see [PersistentVolumeClaims](/docs/concepts/storage/persistent-volumes/#persistentvolumeclaims).
580622

623+
**Type**: Validating.
624+
581625
### PersistentVolumeLabel {#persistentvolumelabel}
582626

583627
{{< feature-state for_k8s_version="v1.13" state="deprecated" >}}
@@ -593,6 +637,8 @@ the {{< glossary_tooltip text="cloud-controller-manager" term_id="cloud-controll
593637

594638
This admission controller is disabled by default.
595639

640+
**Type**: Mutating.
641+
596642
### PodNodeSelector {#podnodeselector}
597643

598644
{{< feature-state for_k8s_version="v1.5" state="alpha" >}}
@@ -602,6 +648,8 @@ by reading a namespace annotation and a global configuration.
602648

603649
This admission controller is disabled by default.
604650

651+
**Type**: Validating.
652+
605653
#### Configuration file format
606654

607655
`PodNodeSelector` uses a configuration file to set options for the behavior of the backend.
@@ -673,6 +721,8 @@ documentation for more information.
673721

674722
PodSecurity replaced an older admission controller named PodSecurityPolicy.
675723

724+
**Type**: Validating.
725+
676726
### PodTolerationRestriction {#podtolerationrestriction}
677727

678728
{{< feature-state for_k8s_version="v1.7" state="alpha" >}}
@@ -705,12 +755,16 @@ metadata:
705755

706756
This admission controller is disabled by default.
707757

758+
**Type**: Mutating and Validating.
759+
708760
### Priority {#priority}
709761

710762
The priority admission controller uses the `priorityClassName` field and populates the integer
711763
value of the priority.
712764
If the priority class is not found, the Pod is rejected.
713765

766+
**Type**: Mutating and Validating.
767+
714768
### ResourceQuota {#resourcequota}
715769

716770
This admission controller will observe the incoming request and ensure that it does not violate
@@ -721,6 +775,8 @@ controller to enforce quota constraints.
721775
See the [ResourceQuota API reference](/docs/reference/kubernetes-api/policy-resources/resource-quota-v1/)
722776
and the [example of Resource Quota](/docs/concepts/policy/resource-quotas/) for more details.
723777

778+
**Type**: Validating.
779+
724780
### RuntimeClass {#runtimeclass}
725781

726782
If you define a RuntimeClass with [Pod overhead](/docs/concepts/scheduling-eviction/pod-overhead/)
@@ -734,6 +790,8 @@ defined in the corresponding RuntimeClass.
734790
See also [Pod Overhead](/docs/concepts/scheduling-eviction/pod-overhead/)
735791
for more information.
736792

793+
**Type**: Mutating and Validating.
794+
737795
### SecurityContextDeny {#securitycontextdeny}
738796

739797
{{< feature-state for_k8s_version="v1.27" state="deprecated" >}}
@@ -775,6 +833,8 @@ from the Kubernetes blog article about PodSecurityPolicy and its removal. The
775833
article details the PodSecurityPolicy historical context and the birth of the
776834
`securityContext` field for Pods.
777835

836+
**Type**: Validating.
837+
778838
### ServiceAccount {#serviceaccount}
779839

780840
This admission controller implements automation for
@@ -783,6 +843,8 @@ The Kubernetes project strongly recommends enabling this admission controller.
783843
You should enable this admission controller if you intend to make any use of Kubernetes
784844
`ServiceAccount` objects.
785845

846+
**Type**: Mutating and Validating.
847+
786848
### StorageObjectInUseProtection
787849

788850
The `StorageObjectInUseProtection` plugin adds the `kubernetes.io/pvc-protection` or `kubernetes.io/pv-protection`
@@ -793,19 +855,25 @@ Refer to the
793855
[Storage Object in Use Protection](/docs/concepts/storage/persistent-volumes/#storage-object-in-use-protection)
794856
for more detailed information.
795857

858+
**Type**: Mutating.
859+
796860
### TaintNodesByCondition {#taintnodesbycondition}
797861

798862
This admission controller {{< glossary_tooltip text="taints" term_id="taint" >}} newly created
799863
Nodes as `NotReady` and `NoSchedule`. That tainting avoids a race condition that could cause Pods
800864
to be scheduled on new Nodes before their taints were updated to accurately reflect their reported
801865
conditions.
802866

867+
**Type**: Mutating.
868+
803869
### ValidatingAdmissionPolicy {#validatingadmissionpolicy}
804870

805871
[This admission controller](/docs/reference/access-authn-authz/validating-admission-policy/) implements the CEL validation for incoming matched requests.
806872
It is enabled when both feature gate `validatingadmissionpolicy` and `admissionregistration.k8s.io/v1alpha1` group/version are enabled.
807873
If any of the ValidatingAdmissionPolicy fails, the request fails.
808874

875+
**Type**: Validating.
876+
809877
### ValidatingAdmissionWebhook {#validatingadmissionwebhook}
810878

811879
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
821889
`ValidatingWebhookConfiguration` object in the `admissionregistration.k8s.io/v1`
822890
group/version via the `--runtime-config` flag.
823891

892+
**Type**: Validating.
893+
824894
## Is there a recommended set of admission controllers to use?
825895

826896
Yes. The recommended admission controllers are enabled by default

0 commit comments

Comments
 (0)