Desinstalar Cloud Service Mesh

En esta página se explica cómo desinstalar Cloud Service Mesh.

Desinstalar Cloud Service Mesh

Usa los siguientes comandos para desinstalar todos los componentes de Cloud Service Mesh. Estos comandos también eliminan el espacio de nombres istio-system y todas las definiciones de recursos personalizados (CRDs), incluidas las que hayas aplicado.

  1. Para evitar que se interrumpa el tráfico de la aplicación, haz lo siguiente:

    • Cambia cualquier política de mTLS STRICT a PERMISSIVE.
    • Elimina cualquier AuthorizationPolicy que pueda bloquear el tráfico.
  2. Inhabilita la gestión automática en este clúster (tanto si la has aplicado directamente como si lo has hecho mediante la configuración predeterminada de la flota):

      gcloud container fleet mesh update --management manual
    
  3. Inhabilita la inyección automática de sidecar en tus espacios de nombres, si está habilitada. Ejecuta el siguiente comando para mostrar las etiquetas de espacio de nombres:

     kubectl get namespace YOUR_NAMESPACE --show-labels
    

    El resultado debería ser similar al siguiente:

     NAME   STATUS   AGE     LABELS
     demo   Active   4d17h   istio.io/rev=asm-181-5

    Si ves istio.io/rev= en la salida de la columna LABELS, quítalo:

     kubectl label namespace YOUR_NAMESPACE istio.io/rev-
    

    Si ves istio-injection en la salida de la columna LABELS, quítalo:

     kubectl label namespace YOUR_NAMESPACE istio-injection-
    

    Si no ves las etiquetas istio.io/rev o istio-injection, significa que la inyección automática no está habilitada en el espacio de nombres.

  4. Reinicia las cargas de trabajo a las que se les hayan insertado sidecars para quitar los proxies.

  5. Si usas Cloud Service Mesh gestionado, elimina los controlplanerevision recursos del clúster:

    kubectl delete controlplanerevision RELEASE_CHANNEL -n istio-system
    

    RELEASE_CHANNEL es el canal de lanzamiento que has aprovisionado, como asm-managed, asm-managed-rapid o asm-managed-stable.

  6. Elimina los webhooks de tu clúster, si los hay.

    Cloud Service Mesh en clúster

    Elimina validatingwebhooksconfiguration y mutatingwebhookconfiguration.

    kubectl delete validatingwebhookconfiguration,mutatingwebhookconfiguration -l operator.istio.io/component=Pilot
    

    Cloud Service Mesh gestionado

    A. Elimina el validatingwebhooksconfiguration.

    kubectl delete validatingwebhookconfiguration istiod-istio-system-mcp
    

    B. Elimina el mutatingwebhookconfiguration.

    kubectl delete mutatingwebhookconfiguration istiod-RELEASE_CHANNEL
    
  7. Una vez que se hayan iniciado todas las cargas de trabajo y no se observen proxies, podrás eliminar de forma segura el plano de control del clúster para detener la facturación. Si has implementado un plano de control gestionado, se elimina automáticamente en el paso anterior.

    Para quitar el plano de control del clúster, ejecuta el siguiente comando:

    istioctl x uninstall --purge
    

    Si no hay más planos de control, puedes eliminar el espacio de nombres istio-system para deshacerte de todos los recursos de Cloud Service Mesh. De lo contrario, elimina los servicios correspondientes a las revisiones de Cloud Service Mesh. De esta forma, no se eliminan los recursos compartidos, como los CRDs.

  8. Elimina los espacios de nombres istio-system y asm-system:

     kubectl delete namespace istio-system asm-system --ignore-not-found=true
    
  9. Comprueba si las eliminaciones se han realizado correctamente:

     kubectl get ns
    

    El resultado debe indicar el estado Terminating y mostrarse como se indica a continuación. De lo contrario, es posible que tengas que eliminar manualmente los recursos restantes en los espacios de nombres e intentarlo de nuevo.

     NAME                 STATUS       AGE
     istio-system         Terminating  71m
     asm-system           Terminating  71m
    
    1. Si vas a eliminar tus clústeres o ya lo has hecho, asegúrate de que cada clúster esté desregistrado de tu flota.
  10. Si has habilitado la configuración predeterminada de la flota de Cloud Service Mesh gestionado y quieres inhabilitarla para futuros clústeres, inhabilítala. Puedes saltarte este paso si solo vas a desinstalar el controlador de un clúster.

     gcloud container hub mesh disable --fleet-default-member-config --project FLEET_PROJECT_ID
    

    Donde FLEET_PROJECT_ID es el ID de tu proyecto de host de flota.

  11. Si usas Cloud Service Mesh gestionado, elimina la implementación mdp-controller:

     kubectl delete deployment mdp-controller -n kube-system
    
  12. Comprueba si el mapa de configuración istio-cni-plugin-config está presente:

     kubectl get configmap istio-cni-plugin-config -n kube-system
    

    Si está presente, elimina el istio-cni-plugin-config configmap:

     kubectl delete configmap istio-cni-plugin-config -n kube-system
    
  13. Elimina el conjunto de daemons istio-cni-node:

     kubectl delete daemonset istio-cni-node -n kube-system
    

Cuando completes estos pasos, todos los componentes de Cloud Service Mesh, incluidos los proxies, las autoridades de certificación del clúster y los roles y enlaces de RBAC, se eliminarán sistemáticamente del clúster. Durante el proceso de instalación, se conceden los permisos necesarios a una cuenta de servicio propiedad de Google para establecer los recursos de la malla de servicios en el clúster. Estas instrucciones de desinstalación no revocan estos permisos, lo que permite reactivar Cloud Service Mesh sin problemas en el futuro.