Desinstala Cloud Service Mesh en el clúster

En esta página, se explica cómo desinstalar Cloud Service Mesh en el clúster si usas las APIs de Istio. Si usas las APIs de Compute Engine, no es necesario realizar ningún paso. Consulta la descripción general de Cloud Service Mesh para comprender las diferencias.

Si sigues estas instrucciones para desinstalar Cloud Service Mesh en el clúster, se quitarán todas las configuraciones.

Si desinstalas Cloud Service Mesh administrado, sigue la guía de desinstalación administrada en su lugar.

Si migras de un clúster a un clúster administrado, sigue la guía de migración.

Desinstala Cloud Service Mesh

Usa los siguientes comandos para desinstalar todos los componentes de Cloud Service Mesh.

  1. Para evitar la interrupción del tráfico de la aplicación:

    • Cambia las políticas STRICT de mTLS a PERMISSIVE.
    • Quita cualquier AuthorizationPolicy que pueda bloquear el tráfico.
  2. Inhabilita la inserción automática de sidecar en tus espacios de nombres. Si está habilitada: Ejecuta el siguiente comando para mostrar las etiquetas del espacio de nombres:

     kubectl get namespace YOUR_NAMESPACE --show-labels
    

    El resultado es similar a este:

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

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

     kubectl label namespace YOUR_NAMESPACE istio.io/rev-
    

    Si ves istio-injection en el resultado en la columna LABELS, quítalo:

     kubectl label namespace YOUR_NAMESPACE istio-injection-
    

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

  3. Reinicia tus cargas de trabajo que tienen incorporados sidecars para quitar los proxies.

  4. Borra validatingwebhooksconfiguration y mutatingwebhookconfiguration del clúster, si existen:

      kubectl delete validatingwebhookconfiguration,mutatingwebhookconfiguration -l operator.istio.io/component=Pilot,istio.io/owned-by!=mesh.googleapis.com
    
  5. Una vez que aparezcan todas las cargas de trabajo y no se vean proxies, puedes borrar de forma segura el plano de control en el clúster para detener la facturación.

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

    istioctl uninstall --purge
    

    Si no hay otros planos de control, puedes borrar el espacio de nombres istio-system para deshacerte de todos los recursos de Cloud Service Mesh. De lo contrario, borra los servicios correspondientes a las revisiones de Cloud Service Mesh. Esto evita borrar recursos compartidos, como CRD.

  6. De manera opcional, quita los CR de Istio, las CRD de Istio, el mapa de configuración istio-(revision), el mapa de configuración asm-options, los espacios de nombres istio-system y asm-system para quitar la malla de servicios del clúster o usarlos en otra malla de servicios compatible con la API de Istio.

    1. Quita los CR de Istio:

      kubectl delete gateways,virtualservices,destinationrules,serviceentries,envoyfilters,sidecars,peerauthentications,requestauthentications,authorizationpolicies,telemetries,wasmplugins,proxyconfigs --all --all-namespaces
      
    2. Quita las CRD de Istio:

      kubectl get crds -o name | grep --color=never 'istio.io' | xargs kubectl delete
      
    3. Quita el mapa de configuración istio-(revision). Puedes omitir este paso si borras el espacio de nombres istio-system.

      kubectl delete configmap istio-RELEASE_CHANNEL -n istio-system
      

      Reemplaza RELEASE_CHANNEL por tu canal de versiones

    4. Quita el espacio de nombres istio-system:

      kubectl delete namespace istio-system --ignore-not-found=true
      
    5. Quita el espacio de nombres asm-system:

      kubectl delete namespace asm-system --ignore-not-found=true
      
      1. Verifica si las eliminaciones se realizaron de forma correcta:

         kubectl get ns
         ```
        
        The output should indicate a `Terminating` state and return as shown,
        otherwise you might have to manually delete any remaining resources in
        the namespaces and try again.
        
        ```sh
         NAME                 STATUS       AGE
         istio-system         Terminating  71m
         asm-system           Terminating  71m
         ```
        
  7. Si borras tus clústeres o ya los borraste, asegúrate de que cada clúster no esté registrado en tu flota.

  8. Si planeas dejar de usar Cloud Service Mesh a nivel de la flota, inhabilita la función de malla de servicios para el proyecto host de tu flota.

     gcloud container hub mesh disable --project FLEET_PROJECT_ID
    

    En el ejemplo anterior, FLEET_PROJECT_ID es el ID del proyecto host de la flota.

Una vez que completes estos pasos, todos los componentes de Cloud Service Mesh, incluidos los proxies, las autoridades certificadoras en el clúster y los roles y vinculaciones de RBAC, se quitarán de forma sistemática del clúster. Durante el proceso de instalación, se otorgan los permisos necesarios a una cuenta de servicio propiedad de Google para establecer los recursos de la malla de servicios dentro del clúster. Estas instrucciones de desinstalación no revocan estos permisos, lo que permite una reactivación sin problemas de Cloud Service Mesh en el futuro.