API obsoletas de Kubernetes 1.22

En esta página, se proporciona información sobre las API obsoletas en la versión de Kubernetes 1.22. Para obtener información más detallada, consulta la guía de migración de las API obsoletas de Kubernetes.

API eliminadas en la versión 1.22

La mayoría de las API obsoletas de la versión 1.22 de Kubernetes son antiguas API beta que pasaron de beta (v1beta1) a DG (v1). Las API DG proporcionan garantías de compatibilidad a largo plazo y deben usarse en lugar de las API beta obsoletas.

Se puede interactuar con todos los objetos existentes mediante las API DG.

Recursos de webhook

La versión beta de la API de MutatingWebhookConfiguration y ValidatingWebhookConfiguration ya no se entrega a partir de la versión 1.22.

  • Migra los manifiestos y los clientes de la API para usar la versión de la API admissionregistration.k8s.io/v1.
  • Consulta la siguiente tabla que describe los cambios notables en la versión de la API DG:

    Campo Cambio
    webhooks[*].failurePolicy El valor predeterminado cambió de Ignore a Fail.
    webhooks[*].matchPolicy El valor predeterminado cambió de Exact a Equivalent.
    webhooks[*].timeoutSeconds El valor predeterminado cambió de 30s a 10s.
    webhooks[*].sideEffects Se quita el valor predeterminado y el campo ahora es obligatorio. Solo se permiten None y NoneOnDryRun.
    webhooks[*].admissionReviewVersions Se quita el valor predeterminado y el campo ahora es obligatorio (las versiones compatibles de AdmissionReview son v1 y v1beta1).
    webhooks[*].name Debe ser único en la lista para objetos creados mediante admissionregistration.k8s.io/v1.

CustomResourceDefinition

La versión beta de la API de CustomResourceDefinition ya no se entrega a partir de la versión 1.22.

  • Migra los manifiestos y los clientes de la API para usar la versión de la API apiextensions.k8s.io/v1.
  • Consulta la siguiente tabla que describe los cambios notables en la versión de la API DG:

    Campo Cambio
    spec.scope Ya no está predeterminado en Namespaced. El valor debe especificarse de manera explícita.
    spec.version Eliminado. Utiliza spec.versions en lugar de esta función.
    spec.validation Eliminado. Utiliza spec.versions[*].schema en lugar de esta función.
    spec.subresources Eliminado. Utiliza spec.versions[*].subresources en lugar de esta función.
    spec.additionalPrinterColumns Eliminado. Utiliza spec.versions[*].additionalPrinterColumns en lugar de esta función.
    spec.conversion.webhookClientConfig Se movió a spec.conversion.webhook.clientConfig.
    spec.conversion.conversionReviewVersions Se movió a spec.conversion.webhook.conversionReviewVersions.
    spec.versions[*].schema.openAPIV3Schema Ahora es obligatorio cuando se crean objetos CustomResourceDefinition v1 y debe ser un esquema estructural.
    spec.preserveUnknownFields El valor true no está permitido cuando se crean objetos CustomResourceDefinition v1. El valor debe especificarse dentro de las definiciones de esquema como x-kubernetes-preserve-unknown-fields: true.
    additionalPrinterColumns En los elementos additionalPrinterColumns, se cambió el nombre del campo JSONPath a jsonPath.

APIService

La versión beta de la API de APIService ya no se entrega a partir de la versión 1.22. Migra los manifiestos y los clientes de la API para usar la versión de la API apiregistration.k8s.io/v1.

TokenReview

La versión beta de la API de TokenReview ya no se entrega a partir de la versión 1.22. Migra los manifiestos y los clientes de la API para usar la versión de la API authentication.k8s.io/v1.

Recursos de SubjectAccessReview

La versión beta de la API de LocalSubjectAccessReview, SelfSubjectAccessReview y SubjectAccessReview ya no se entrega a partir de la versión 1.22.

  • Migra los manifiestos y los clientes de la API para usar la versión de la API authorization.k8s.io/v1.
  • Consulta la siguiente tabla que describe los cambios notables en la versión de la API DG:

    Campo Cambio
    spec.group Se cambió el nombre a spec.groups.

CertificateSigningRequest

