Inhabilita o desinstala Istio on GKE

En esta guía, se muestra cómo inhabilitar o desinstalar por completo el complemento Istio on GKE de un clúster.

Si inhabilitas el complemento Istio on GKE, se inhabilitará la administración de complementos en el clúster, pero se conservarán la instalación y la configuración de Istio en el clúster. Cuando inhabilitas el complemento Istio on GKE, Google ya no administra la instalación de Istio en el clúster. Eres responsable de administrar la configuración y el ciclo de vida de Istio en el clúster. Para inhabilitar el complemento Istio on GKE, sigue las instrucciones de la sección Inhabilita el complemento Istio on GKE.

En lugar de inhabilitar el complemento, puedes desinstalar el complemento Istio on GKE por completo. Desinstalar el complemento Istio on GKE quita Istio y todas las configuraciones asociadas del clúster por completo. Para desinstalar el complemento Istio on GKE, sigue las instrucciones de la sección Desinstala Istio de un clúster.

Inhabilita el complemento Istio on GKE

Puedes inhabilitar el complemento Istio on GKE si ya no quieres que Google administre la instalación de Istio. Se conservan tu instalación y configuración de Istio. Para ello, asegúrate de ejecutar las versiones 1.17.17-gke.3100+, 1.18.16-gke.1600+ o 1.19.8-gke.1600+ de GKE. Si inhabilitas el complemento Istio on GKE en versiones anteriores de GKE, se desinstalará Istio por completo (la instalación y las configuraciones de Istio), lo que puede generar un tiempo de inactividad para tus servicios.

  1. Inhabilita Istio on GKE mediante la ejecución del siguiente comando:

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

Desinstala Istio de un clúster

La forma más sencilla de quitar el complemento Istio on GKE es borrar el clúster. Sin embargo, si el clúster tiene una aplicación existente que se debe conservar, inhabilitar Istio requiere los siguientes pasos:

  1. Asegúrese de que el modo mTLS predeterminado esté configurado en Permissive mTLS.
  2. Cambia el tráfico de la puerta de enlace de entrada de Istio.
  3. Desactiva la inyección automática del archivo adicional si está habilitada.
    kubectl label namespace your-namespace istio-injection=disabled
    
  4. Reinicia los Pods de la aplicación (por ejemplo, mediante el reinicio progresivo) para quitar los archivos adicionales de Envoy.
  5. Quita el plano de control de Istio con gcloud:
    gcloud beta container clusters update my-cluster --project=$PROJECT_ID \
      --update-addons=Istio=DISABLED
    
  6. Borra el CustomResource de IstioOperator:

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

    Según la versión del clúster, es posible que debas reemplazar istio-1-6-11-gke-0 por el nombre del CustomResource instalado en tu clúster. Para obtener el nombre, ejecuta lo siguiente:

    kubectl get istiooperator -n istio-system\
    
  7. Espera unos minutos para que el operador de Istio borre los recursos que instaló.

  8. Borra el espacio de nombres istio-system si existe:

    kubectl delete ns istio-system

  9. Borra los recursos de clúster de Istio restantes:

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

  10. En este punto, desinstaló correctamente el complemento Istio on GKE. Sin embargo, existen recursos relacionados que se etiquetan a propósito para migraciones seguras que debes borrar de forma manual del clúster:

    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