Desinstala Cloud Service Mesh

En esta página, se explica cómo desinstalar Cloud Service Mesh 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, se quitarán todas las configuraciones, sin importar el tipo del plano de control (en el clúster o administrado). Si realizas una migración 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. Por medio de estos comandos, también se borran el espacio de nombres istio-system y todas las definiciones de los recursos personalizados (CRD), incluidas las CRD que aplicaste.

  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 administración automática en este clúster (ya sea que la hayas aplicado directamente o con la configuración predeterminada de la flota):

      gcloud container fleet mesh update \
         --management manual \
         --memberships MEMBERSHIP_NAME \
         --project FLEET_PROJECT_ID \
         --location MEMBERSHIP_LOCATION
    

    Reemplaza lo siguiente:

    • MEMBERSHIP_NAME es el nombre de membresía que aparece cuando verificaste que tu clúster estaba registrado en la flota.
    • MEMBERSHIP_LOCATION es la ubicación de tu membresía (una región o global).
  3. 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.

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

  5. Si usas Cloud Service Mesh administrado, verifica qué implementación del plano de control tienes en tu clúster. Esto te ayudará a borrar los recursos pertinentes en los pasos posteriores.

  6. Si usas Cloud Service Mesh administrado, quita todos los recursos controlplanerevision del clúster:

    kubectl delete controlplanerevision asm-managed asm-managed-rapid asm-managed-stable -n istio-system --ignore-not-found=true
    
  7. Borra los webhooks del clúster, si existen.

    Cloud Service Mesh en el clúster

    Borra validatingwebhooksconfiguration y mutatingwebhookconfiguration.

    kubectl delete validatingwebhookconfiguration,mutatingwebhookconfiguration -l operator.istio.io/component=Pilot,istio.io/owned-by!=mesh.googleapis.com
    

    Cloud Service Mesh administrada

    A. Borra la validatingwebhooksconfiguration.

    kubectl delete validatingwebhookconfiguration istiod-istio-system-mcp
    

    B. Borra todos los mutatingwebhookconfiguration.

    kubectl delete mutatingwebhookconfiguration istiod-RELEASE_CHANNEL
    
  8. 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.

  9. Borra los espacios de nombres istio-system y asm-system:

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

     kubectl get ns
    

    El resultado debe indicar un estado Terminating y mostrarlo como se indica a continuación. De lo contrario, es posible que debas borrar de forma manual los recursos restantes en el espacio de nombres y volver a intentarlo.

     NAME                 STATUS       AGE
     istio-system         Terminating  71m
     asm-system           Terminating  71m
    
  11. Si borras tus clústeres o ya los borraste, asegúrate de que cada clúster no esté registrado en tu flota.

  12. Si habilitaste la configuración predeterminada de la flota de Cloud Service Mesh administrado y quieres inhabilitarla para clústeres futuros, inhabilítala. Puedes omitir este paso si solo desinstalas desde un solo clúster.

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

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

  13. Si planeas dejar de usar Cloud Service Mesh a nivel de la flota, inhabilita la función de malla de servicios para tu proyecto host de la 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.

  14. Si habilitaste Cloud Service Mesh administrado, verifica y borra los recursos administrados si están presentes:

    1. Borra la implementación mdp-controller:

        kubectl delete deployment mdp-controller -n kube-system
      
    2. Obtén y, luego, borra el recurso personalizado de control del plano de datos:

      1. Obtén el CR de control del plano de datos:

        kubectl get dataplanecontrol
        
      2. Borra el CR de control del plano de datos:

        kubectl delete dataplanecontrol DATA_PLANE_CONTROL_CR_NAME
        

        Reemplaza DATA_PLANE_CONTROL_CR_NAME por el resultado del comando anterior.

      3. Borra las CRD controlplanerevision y dataplanecontrol:

        kubectl delete crd controlplanerevisions.mesh.cloud.google.com dataplanecontrols.mesh.cloud.google.com
        
    3. Si tienes la implementación del plano de control TRAFFIC_DIRECTOR, limpia los recursos de la verificación de estado transparente. Por lo general, se quitan automáticamente, pero puedes asegurarte de que se limpien de la siguiente manera:

      1. Borra el daemonset snk.

           kubectl delete daemonset snk -n kube-system
        
      2. Borra la regla de firewall.

           gcloud compute firewall-rules delete gke-csm-thc-FIRST_8_CHARS_OF_CLUSTER_ID
        

        Reemplaza lo siguiente:

        • FIRST_8_CHARS_OF_CLUSTER_ID son los primeros 8 caracteres del ID del clúster para tu clúster específico.
    4. Verifica si está presente el mapa de configuración istio-cni-plugin-config:

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

      Si está presente, borra el mapa de configuración istio-cni-plugin-config:

        kubectl delete configmap istio-cni-plugin-config -n kube-system
      
    5. Borra el daemonset istio-cni-node:

        kubectl delete daemonset istio-cni-node -n kube-system
      
  15. Si desinstalas Cloud Service Mesh administrado, comunícate con el equipo de asistencia para asegurarte de que se limpien todos los Google Cloud recursos. El espacio de nombres istio-system y los mapas de configuración también pueden seguir recreándose si no sigues este paso.

Una vez que se completan 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 quitan 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.

.