Désactiver ou désinstaller Istio sur GKE

Ce guide explique comment désactiver ou désinstaller complètement le module complémentaire Istio sur GKE dans un cluster.

La désactivation du module complémentaire Istio sur GKE désactive la gestion des modules complémentaires d'Istio sur le cluster, mais conserve l'installation et les configurations d'Istio sur le cluster. Lorsque vous désactivez le module complémentaire Istio sur GKE, Google ne gère plus votre installation Istio sur le cluster. Vous êtes responsable de la gestion de la configuration et du cycle de vie d'Istio sur le cluster. Pour désactiver le module complémentaire Istio sur GKE, suivez les instructions de la section Désactiver le module complémentaire Istio sur GKE.

Au lieu de désactiver le module complémentaire, vous pouvez le désinstaller complètement. La désinstallation du module complémentaire Istio sur GKE supprime complètement Istio et toutes les configurations associées du cluster. Pour désinstaller le module complémentaire Istio sur GKE, suivez les instructions de la section Désinstaller Istio d'un cluster.

Désactiver le module complémentaire Istio sur GKE

Vous pouvez désactiver le module complémentaire Istio sur GKE si vous ne souhaitez plus que Google gère votre installation Istio. L'installation et les configurations d'Istio sont conservées. Pour ce faire, assurez-vous d'exécuter les versions 1.17.17-gke.3100+, 1.18.16-gke.1600+ ou 1.19.8-gke.1600+ et ultérieures de GKE. La désactivation du module complémentaire Istio sur GKE sur les versions antérieures de GKE désinstalle complètement Istio (l'installation et les configurations d'Istio), ce qui peut entraîner des temps d'arrêt pour vos services.

  1. Désactivez Istio sur GKE en exécutant la commande suivante:

    gcloud beta container clusters update my-cluster --project=$PROJECT_ID \
      --update-addons=Istio=DISABLED
    

Désinstaller Istio d'un cluster

Le moyen le plus simple de supprimer le module complémentaire Istio sur GKE consiste à supprimer le cluster. Toutefois, si le cluster dispose d'une application existante à conserver, suivez la procédure suivante pour désactiver Istio :

  1. Assurez-vous que le mode d'authentification mTLS par défaut est défini sur Permissive mTLS (mTLS permissif).
  2. Déplacez le trafic hors de la passerelle d'entrée Istio.
  3. Désactivez l'injection automatique de side-car, si elle est activée.
    kubectl label namespace your-namespace istio-injection=disabled
    
  4. Redémarrez les pods d'application (par exemple, avec un redémarrage progressif) pour supprimer les side-cars Envoy.
  5. Supprimez le plan de contrôle Istio avec gcloud:
    gcloud beta container clusters update my-cluster --project=$PROJECT_ID \
      --update-addons=Istio=DISABLED
    
  6. Supprimez IstioOperator CustomResource:

    kubectl delete istiooperator -n istio-system istio-1-6-11-gke-0
    

    Selon la version de votre cluster, vous devrez peut-être remplacer istio-1-6-11-gke-0 par le nom de CustomResource installé dans votre cluster. Vous pouvez obtenir le nom en exécutant la commande suivante:

    kubectl get istiooperator -n istio-system\
    
  7. Attendez quelques minutes que l'opérateur Istio supprime les ressources qu'il a installées.

  8. Supprimez l'espace de noms istio-system s'il existe:

    kubectl delete ns istio-system

  9. Supprimez les ressources de cluster Istio restantes:

    for i in $(kubectl get clusterrole,clusterrolebinding,crd | grep istio | cut -f1 -d' '); do kubectl delete $i; done

  10. À ce stade, vous avez désinstallé le module complémentaire Istio sur GKE. Cependant, il existe des ressources associées délibérément libellées pour des migrations sécurisées que vous devez supprimer manuellement du cluster:

    kubectl delete mutatingwebhookconfiguration istio-sidecar-injector
    kubectl delete clusterrole istio-citadel-istio-system istio-galley-istio-system istio-mixer-istio-system istio-operator istio-pilot-istio-system istio-reader istio-security-post-install-istio-system istio-sidecar-injector-istio-system
    kubectl delete clusterrolebinding istio-citadel-istio-system istio-galley-admin-role-binding-istio-system istio-mixer-admin-role-binding-istio-system istio-multi istio-operator istio-pilot-istio-system istio-security-post-install-role-binding-istio-system istio-sidecar-injector-admin-role-binding-istio-system
    kubectl delete deployment istio-operator -n istio-operator
    kubectl delete service istio-operator -n istio-operator
    kubectl delete ns istio-operator