La versión beta de la API de CertificateSigningRequest ya no se entrega a partir de la versión 1.22.

  • Migra los manifiestos y los clientes de la API para usar la versión de la API certificates.k8s.io/v1.
  • Consulta la siguiente tabla que describe los cambios notables en la versión de la API DG:

    Campo Cambio
    spec.signerName Para los clientes de API que soliciten certificados, este campo es obligatorio (consulta Firmantes conocidos de Kubernetes), y las solicitudes para kubernetes.io/legacy-unknown no pueden crearse a través de la API de certificates.k8s.io/v1.
    spec.usages Para los clientes de API que soliciten certificados, este campo es obligatorio. Este campo no puede contener valores duplicados y solo debe contener usos conocidos.
    status.conditions Para los clientes de API que aprueban o firman certificados, este campo no puede contener tipos duplicados.
    status.conditions[*].status Para los clientes de API que aprueban o firman certificados, este campo ahora es obligatorio.
    status.certificate Para los clientes de API que aprueben o firmen certificados, este campo debe estar codificado con PEM y contener solo bloques CERTIFICATE.

Lease

La versión beta de la API de Lease ya no se entrega a partir de la versión 1.22. Migra los manifiestos y los clientes de la API para usar la versión de la API coordination.k8s.io/v1.

Ingress

Las versiones beta de la API (extensions/v1beta1 y networking.k8s.io/v1beta1) de Ingress ya no se entregan a partir de la versión 1.22.

  • Migra los manifiestos y los clientes de la API para usar la versión de la API networking.k8s.io/v1.
  • Consulta la siguiente tabla que describe los cambios notables en la versión de la API DG:

    Campo Cambio
    spec.backend Se cambió el nombre a spec.defaultBackend.
    backend serviceName Se cambió el nombre a service.name.
    servicePort Los nombres de los campos servicePort de backend numéricos se cambian a service.port.number. Los nombres de los campos servicePort de backend de string cambian a service.port.name.
    pathType Ahora es obligatorio para cada ruta de acceso especificada. El valor puede ser Prefix, Exact o ImplementationSpecific. Para que el comportamiento v1beta1 no esté definido, usa ImplementationSpecific.

IngressClass

La versión beta de la API de IngressClass ya no se entrega a partir de la versión 1.22. Migra los manifiestos y los clientes de la API para usar la versión de la API networking.k8s.io/v1.

Recursos de RBAC

La versión beta de la API de ClusterRole, ClusterRoleBinding, Role y RoleBinding ya no se entrega a partir de la versión 1.22. Migra los manifiestos y los clientes de la API para usar la versión de API rbac.authorization.k8s.io/v1.

PriorityClass

La versión beta de la API de PriorityClass ya no se entrega a partir de la versión 1.22. Migra los manifiestos y los clientes de la API para usar la versión de la API scheduling.k8s.io/v1.

Recursos de almacenamiento

La versión beta de la API de CSIDriver, CSINode, StorageClass y VolumeAttachment ya no se entrega a partir de la versión 1.22. Migra los manifiestos y los clientes de la API para usar la versión de la API storage.k8s.io/v1.

Identifica los clientes de API que escriben en API obsoletas

Los clústeres que tienen Google Cloud's operations suite habilitado pueden usar la siguiente consulta de registro de actividad del administrador para mostrar el uso de las API 1.22 por usuarios que no son administrados por Google:

resource.type="k8s_cluster"
labels."k8s.io/removed-release"="1.22"
protoPayload.authenticationInfo.principalEmail:("system:serviceaccount" OR "@")
protoPayload.authenticationInfo.principalEmail!~("system:serviceaccount:kube-system:")

Prepárate para actualizar a 1.22

No es necesario que borres ni vuelvas a crear ningún objeto de la API. Todos los objetos de la API persistentes existentes ya se pueden leer y actualizar mediante las nuevas versiones de API. Sin embargo, te recomendamos que migres a tus clientes y manifiestos antes de actualizar a Kubernetes 1.22. Obtén más información en la sección “Qué hacer” de la Guía de migración de las API obsoletas de Kubernetes.

Recursos

Puedes encontrar más información en la documentación de Kubernetes de OSS: