Desinstala Cloud Service Mesh administrado
En esta página, se explica cómo desinstalar Cloud Service Mesh administrado. Si desinstalas Cloud Service Mesh en el clúster, sigue la guía de desinstalación en el clúster.
Si usas una configuración heredada con varios planos de control aprovisionados, seguir estas instrucciones quitará todos los planos de control aprovisionados.
No se admiten los planos de control administrados por asmcli para la desinstalación, pero
sí los clústeres que tienen planos de control administrados por asmcli --managed o por la API de malla. Si no estás seguro del plano de control, ejecuta el siguiente comando:
kubectl get controlplanerevisions -n istio-system -l 'app.kubernetes.io/created-by!=asmcli'
Se admite la desinstalación si aparece algún elemento en el resultado.
Desinstala Cloud Service Mesh
Usa los siguientes comandos para desinstalar todos los componentes de Cloud Service Mesh.
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.
Inhabilita varios clústeres si hay otros clústeres que ejecutan la detección de extremos en el clúster que desinstalas.
kubectl patch configmap/asm-options -n istio-system --type merge -p '{"data":{"multicluster_mode":"manual"}}'Busca los secretos que requieran limpieza y, luego, bórralos:
kubectl get secrets -n istio-system -l istio/multiCluster=truekubectl delete secret SECRET_NAMEEn el ejemplo anterior, SECRET_NAME es el nombre del secreto. Repite este paso para cada secreto que aparece en la lista.
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-labelsEl 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 columnaLABELS, quítalo:kubectl label namespace YOUR_NAMESPACE istio.io/rev-Si ves
istio-injectionen el resultado en la columnaLABELS, quítalo:kubectl label namespace YOUR_NAMESPACE istio-injection-Si no ves las etiquetas
istio.io/revniistio-injection, significa que la inserción automática no estaba habilitada en el espacio de nombres.
Reinicia tus cargas de trabajo que tienen incorporados sidecars para quitar los proxies.
Verifica que no haya proxies conectados al plano de control administrado:
kubectl get pods --all-namespaces -o json | jq -r ' .items[] | select( .spec.containers[].env[]? | select(.name == "PROXY_CONFIG" and (.value | contains("\"discoveryAddress\":\"meshconfig.googleapis.com:443\""))) ) | "\(.metadata.namespace)\t\(.metadata.name)" 'Actualiza la administración de especificaciones de membresía de la función de malla a
not-installed:gcloud alpha container fleet mesh update \ --project FLEET_PROJECT_ID \ --memberships MEMBERSHIP_NAME \ --location MEMBERSHIP_LOCATION \ --management not-installedReemplaza 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).
Verifica que el estado de la membresía de la función de malla para el estado del plano de control sea
DISABLED.gcloud container fleet mesh describe --project FLEET_PROJECT_IDEl resultado es similar al siguiente:
servicemesh: controlPlaneManagement: details: - code: DISABLED details: Control Plane Management is not enabled. state: DISABLED dataPlaneManagement: details: - code: DISABLED details: Data Plane Management is not enabled. state: DISABLED state: description: 'Please see https://cloud.google.com/service-mesh/docs/install for instructions to onboard to Anthos Service Mesh.' ...Si el estado del plano de control es
DEPROVISIONING, vuelve a verificarlo después de unos minutos.- Si el estado del plano de control es
STALLED, la desinstalación no puede funcionar debido a una condición de error interna. Si el problema persiste, comunícate con el equipo de asistencia.
- Si el estado del plano de control es
De manera opcional, quita los CR de Istio, las CRD de Istio, el ConfigMap istio-(revision), el ConfigMap asm-options y el espacio de nombres
istio-systempara quitar la malla de servicios del clúster o usarlos en otra malla de servicios compatible con la API de Istio.Quita los CR de Istio:
kubectl delete gateways,virtualservices,destinationrules,serviceentries,envoyfilters,sidecars,peerauthentications,requestauthentications,authorizationpolicies,telemetries,wasmplugins,proxyconfigs --all --all-namespacesQuita las CRD de Istio:
kubectl get crds -o name | grep --color=never 'istio.io' | xargs kubectl deleteQuita el ConfigMap istio-(revision). Puedes omitir este paso si borras el espacio de nombres
istio-system.kubectl delete configmap istio-RELEASE_CHANNEL -n istio-systemReemplaza RELEASE_CHANNEL por tu canal de versiones (
asm-managed,asm-managed-stableoasm-managed-rapid).Quita el ConfigMap asm-options:
kubectl delete configmap asm-options -n istio-systemQuita el espacio de nombres
istio-system:kubectl delete namespace istio-system --ignore-not-found=trueVerifica si las eliminaciones se realizaron de forma correcta:
kubectl get nsEl resultado debe indicar un estado
Terminatingy mostrarse como se indica. De lo contrario, es posible que debas borrar de forma manual los recursos restantes en los espacios de nombres y volver a intentarlo.NAME STATUS AGE istio-system Terminating 71m
Si usas Certificate Authority Service, limpia los permisos y el grupo de AC creados mientras configuras Certificate Authority Service para Cloud Service Mesh administrado.
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_IDEn el ejemplo anterior, FLEET_PROJECT_ID es el ID de tu proyecto host de la flota.
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_IDEn el ejemplo anterior, FLEET_PROJECT_ID es el ID de tu proyecto host de la flota.
Una vez que se completan estos pasos, todos los componentes de Cloud Service Mesh, incluidos los proxies, las autoridades certificadoras 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.