|
Ce document a été traduit à l'aide d'une technologie de traduction automatique. Bien que nous nous efforcions de fournir des traductions exactes, nous ne fournissons aucune garantie quant à l'exhaustivité, l'exactitude ou la fiabilité du contenu traduit. En cas de divergence, la version originale anglaise prévaut et fait foi. |
Mise à niveau de Cert-Manager
Rancher est compatible avec la version de l’API cert-manager.io/v1 et a été testé pour la dernière fois avec la version cert-manager v1.13.1.
Rancher utilise cert-manager pour générer et renouveler automatiquement des certificats TLS pour les déploiements HA de Rancher. À partir de l’automne 2019, trois changements importants concernant cert-manager vont se produire et vous devez agir si vous avez un déploiement HA de Rancher :
-
Cert-manager cesse la prise en charge et remplace le champ certificate.spec.acme.solvers. Ce changement n’a pas de date limite précise.
-
Cert-manager cesse la prise en charge de
v1alpha1l’API et remplace son groupe d’API
Pour faire face à ces changements, ce guide fera deux choses :
-
Documenter la procédure de mise à niveau de cert-manager
-
Expliquer les changements de l’API cert-manager et fournir un lien vers la documentation officielle de cert-manager pour migrer vos données
|
Important :
Si vous mettez à niveau cert-manager vers la dernière version à partir d’une version antérieure à 1.5, suivez les étapes dans Option C ci-dessous pour le faire. Notez que vous n’avez pas besoin de réinstaller Rancher pour effectuer cette mise à niveau. |
Mise à niveau de Cert-Manager
L’espace de noms utilisé dans ces instructions dépend de l’espace de noms dans lequel cert-manager est actuellement installé. S’il est dans kube-system, utilisez cela dans les instructions ci-dessous. Vous pouvez vérifier en exécutant kubectl get pods --all-namespaces et en vérifiant dans quel espace de noms les pods cert-manager-* sont répertoriés. Ne changez pas l’espace de noms dans lequel cert-manager fonctionne, sinon cela peut causer des problèmes.
Pour mettre à niveau cert-manager, suivez ces instructions :
Option A: Mettez à niveau cert-manager avec un accès Internet
Cliquer pour développer
-
Faites une sauvegarde des ressources existantes par précaution
kubectl get -o yaml --all-namespaces \ issuer,clusterissuer,certificates,certificaterequests > cert-manager-backup.yamlImportant :Si vous mettez à niveau à partir d’une version antérieure à 0.11.0, mettez à jour l’apiVersion sur toutes vos ressources sauvegardées de
certmanager.k8s.io/v1alpha1àcert-manager.io/v1alpha2. Si vous utilisez des annotations cert-manager sur d’autres ressources, vous devrez les mettre à jour pour refléter le nouveau groupe API. Pour plus de détails, consultez la documentation sur les changements d’annotations supplémentaires. -
Désinstallez le déploiement existant
helm uninstall cert-managerSupprimez la CustomResourceDefinition en utilisant le lien vers la version vX.Y.Z que vous avez installée
kubectl delete -f https://github.com/cert-manager/cert-manager/releases/download/vX.Y.Z/cert-manager.crds.yaml -
Installez les ressources CustomResourceDefinition séparément
kubectl apply --validate=false -f https://github.com/cert-manager/cert-manager/releases/download/vX.Y.Z/cert-manager.crds.yamlSi vous exécutez Kubernetes v1.15 ou une version inférieure, vous devrez ajouter le drapeau
--validate=falseà votre commandekubectl applyci-dessus. Sinon, vous recevrez une erreur de validation concernant le champx-kubernetes-preserve-unknown-fieldsdans les ressources CustomResourceDefinition de cert-manager. C’est une erreur bénigne qui se produit en raison de la façon dont kubectl effectue la validation des ressources. -
Créez l’espace de noms pour cert-manager si nécessaire
kubectl create namespace cert-manager -
Ajoutez le dépôt Helm de Jetstack
helm repo add jetstack https://charts.jetstack.io -
Mettez à jour le cache de votre dépôt de chartes Helm local
helm repo update -
Installez la nouvelle version de cert-manager
helm install \ cert-manager jetstack/cert-manager \ --namespace cert-manager -
Restaurez les ressources de sauvegarde
kubectl apply -f cert-manager-backup.yaml
Option B: Mettez à niveau cert-manager dans un environnement isolé physiquement
Cliquer pour développer
=== Conditions préalables
Avant de pouvoir effectuer la mise à niveau, vous devez préparer votre environnement isolé en ajoutant les images de conteneur nécessaires à votre registre privé et en téléchargeant ou en rendant les fichiers manifestes Kubernetes requis.
-
Suivez le guide pour Préparer votre registre privé avec les images nécessaires pour la mise à niveau.
-
Depuis un système connecté à Internet, ajoutez le dépôt cert-manager à Helm
helm repo add jetstack https://charts.jetstack.io helm repo update -
Récupérez le dernier chart cert-manager disponible depuis le dépôt de chart Helm.
helm fetch jetstack/cert-manager -
Rendez le modèle cert-manager avec les options que vous souhaitez utiliser pour installer le chart. N’oubliez pas de définir l’option
image.repositorypour tirer l’image de votre registre privé. Cela créera un répertoirecert-manageravec les fichiers de manifeste Kubernetes.La commande Helm 3 est la suivante :
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 -
Téléchargez le fichier CRD requis pour cert-manager (ancien et nouveau)
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
=== Installez cert-manager
-
Sauvegardez les ressources existantes par précaution
kubectl get -o yaml --all-namespaces \ issuer,clusterissuer,certificates,certificaterequests > cert-manager-backup.yamlImportant :Si vous mettez à niveau à partir d’une version antérieure à 0.11.0, mettez à jour l’apiVersion sur toutes vos ressources sauvegardées de
certmanager.k8s.io/v1alpha1àcert-manager.io/v1alpha2. Si vous utilisez des annotations cert-manager sur d’autres ressources, vous devrez les mettre à jour pour refléter le nouveau groupe API. Pour plus de détails, consultez la documentation sur les changements d’annotations supplémentaires. -
Supprimez l’installation existante de cert-manager
kubectl -n cert-manager \ delete deployment,sa,clusterrole,clusterrolebinding \ -l 'app=cert-manager' -l 'chart=cert-manager-v0.5.2'Supprimez la CustomResourceDefinition en utilisant le lien vers la version vX.Y que vous avez installée
kubectl delete -f cert-manager/cert-manager-crd-old.yaml -
Installez les ressources CustomResourceDefinition séparément
kubectl apply -f cert-manager/cert-manager-crd.yamlImportant :Si vous exécutez Kubernetes v1.15 ou une version inférieure, vous devrez ajouter le drapeau
--validate=falseà votre commandekubectl applyci-dessus. Sinon, vous recevrez une erreur de validation concernant le champx-kubernetes-preserve-unknown-fieldsdans les ressources CustomResourceDefinition de cert-manager. C’est une erreur bénigne qui se produit en raison de la façon dont kubectl effectue la validation des ressources. -
Créez l’espace de noms pour cert-manager
kubectl create namespace cert-manager -
Installez cert-manager
kubectl -n cert-manager apply -R -f ./cert-manager -
Restaurez les ressources de sauvegarde
kubectl apply -f cert-manager-backup.yaml
Option C : Mettez à niveau cert-manager depuis les versions 1.5 et inférieures
Cliquer pour développer
Auparavant, pour mettre à niveau cert-manager depuis une version antérieure, il était recommandé de désinstaller et de réinstaller Rancher. En utilisant la méthode ci-dessous, vous pouvez mettre à niveau cert-manager sans ces étapes supplémentaires afin de mieux préserver votre environnement de production :
-
Installez
cmctl, l’outil CLI cert-manager, en utilisant le guide d’installation. -
Assurez-vous que toutes les ressources personnalisées cert-manager qui ont pu être stockées dans etcd à une version API obsolète soient migrées vers v1 :
cmctl upgrade migrate-api-version
Consultez les documents de migration de version API pour plus d’informations. Veuillez également consulter les documents pour passer de 1.5 à 1.6 et les documents pour passer de 1.6 à 1.7 si nécessaire.
-
Mettez à niveau cert-manager vers v1.7.1 avec un
helm upgradenormal. Vous pouvez passer directement de la version 1.5 à 1.7 si vous le souhaitez. -
Suivez le tutoriel Helm pour mettre à jour la version de l’API d’un manifeste de version. Le nom de la version du graphique est
release_name=rancheret l’espace de noms de la version estrelease_namespace=cattle-system. -
Dans le fichier décodé, recherchez
cert-manager.io/v1beta1et remplacez-le parcert-manager.io/v1. -
Mettez à niveau Rancher normalement avec
helm upgrade.
Vérifiez le déploiement
Une fois que vous avez installé cert-manager, vous pouvez vérifier qu’il est déployé correctement en vérifiant l’espace de noms kube-system pour les pods en cours d’exécution :
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
Changement de l’API Cert-Manager et migration des données
Rancher prend désormais en charge les versions cert-manager 1.6.2 et 1.7.1. Nous recommandons v1.7.x car v1.6.x atteindra la fin du service le 30 mars 2022. Pour en savoir plus, consultez la documentation de cert-manager. Pour des instructions sur la mise à niveau de cert-manager de la version 1.5 à 1.6, consultez la documentation cert-manager en amont ici. Pour des instructions sur la mise à niveau de cert-manager de la version 1.6 à 1.7, consultez la documentation cert-manager en amont ici.
Cert-manager a cessé la prise en charge de l’utilisation du champ certificate.spec.acme.solvers et cessera complètement la prise en charge de celui-ci dans une prochaine version.
Selon la documentation de cert-manager, un nouveau format pour configurer les ressources de certificats ACME a été introduit dans v0.8. Plus précisément, le champ de configuration du solveur de défi a été déplacé. Les anciens et nouveaux formats sont pris en charge depuis v0.9, mais le support de l’ancien format sera supprimé dans une prochaine version de cert-manager. La documentation de cert-manager recommande fortement qu’après la mise à niveau, vous mettiez à jour vos ressources ACME Issuer et Certificate au nouveau format.
Des détails sur le changement et des instructions de migration peuvent être trouvés dans les instructions de mise à niveau de cert-manager v0.7 à v0.8.
La version v0.11 marque la suppression de l’API v1alpha1 qui était utilisée dans les versions précédentes de cert-manager, ainsi que le changement de notre groupe d’API pour cert-manager.io au lieu de certmanager.k8s.io.
Nous avons également supprimé le support pour l’ancien format de configuration qui a été déprécié dans la version v0.8. Cela signifie que vous devez passer à l’utilisation du nouveau format de configuration de style solvers pour vos émetteurs ACME avant de mettre à niveau vers la v0.11. Pour plus d’informations, consultez le guide de mise à niveau vers v0.8.
Les détails concernant le changement et les instructions de migration peuvent être trouvés dans les instructions de mise à niveau de cert-manager de v0.10 à v0.11.
Plus d’informations sur la mise à niveau de cert-manager.