Este documento ha sido traducido utilizando tecnología de traducción automática. Si bien nos esforzamos por proporcionar traducciones precisas, no ofrecemos garantías sobre la integridad, precisión o confiabilidad del contenido traducido. En caso de discrepancia, la versión original en inglés prevalecerá y constituirá el texto autorizado.

Actualización de Cert-Manager

Rancher es compatible con la versión de API cert-manager.io/v1 y fue probado por última vez con la versión cert-manager v1.13.1.

Rancher utiliza cert-manager para generar y renovar automáticamente certificados TLS para ampliaciones HA de Rancher. A partir del otoño de 2019, se producirán tres cambios importantes en cert-manager que debes tener en cuenta si tienes una ampliación HA de Rancher:

Para abordar estos cambios, esta guía hará dos cosas:

  1. Documentar el procedimiento para actualizar cert-manager

  2. Explicar los cambios en la API de cert-manager y enlazar a la documentación oficial de cert-manager para migrar tus datos

Importante:

Si estás actualizando cert-manager a la última versión desde una versión anterior a 1.5, sigue los pasos en Opción C a continuación para hacerlo. Ten en cuenta que no necesitas reinstalar Rancher para realizar esta actualización.

Actualizar Cert-Manager

El espacio de nombres utilizado en estas instrucciones depende del espacio de nombres en el que cert-manager está actualmente instalado. Si está en kube-system, utiliza ese en las instrucciones a continuación. Puedes verificar ejecutando kubectl get pods --all-namespaces y comprobando en qué espacio de nombres están listados los pods cert-manager-*. No cambies el espacio de nombres en el que está ejecutándose cert-manager o esto puede causar problemas.

Para actualizar cert-manager, sigue estas instrucciones:

Opción A: Actualiza cert-manager con acceso a Internet

Haga clic para expandir
  1. Haga una copia de seguridad de los recursos existentes como precaución

     kubectl get -o yaml --all-namespaces \
     issuer,clusterissuer,certificates,certificaterequests > cert-manager-backup.yaml
    Importante:

    Si está actualizando desde una versión anterior a 0.11.0, actualice la apiVersion en todos sus recursos respaldados de certmanager.k8s.io/v1alpha1 a cert-manager.io/v1alpha2. Si utiliza anotaciones de cert-manager en alguno de sus otros recursos, necesitará actualizarlas para reflejar el nuevo grupo de API. Para más detalles, consulte la documentación sobre cambios adicionales en las anotaciones.

  2. Desinstale la ampliación existente

     helm uninstall cert-manager

    Elimine la CustomResourceDefinition utilizando el enlace a la versión vX.Y.Z que instaló

     kubectl delete -f https://github.com/cert-manager/cert-manager/releases/download/vX.Y.Z/cert-manager.crds.yaml
  3. Instale los recursos de CustomResourceDefinition por separado

     kubectl apply --validate=false -f https://github.com/cert-manager/cert-manager/releases/download/vX.Y.Z/cert-manager.crds.yaml

    Si está ejecutando Kubernetes v1.15 o inferior, necesitará añadir la bandera --validate=false a su comando kubectl apply anterior. De lo contrario, recibirá un error de validación relacionado con el campo x-kubernetes-preserve-unknown-fields en los recursos de CustomResourceDefinition de cert-manager. Este es un error benigno y ocurre debido a la forma en que kubectl realiza la validación de recursos.

  4. Cree el espacio de nombres para cert-manager si es necesario

     kubectl create namespace cert-manager
  5. Añada el repositorio de Helm de Jetstack

     helm repo add jetstack https://charts.jetstack.io
  6. Actualice la caché de su repositorio local de charts de Helm

    helm repo update
  7. Instale la nueva versión de cert-manager

     helm install \
       cert-manager jetstack/cert-manager \
       --namespace cert-manager
  8. Restaure los recursos de copia de seguridad

     kubectl apply -f cert-manager-backup.yaml

Opción B: Actualice cert-manager en un entorno aislado

