Mise à jour d'Istio
N'utilisez pas istioctl pour mettre à jour la version d'Istio qui est installée par le module complémentaire géré. Lorsqu'il est mis à jour, le module complémentaire Istio géré inclut également une mise à jour de la version d'Istio.
Mise à jour vers une version mineure du module complémentaire Istio
IBM Cloud conserve tous vos composants Istio à jour en déployant automatiquement les mises à jour de correctif vers la version la plus récente d'Istio qui est prise en charge par IBM Cloud Kubernetes Service. Les versions prises en charge sont testées par IBM Cloud et approuvées pour l'utilisation dans IBM Cloud Kubernetes Service.
Avant de commencer :
Gardez à l'esprit les points suivants lorsque vous mettez à jour les versions mineures :
-
Vous ne pouvez mettre à jour manuellement qu'une seule version du module complémentaire Istio à la fois. Pour mettre à jour le module complémentaire Istio de deux versions ou plus, vous pouvez répéter le processus de mise à jour manuelle ou désinstaller le module complémentaire et installer ensuite la version la plus récente.
-
Vous ne pouvez pas faire revenir votre module complémentaire Istio géré vers une version précédente. Pour revenir à une version mineure antérieure, vous devez désinstaller le module complémentaire et installer ensuite la version antérieure.
-
Lorsque vous mettez à jour les composants de contrôle Istio dans l'espace de noms
istio-systemvers la dernière version secondaire, il se peut que certaines modifications nécessitent une interruption. Passez en revue les modifications suivantes qui se produisent lors d'une mise à jour de version secondaire :- A mesure que des mises à jour sont déployées sur les pods de plan de contrôle, ceux-ci sont recréés. Le plan de contrôle Istio n'est pas entièrement disponible tant que la mise à jour n'est pas terminée.
- Le plan de données Istio continue de fonctionner pendant la mise à jour. Toutefois, une partie du trafic vers les applications du maillage de service peut être interrompue pendant une courte période.
- L'adresse IP externe de l'équilibreur de charge
istio-ingressgatewayne change pas durant ou après la mise à jour.
Pour mettre à jour la version mineure du module complémentaire Istio :
-
Examinez la version en cours de votre module complémentaire Istio.
kubectl get iop managed-istio -n ibm-operators -o jsonpath='{.metadata.annotations.version}' -
Passez en revue les versions du module complémentaire Istio qui sont disponibles.
ibmcloud ks addon-versions -
Examinez les modifications apportées à chaque version dans le journal des modifications du module complémentaire Istio.
-
Si vous effectuez une mise à niveau de la version 1.11 vers la version 1.12 et que vos composants Istio ont été mis à disposition avec la version 1.10 ou une version antérieure :
-
Exécutez la commande pour obtenir les détails de vos configurations webhook mutantes.
kubectl get mutatingwebhookconfigurationsExemple de sortie
NAME WEBHOOKS AGE istio-sidecar-injector 5 32m -
Dans la sortie, recherchez le
istio-sidecar-injectoret consultez la colonne WEBHOOKS. S'il existe 5 points webhooks ou plus, exécutez la commande suivante pour supprimer les webhooks supplémentaires.kubectl delete mutatingwebhookconfigurations istio-sidecar-injector && kubectl rollout restart deploy addon-istio-operator -n ibm-operatorsExemple de sortie
mutatingwebhookconfiguration.admissionregistration.k8s.io "istio-sidecar-injector" deleted -
Vérifiez que les webhooks supplémentaires ont été supprimés. Obtenez les détails de vos configurations de webhooks mutantes et vérifiez qu'il existe 4 webhooks
istio-sidecar-injector.kubectl get mutatingwebhookconfigurationsExemple de sortie
NAME WEBHOOKS AGE istio-sidecar-injector 4 60s -
Exécutez la commande pour obtenir les détails de votre configuration webhook de validation.
kubectl get validatingwebhookconfigurationsExemple de sortie
NAME WEBHOOKS AGE istio-validator-istio-system 2 66s istiod-istio-system 1 31m -
Vérifiez la sortie. Si le webhook
istiod-istio-systemest répertorié, exécutez la commande suivante pour le supprimer.kubectl delete ValidatingWebhookConfiguration istiod-istio-systemExemple de sortie
validatingwebhookconfiguration.admissionregistration.k8s.io "istiod-istio-system" deleted -
Vérifiez que le webhook
istiod-istio-systemn'est plus répertorié.kubectl get validatingwebhookconfigurationsExemple de sortie
NAME WEBHOOKS AGE istio-validator-istio-system 2 2m
-
-
Mettez à jour le module complémentaire Istio.
ibmcloud ks cluster addon update istio --version <version> -c <cluster_name_or_ID> -
Avant de poursuivre, assurez-vous que la mise à jour est terminée.
Le processus de mise à jour peut prendre jusqu'à 20 minutes.
-
Assurez-vous que pour le module complémentaire Istio, la zone Health State a pour valeur
normalet la zone Health Status a pour valeurAddon Ready. Si l'état estupdating, la mise à jour n'est pas terminée.ibmcloud ks cluster addon ls --cluster <cluster_name_or_ID> -
Assurez-vous que
istio-systemSTATUS** a pour valeur ** pour le composant de plan de contrôle dans l'espace de nomsRunning.kubectl get pods -n istio-systemNAME READY STATUS RESTARTS AGE istio-system istio-egressgateway-6d4667f999-gjh94 1/1 Running 0 61m istio-system istio-egressgateway-6d4667f999-txh56 1/1 Running 0 61m istio-system istio-ingressgateway-7bbf8d885-b9xgp 1/1 Running 0 61m istio-system istio-ingressgateway-7bbf8d885-xhkv6 1/1 Running 0 61m istio-system istiod-5b9b5bfbb7-jvcjz 1/1 Running 0 60m istio-system istiod-5b9b5bfbb7-khcht 1/1 Running 0 60m
-
-
Mettez à jour votre client
istioctlet vos composants sidecar.
Mise à jour du client istioctl et des composants sidecar
Chaque fois que le module complémentaire Istio géré est mis à jour, mettez à jour votre client istioctl et les composants sidecar Istio pour votre application.
Par exemple, la version de correctif de votre module complémentaire peut être mise à jour automatiquement par IBM Cloud Kubernetes Service ou vous pouvez mettre à jour la version secondaire de votre module complémentaire.
Dans les deux cas, mettez à jour votre client istioctl et les composants sidecar Istio de votre application pour qu'ils correspondent à la version Istio du module complémentaire.
-
Obtenez la version de votre client
istioctlet celle des composants du plan de contrôle de module complémentaire Istio.istioctl version --short=falseExemple de sortie
client version: version.BuildInfo{Version:"1.11.2"} pilot version: version.BuildInfo{Version:1.23.5} pilot version: version.BuildInfo{Version:1.23.5} data plane version: version.ProxyInfo{ID:"istio-egressgateway-77bf75c5c-vp97p.istio-system", IstioVersion:1.23.5} data plane version: version.ProxyInfo{ID:"istio-egressgateway-77bf75c5c-qkhgm.istio-system", IstioVersion:1.23.5} data plane version: version.ProxyInfo{ID:"istio-ingressgateway-6dcb67b64d-dffhq.istio-system", IstioVersion:1.23.5} data plane version: version.ProxyInfo{ID:"httpbin-74fb669cc6-svc8x.default", IstioVersion:1.23.5} data plane version: version.ProxyInfo{ID:"istio-ingressgateway-6dcb67b64d-cs9r9.istio-system", IstioVersion:1.23.5} ... -
Dans la sortie, comparez la version du client (
client version) (istioctl) à la version des composants de plan de contrôle Istio, telle que la version du pilote (pilot version). Si les versions du composantclient versionet du plan de contrôle ne correspondent pas :-
Téléchargez la même version du client
istioctlque celle des composants de plan de contrôle.curl -L https://istio.io/downloadIstio | ISTIO_VERSION=1.23.5 sh - -
Accédez au répertoire du package Istio.
cd istio-1.23.5 -
Utilisateurs Linux et macOS : ajoutez le client
istioctlà votre variable systèmePATH.export PATH=$PWD/bin:$PATH
-
-
Dans la sortie de l'étape 1, comparez la version du pilote (
pilot version) à la version du plan de données (data plane version) pour chaque pod de plan de données.- Si la version du pilote (
pilot version) et la version du plan de données (data plane version) correspondent, aucune autre mise à jour n'est requise. - Si
pilot versionetdata plane versionne correspondent pas, redémarrez vos déploiements pour les pods du plan de données qui exécutent l'ancienne version. Le nom de pod et l'espace de nom sont répertoriés dans chaque entrée sous la formedata plane version: version.ProxyInfo{ID:"<pod_name>.<namespace>", IstioVersion:"1.8.4"}.
kubectl rollout restart deployment <deployment> -n <namespace> - Si la version du pilote (
Mise à jour à partir d'une version non supportée du module complémentaire Istio
Mettez à jour vos composants Istio avec la dernière version de correctif prise en charge par IBM Cloud Kubernetes Service.
Migration du module complémentaire Istio vers le module communautaire Istio
Vous pouvez migrer vers la communauté Istio au lieu d'utiliser le module complémentaire Istio géré.
Avant de commencer
- Si vous utilisez une version antérieure à 1.21, mettez à jour le module complémentaire Istio avec la version 1.21 ou ultérieure. Cette mise à jour est importante car, avec cette version, la désactivation du module complémentaire ne supprime pas les ressources personnalisées comme c'est le cas avec les versions précédentes.
- Si vous n'avez plus besoin d'Istio, vous pouvez désinstaller le module complémentaire sans installer la communauté Istio au lieu de suivre ces étapes.
Étape 1 : Désactiver le module complémentaire Istio depuis la console
Désactiver le module complémentaire à partir de la console ou du CLI.
-
Dans le tableau de bord de votre cluster, cliquez sur le nom du cluster dans lequel vous souhaitez supprimer le module complémentaire Istio.
-
Accédez à la section Modules complémentaires.
-
Sur la carte Istio géré, cliquez sur l'icône du menu Action.
-
Cliquez sur Désinstaller. Le module complémentaire Istio géré est désactivé dans ce cluster.
-
Sur la carte Istio gérée, vérifiez que le module complémentaire que vous avez désinstallé n'est plus répertorié.
Étape 1 : Désactivation des modules complémentaires Istio à partir de la CLI
Désactivez le module complémentaire et vérifiez qu'il ne reste aucun module complémentaire Istio.
- Désactivez l'additif
istio.ibmcloud ks cluster addon disable istio --cluster <cluster_name_or_ID> -f - Vérifiez que tous les modules complémentaires Istio sont désactivés dans ce cluster. Aucun module Istio n'est renvoyé dans la sortie.
ibmcloud ks cluster addon ls --cluster <cluster_name_or_ID> - Attendez 10 minutes avant de passer à l'étape suivante. Cela nous donne le temps de désencadrer l'opérateur istio.
Étape 2 : Réduire la taille de l'opérateur Istio
Réduire le déploiement de l'opérateur Istio.
Exécutez la commande suivante :
kubectl scale deployment -n ibm-operators addon-istio-operator --replicas=0
Étape 3 : Économiser les ressources
Sauvegardez toutes les ressources que vous avez créées ou modifiées dans l'espace de noms istio-system et toutes les ressources Kubernetes qui ont été automatiquement générées par des définitions de ressources personnalisées (CRD).
-
Enregistrez le site
managed-istio-customConfigMap pour résoudre un problème ou pour réinstaller le module complémentaire ultérieurement.kubectl get cm -n ibm-operators managed-istio-custom -o yaml > Customizations.yaml -
Sauvegarder tous les CR IstioOperator (IOP).
- Dresser la liste des ressources de l'IOP :
kubectl get iop -A - Pour chaque ressource IOP répertoriée, supprimer le finalisateur. Exemple utilisant le site
managed-istioIOP :kubectl patch -n ibm-operators istiooperator/managed-istio --type json --patch='[ { "op": "remove", "path": "/metadata/finalizers" } ]' - Pour chaque ressource IOP répertoriée, enregistrez-la dans un fichier :
kubectl get iop -n <IOP_namespace> <IOP_name> -o yaml > <IOP_name>.yaml
- Dresser la liste des ressources de l'IOP :
-
Attendez 10 minutes avant de passer à l'étape suivante.
Étape 4 : Modification du programme d'installation des IOP
Supprimer toutes les ressources de l'opérateur Istio (IOP), par exemple pour une passerelle d'entrée personnalisée.
-
Assurez-vous que votre outil
istioctlcli est à la version de correctif nécessaire.istioctl version -
Pour chaque fichier IOP que vous avez enregistré à l'étape précédente, exécutez la commande
upgrade.istioctl upgrade -f <filename>.yaml
Étape 5 : Suppression de l'opérateur Istio et des IOP
Supprimez le déploiement de l'opérateur Istio, le compte de service, la liaison de rôle de cluster, le rôle de cluster et tous les IOP.
-
Exécutez les commandes suivantes pour supprimer le déploiement de l'opérateur istio :
kubectl delete deployment -n ibm-operators addon-istio-operator --ignore-not-found=true kubectl delete serviceaccount -n ibm-operators addon-istio-operator --ignore-not-found=true kubectl delete clusterrolebinding addon-istio-operator --ignore-not-found=true kubectl delete clusterrole addon-istio-operator --ignore-not-found=true -
Supprimer les IOP.
- Dresser la liste des ressources de l'IOP :
kubectl get iop -A - Pour chaque ressource IOP répertoriée, supprimez-la :
kubectl delete IstioOperator <resource_name> -n <namespace>
- Dresser la liste des ressources de l'IOP :
Étape 6 : Retrait de la ConfigMap
Comme le site ConfigMap a été sauvegardé plus tôt, il peut être supprimé.
Retirez le site managed-istio-custom ConfigMap.
kubectl delete cm -n ibm-operators managed-istio-custom
La suppression de l'add-on est terminée et vous pouvez continuer à utiliser et à mettre à jour la communauté Istio si nécessaire.