IBM Cloud Docs
Mise à jour d'Istio

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-system vers 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-ingressgateway ne change pas durant ou après la mise à jour.

Pour mettre à jour la version mineure du module complémentaire Istio :

  1. Examinez la version en cours de votre module complémentaire Istio.

    kubectl get iop managed-istio -n ibm-operators -o jsonpath='{.metadata.annotations.version}'
    
  2. Passez en revue les versions du module complémentaire Istio qui sont disponibles.

    ibmcloud ks addon-versions
    
  3. Examinez les modifications apportées à chaque version dans le journal des modifications du module complémentaire Istio.

  4. 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 :

    1. Exécutez la commande pour obtenir les détails de vos configurations webhook mutantes.

      kubectl get mutatingwebhookconfigurations
      

      Exemple de sortie

      NAME                     WEBHOOKS   AGE
      istio-sidecar-injector   5          32m
      
    2. Dans la sortie, recherchez le istio-sidecar-injector et 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-operators
      

      Exemple de sortie

      mutatingwebhookconfiguration.admissionregistration.k8s.io "istio-sidecar-injector" deleted
      
    3. 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 mutatingwebhookconfigurations
      

      Exemple de sortie

      NAME                     WEBHOOKS   AGE
      istio-sidecar-injector   4          60s
      
    4. Exécutez la commande pour obtenir les détails de votre configuration webhook de validation.

      kubectl get validatingwebhookconfigurations
      

      Exemple de sortie

      NAME                           WEBHOOKS   AGE
      istio-validator-istio-system   2          66s
      istiod-istio-system            1          31m
      
    5. Vérifiez la sortie. Si le webhook istiod-istio-system est répertorié, exécutez la commande suivante pour le supprimer.

      kubectl delete ValidatingWebhookConfiguration istiod-istio-system
      

      Exemple de sortie

      validatingwebhookconfiguration.admissionregistration.k8s.io "istiod-istio-system" deleted
      
    6. Vérifiez que le webhook istiod-istio-system n'est plus répertorié.

      kubectl get validatingwebhookconfigurations
      

      Exemple de sortie

      NAME                           WEBHOOKS   AGE
      istio-validator-istio-system   2          2m
      
  5. Mettez à jour le module complémentaire Istio.

    ibmcloud ks cluster addon update istio --version <version> -c <cluster_name_or_ID>
    
  6. Avant de poursuivre, assurez-vous que la mise à jour est terminée.

    Le processus de mise à jour peut prendre jusqu'à 20 minutes.

    1. Assurez-vous que pour le module complémentaire Istio, la zone Health State a pour valeur normal et la zone Health Status a pour valeur Addon Ready. Si l'état est updating, la mise à jour n'est pas terminée.

      ibmcloud ks cluster addon ls --cluster <cluster_name_or_ID>
      
    2. Assurez-vous que istio-systemSTATUS** a pour valeur ** pour le composant de plan de contrôle dans l'espace de noms Running.

      kubectl get pods -n istio-system
      
      NAME                                                     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
      
  7. Mettez à jour votre client istioctl et 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.

  1. Obtenez la version de votre client istioctl et celle des composants du plan de contrôle de module complémentaire Istio.

    istioctl version --short=false
    

    Exemple 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}
    ...
    
  2. 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 composant client version et du plan de contrôle ne correspondent pas :

    1. Téléchargez la même version du client istioctl que celle des composants de plan de contrôle.

      curl -L https://istio.io/downloadIstio | ISTIO_VERSION=1.23.5 sh -
      
    2. Accédez au répertoire du package Istio.

      cd istio-1.23.5
      
    3. Utilisateurs Linux et macOS : ajoutez le client istioctl à votre variable système PATH.

      export PATH=$PWD/bin:$PATH
      
  3. 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 version et data plane version ne 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 forme data plane version: version.ProxyInfo{ID:"<pod_name>.<namespace>", IstioVersion:"1.8.4"}.
    kubectl rollout restart deployment <deployment> -n <namespace>
    

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

É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.

  1. Dans le tableau de bord de votre cluster, cliquez sur le nom du cluster dans lequel vous souhaitez supprimer le module complémentaire Istio.

  2. Accédez à la section Modules complémentaires.

  3. Sur la carte Istio géré, cliquez sur l'icône du menu Action.

  4. Cliquez sur Désinstaller. Le module complémentaire Istio géré est désactivé dans ce cluster.

  5. 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.

  1. Désactivez l'additif istio.
    ibmcloud ks cluster addon disable istio --cluster <cluster_name_or_ID> -f
    
  2. 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>
    
  3. 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).

  1. Enregistrez le site managed-istio-custom ConfigMap 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
    
  2. 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-istio IOP :
      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
      
  3. 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.

  1. Assurez-vous que votre outil istioctl cli est à la version de correctif nécessaire.

    istioctl version
    
  2. 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.

  1. 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
    
  2. 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>
      

É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.