Haga clic para expandir

=== Requisitos previos

Antes de poder realizar la actualización, debe preparar su entorno aislado añadiendo las imágenes de contenedor necesarias a su registro privado y descargando o generando los archivos de manifiesto de Kubernetes requeridos.

  1. Sigue la guía para Preparar tu Registro Privado con las imágenes necesarias para la actualización.

  2. Desde un sistema conectado a internet, añade el repositorio cert-manager a Helm.

     helm repo add jetstack https://charts.jetstack.io
     helm repo update
  3. Obtén el último chart de cert-manager disponible del repositorio de charts de Helm.

     helm fetch jetstack/cert-manager
  4. Renderiza la plantilla del gestor de certificados con las opciones que desees utilizar para instalar el chart. Recuerda establecer la opción image.repository para obtener la imagen de tu registro privado. Esto creará un directorio cert-manager con los archivos de manifiesto de Kubernetes.

    El comando de Helm 3 es el siguiente:

     helm template cert-manager ./cert-manager-v0.12.0.tgz --output-dir . \
     --namespace cert-manager \
     --set image.repository=<REGISTRY.YOURDOMAIN.COM:PORT>/quay.io/jetstack/cert-manager-controller
     --set webhook.image.repository=<REGISTRY.YOURDOMAIN.COM:PORT>/quay.io/jetstack/cert-manager-webhook
     --set cainjector.image.repository=<REGISTRY.YOURDOMAIN.COM:PORT>/quay.io/jetstack/cert-manager-cainjector
  5. Descarga el archivo CRD requerido para cert-manager (antiguo y nuevo).

     curl -L -o cert-manager-crd.yaml https://raw.githubusercontent.com/cert-manager/cert-manager/release-0.12/deploy/manifests/00-crds.yaml
     curl -L -o cert-manager/cert-manager-crd-old.yaml https://raw.githubusercontent.com/cert-manager/cert-manager/release-X.Y/deploy/manifests/00-crds.yaml

=== Instala cert-manager

  1. Haz una copia de seguridad de los recursos existentes como precaución.

     kubectl get -o yaml --all-namespaces \
     issuer,clusterissuer,certificates,certificaterequests > cert-manager-backup.yaml
    Importante:

    Si está actualizando desde una versión anterior a 0.11.0, actualice la apiVersion en todos sus recursos respaldados de certmanager.k8s.io/v1alpha1 a cert-manager.io/v1alpha2. Si utiliza anotaciones de cert-manager en alguno de sus otros recursos, necesitará actualizarlas para reflejar el nuevo grupo de API. Para más detalles, consulte la documentación sobre cambios adicionales en las anotaciones.

  2. Elimina la instalación existente de cert-manager.

     kubectl -n cert-manager \
     delete deployment,sa,clusterrole,clusterrolebinding \
     -l 'app=cert-manager' -l 'chart=cert-manager-v0.5.2'

    Elimina la CustomResourceDefinition utilizando el enlace a la versión vX.Y que instalaste.

     kubectl delete -f cert-manager/cert-manager-crd-old.yaml
  3. Instale los recursos de CustomResourceDefinition por separado

     kubectl apply -f cert-manager/cert-manager-crd.yaml
    Importante:

    Si está ejecutando Kubernetes v1.15 o inferior, necesitará añadir la bandera --validate=false a su comando kubectl apply anterior. De lo contrario, recibirá un error de validación relacionado con el campo x-kubernetes-preserve-unknown-fields en los recursos de CustomResourceDefinition de cert-manager. Este es un error benigno y ocurre debido a la forma en que kubectl realiza la validación de recursos.

  4. Crea el espacio de nombres para cert-manager.

     kubectl create namespace cert-manager
  5. Instala cert-manager

     kubectl -n cert-manager apply -R -f ./cert-manager
  6. Restaure los recursos de copia de seguridad

     kubectl apply -f cert-manager-backup.yaml

Opción C: Actualiza cert-manager de las versiones 1.5 y anteriores.

Haga clic para expandir

