|
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:
-
Cert-manager está dejando obsoleto y reemplazando el campo certificate.spec.acme.solvers. Este cambio no tiene una fecha límite exacta.
-
Cert-manager está dejando obsoleto
v1alpha1API y reemplazando su grupo de API
Para abordar estos cambios, esta guía hará dos cosas:
-
Documentar el procedimiento para actualizar cert-manager
-
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
-
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.yamlImportante:Si está actualizando desde una versión anterior a 0.11.0, actualice la apiVersion en todos sus recursos respaldados de
certmanager.k8s.io/v1alpha1acert-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. -
Desinstale la ampliación existente
helm uninstall cert-managerElimine 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 -
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.yamlSi está ejecutando Kubernetes v1.15 o inferior, necesitará añadir la bandera
--validate=falsea su comandokubectl applyanterior. De lo contrario, recibirá un error de validación relacionado con el campox-kubernetes-preserve-unknown-fieldsen 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. -
Cree el espacio de nombres para cert-manager si es necesario
kubectl create namespace cert-manager -
Añada el repositorio de Helm de Jetstack
helm repo add jetstack https://charts.jetstack.io -
Actualice la caché de su repositorio local de charts de Helm
helm repo update -
Instale la nueva versión de cert-manager
helm install \ cert-manager jetstack/cert-manager \ --namespace cert-manager -
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.
-
Sigue la guía para Preparar tu Registro Privado con las imágenes necesarias para la actualización.
-
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 -
Obtén el último chart de cert-manager disponible del repositorio de charts de Helm.
helm fetch jetstack/cert-manager -
Renderiza la plantilla del gestor de certificados con las opciones que desees utilizar para instalar el chart. Recuerda establecer la opción
image.repositorypara obtener la imagen de tu registro privado. Esto creará un directoriocert-managercon 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 -
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
-
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.yamlImportante:Si está actualizando desde una versión anterior a 0.11.0, actualice la apiVersion en todos sus recursos respaldados de
certmanager.k8s.io/v1alpha1acert-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. -
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 -
Instale los recursos de CustomResourceDefinition por separado
kubectl apply -f cert-manager/cert-manager-crd.yamlImportante:Si está ejecutando Kubernetes v1.15 o inferior, necesitará añadir la bandera
--validate=falsea su comandokubectl applyanterior. De lo contrario, recibirá un error de validación relacionado con el campox-kubernetes-preserve-unknown-fieldsen 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. -
Crea el espacio de nombres para cert-manager.
kubectl create namespace cert-manager -
Instala cert-manager
kubectl -n cert-manager apply -R -f ./cert-manager -
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:
-
Instala
cmctl, la herramienta CLI de cert-manager, utilizando la guía de instalación. -
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.
-
Actualiza cert-manager a v1.7.1 con un
helm upgradenormal. Puedes ir directamente de la versión 1.5 a la 1.7 si lo deseas. -
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=ranchery el espacio de nombres del lanzamiento esrelease_namespace=cattle-system. -
En el archivo decodificado, busca
cert-manager.io/v1beta1y reemplázalo concert-manager.io/v1. -
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.
Más información sobre la información para actualizar la versión de cert-manager.