move to other pages, add links

This commit is contained in:
Alexander Zielenski 2023-08-07 22:10:04 -07:00
parent 7cf6eedd63
commit e894028da7
3 changed files with 46 additions and 11 deletions

View File

@ -209,7 +209,7 @@ Aggregated APIs offer more advanced API features and customization of other feat
| Feature | Description | CRDs | Aggregated API |
| ------- | ----------- | ---- | -------------- |
| Validation | Help users prevent errors and allow you to evolve your API independently of your clients. These features are most useful when there are many clients who can't all update at the same time. | Yes. Most validation can be specified in the CRD using [OpenAPI v3.0 validation](/docs/tasks/extend-kubernetes/custom-resources/custom-resource-definitions/#validation). Any other validations supported by addition of a [Validating Webhook](/docs/reference/access-authn-authz/admission-controllers/#validatingadmissionwebhook-alpha-in-1-8-beta-in-1-9). | Yes, arbitrary validation checks |
| Validation | Help users prevent errors and allow you to evolve your API independently of your clients. These features are most useful when there are many clients who can't all update at the same time. | Yes. Most validation can be specified in the CRD using [OpenAPI v3.0 validation](/docs/tasks/extend-kubernetes/custom-resources/custom-resource-definitions/#validation). [CRDValidationRatcheting](/docs/tasks/extend-kubernetes/custom-resources/custom-resource-definitions/#validation-ratcheting) feature gate allows failing validations specified using OpenAPI also can be ignored if the failing part of the resource was unchanged. Any other validations supported by addition of a [Validating Webhook](/docs/reference/access-authn-authz/admission-controllers/#validatingadmissionwebhook-alpha-in-1-8-beta-in-1-9). | Yes, arbitrary validation checks |
| Defaulting | See above | Yes, either via [OpenAPI v3.0 validation](/docs/tasks/extend-kubernetes/custom-resources/custom-resource-definitions/#defaulting) `default` keyword (GA in 1.17), or via a [Mutating Webhook](/docs/reference/access-authn-authz/admission-controllers/#mutatingadmissionwebhook) (though this will not be run when reading from etcd for old objects). | Yes |
| Multi-versioning | Allows serving the same object through two API versions. Can help ease API changes like renaming fields. Less important if you control your client versions. | [Yes](/docs/tasks/extend-kubernetes/custom-resources/custom-resource-definition-versioning) | Yes |
| Custom Storage | If you need storage with a different performance mode (for example, a time-series database instead of key-value store) or isolation for security (for example, encryption of sensitive information, etc.) | No | Yes |

View File

@ -460,16 +460,7 @@ Each feature gate is designed for enabling/disabling a specific feature:
- `CronJobTimeZone`: Allow the use of the `timeZone` optional field in [CronJobs](/docs/concepts/workloads/controllers/cron-jobs/)
- `CRDValidationRatcheting`: Enable updates to custom resources to contain
violations of their OpenAPI schema if the offending portions of the resource
update did not change. Allows users to update to stricter versions of a CRD
schema without bumping the version of the object or breaking workflows.
While most are supported, does not support ratcheting updates across all
schema changes. The following OpenAPIV3 schema validations are not supported
by ratcheting under the current implementation and if violated will continue
to throw an error as normally:
- `allOf`/`oneOf`/`anyOf`/`not` nested validations
- `x-kubernetes-validations`
- `x-kubernetes-list-type`
- `required` fields
update did not change. See [Validation Ratcheting](/docs/tasks/extend-kubernetes/custom-resources/custom-resource-definitions/#validation-ratcheting) for more details.
- `CrossNamespaceVolumeDataSource`: Enable the usage of cross namespace volume data source
to allow you to specify a source namespace in the `dataSourceRef` field of a
PersistentVolumeClaim.

View File

@ -717,6 +717,50 @@ And create it:
kubectl apply -f my-crontab.yaml
crontab "my-new-cron-object" created
```
### Validation Ratcheting
Validation Ratcheting is alpha since 1.28. Enable the `CRDValidationRatcheting`
[feature gate](/docs/reference/command-line-tools-reference/feature-gates/) to
use the feature.
Validation Ratcheting refers to the ability of the apiserver to accept updates
to resources which fail validation, if the failing part of the resource was
unchanged by the update operation.
This feature allows authors of CRDs to confidently add new validations to the
OpenAPIV3 schema under certain conditions. Users can update to the new schema
safely without bumping the version of the object or breaking workflows.
While most validations placed in the OpenAPIV3 schema of a CRD are support
ratcheting, there are a few exceptions. The following OpenAPIV3 schema
validations are not supported by ratcheting under the current implementation
and if violated will continue to throw an error as normally:
- Quantors
- `allOf`
- `oneOf`
- `anyOf`
- `not`
- any validations in a descendent of one of these fields
- `x-kubernetes-validations`
CRD Validation Rules are currently ignored by ratcheting. This may be subject
to change.
- `x-kubernetes-list-type`
Errors arising from changing the list type of a subschema will not be
ratcheted. For example adding `set` onto a list with duplicates will always
result in an error.
- x-kubernetes-map-keys
Errors arising from changing the map keys of a list schema will not be
ratcheted.
- `required`
Required fields may not be safely added
- `properties`
Properties may not be safely removed, but changes to validations in their
schemas and subschemas may be ratcheted
- `additionalProperties`
To remove a previously specified `additionalProperties` validation will not be
ratcheted.
## Validation rules