Anteriormente, para actualizar cert-manager desde una versión anterior, se recomendaba desinstalar y reinstalar Rancher. Usando el método a continuación, puedes actualizar cert-manager sin esos pasos adicionales para preservar mejor tu entorno de producción:

  1. Instala cmctl, la herramienta CLI de cert-manager, utilizando la guía de instalación.

  2. Asegúrate de que cualquier recurso personalizado de cert-manager que pueda haber sido almacenado en etcd en una versión de API obsoleta se migre a v1:

     cmctl upgrade migrate-api-version

    Consulta los documentos de migración de versión de API para más información. Por favor, consulta también los documentos para actualizar de 1.5 a 1.6 y los documentos para actualizar de 1.6 a 1.7 si es necesario.

  3. Actualiza cert-manager a v1.7.1 con un helm upgrade normal. Puedes ir directamente de la versión 1.5 a la 1.7 si lo deseas.

  4. Sigue el tutorial de Helm para actualizar la versión de la API de un manifiesto de lanzamiento. El nombre del lanzamiento del gráfico es release_name=rancher y el espacio de nombres del lanzamiento es release_namespace=cattle-system.

  5. En el archivo decodificado, busca cert-manager.io/v1beta1 y reemplázalo con cert-manager.io/v1.

  6. Actualiza Rancher normalmente con helm upgrade.

Verifica el Despliegue

Una vez que hayas instalado cert-manager, puedes verificar que está desplegado correctamente comprobando el espacio de nombres kube-system en busca de pods en ejecución:

kubectl get pods --namespace cert-manager

NAME                                       READY   STATUS    RESTARTS   AGE
cert-manager-5c6866597-zw7kh               1/1     Running   0          2m
cert-manager-cainjector-577f6d9fd7-tr77l   1/1     Running   0          2m
cert-manager-webhook-787858fcdb-nlzsq      1/1     Running   0          2m

Cambio en la API de Cert-Manager y migración de datos


Rancher ahora soporta las versiones de cert-manager 1.6.2 y 1.7.1. Recomendamos v1.7.x porque la v1.6.x alcanzará el final de su vida útil el 30 de marzo de 2022. Para leer más, consulta la documentación de cert-manager. Para instrucciones sobre cómo actualizar cert-manager de la versión 1.5 a la 1.6, consulta la documentación de cert-manager upstream aquí. Para instrucciones sobre cómo actualizar cert-manager de la versión 1.6 a la 1.7, consulta la documentación de cert-manager upstream aquí.


Cert-manager ha dejado de soportar el uso del campo certificate.spec.acme.solvers y eliminará el soporte para él por completo en un próximo lanzamiento.

Según la documentación de cert-manager, se introdujo un nuevo formato para la configuración de recursos de certificados ACME en v0.8. Específicamente, se movió el campo de configuración del solucionador de desafíos. Tanto el formato antiguo como el nuevo son compatibles a partir de v0.9, pero el soporte para el formato antiguo se eliminará en un próximo lanzamiento de cert-manager. La documentación de cert-manager recomienda encarecidamente que, después de actualizar, actualices tus recursos de Emisor y Certificado ACME al nuevo formato.

Los detalles sobre el cambio y las instrucciones de migración se pueden encontrar en las instrucciones de actualización de cert-manager de v0.7 a v0.8.

La versión v0.11 marca la eliminación de la API v1alpha1 que se utilizaba en versiones anteriores de cert-manager, así como el cambio de nuestro grupo de API a cert-manager.io en lugar de certmanager.k8s.io.

También hemos eliminado el soporte para el antiguo formato de configuración que quedó obsoleto en la versión v0.8. Esto significa que debéis hacer la transición al nuevo formato de configuración de estilo de solucionadores para vuestros emisores ACME antes de actualizar a v0.11. Para más información, consulta la guía de actualización a v0.8.

Los detalles sobre el cambio y las instrucciones de migración se pueden encontrar en las instrucciones de actualización de cert-manager de v0.10 a v0.11.