Desinstalar o Cloud Service Mesh gerenciado
Nesta página, explicamos como desinstalar o Cloud Service Mesh gerenciado. Se você estiver desinstalando o Cloud Service Mesh no cluster, siga o guia de desinstalação no cluster em vez disso.
Se você estiver usando uma configuração legada com vários planos de controle provisionados, seguir estas instruções removerá todos os planos de controle provisionados.
Os planos de controle gerenciados por asmcli não são compatíveis com a desinstalação, mas
os clusters que têm planos de controle gerenciados por asmcli --managed ou pela API de malha
são compatíveis. Se você não tiver certeza do plano de controle, execute o seguinte comando:
kubectl get controlplanerevisions -n istio-system -l 'app.kubernetes.io/created-by!=asmcli'
A desinstalação é compatível se algum item estiver listado na saída.
Desinstalar o Cloud Service Mesh
Use os seguintes comandos para desinstalar todos os componentes do Cloud Service Mesh.
Para evitar a interrupção do tráfego de aplicativos:
- Faça o downgrade de qualquer política STRICT mTLS para PERMISSIVE.
- Remova qualquer AuthorizationPolicy que possa bloquear o tráfego.
Desative vários clusters se houver outros clusters executando a descoberta de endpoints no cluster que você está desinstalando.
kubectl patch configmap/asm-options -n istio-system --type merge -p '{"data":{"multicluster_mode":"manual"}}'Encontre os secrets que precisam de limpeza e exclua-os:
kubectl get secrets -n istio-system -l istio/multiCluster=truekubectl delete secret SECRET_NAMEEm que SECRET_NAME é o nome do secret. Repita essa etapa para cada secret listado.
Desative a injeção automática de sidecar nos namespaces, se estiver ativada. Execute o seguinte comando para exibir rótulos de namespace:
kubectl get namespace YOUR_NAMESPACE --show-labelsO resultado será assim:
NAME STATUS AGE LABELS demo Active 4d17h istio.io/rev=asm-181-5
Se você vir
istio.io/rev=na saída na colunaLABELS, remova-o:kubectl label namespace YOUR_NAMESPACE istio.io/rev-Se você vir
istio-injectionna saída na colunaLABELS, remova-o:kubectl label namespace YOUR_NAMESPACE istio-injection-Se você não vir os rótulos
istio.io/revouistio-injection, a injeção automática não foi ativada no namespace.
Reinicie as cargas de trabalho que tenham arquivos secundários injetados para remover os proxies.
Verifique se nenhum proxy está conectado ao plano de controle gerenciado:
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)" 'Atualize o gerenciamento de especificação de associação de recursos de malha para
not-installed:gcloud alpha container fleet mesh update \ --project FLEET_PROJECT_ID \ --memberships MEMBERSHIP_NAME \ --location MEMBERSHIP_LOCATION \ --management not-installedSubstitua:
- MEMBERSHIP_NAME é o nome da associação listado quando você verificou que o cluster estava registrado na frota.
- MEMBERSHIP_LOCATION é o local da assinatura (uma região ou
global).
Verifique se o estado de associação do recurso de malha para o estado do plano de controle é
DISABLED.gcloud container fleet mesh describe --project FLEET_PROJECT_IDA saída é semelhante a:
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.' ...Se o estado do plano de controle for
DEPROVISIONING, verifique novamente após alguns minutos.- Se o estado do plano de controle for
STALLED, a desinstalação será bloqueada devido a uma condição de erro interna. Se o problema persistir, entre em contato com o suporte.
- Se o estado do plano de controle for
Opcionalmente, remova os CRs do Istio, os CRDs do Istio, o configmap istio-(revision), o configmap asm-options e o namespace
istio-systempara remover a malha de serviço do cluster ou usá-los em outra malha de serviço compatível com a API do Istio.Remova os CRs do Istio:
kubectl delete gateways,virtualservices,destinationrules,serviceentries,envoyfilters,sidecars,peerauthentications,requestauthentications,authorizationpolicies,telemetries,wasmplugins,proxyconfigs --all --all-namespacesRemova os CRDs do Istio:
kubectl get crds -o name | grep --color=never 'istio.io' | xargs kubectl deleteRemova o configmap istio-(revision). Você pode pular essa etapa se excluir o namespace
istio-system.kubectl delete configmap istio-RELEASE_CHANNEL -n istio-systemSubstitua RELEASE_CHANNEL pelo seu canal de lançamento (
asm-managed,asm-managed-stableouasm-managed-rapid).Remova o configmap asm-options:
kubectl delete configmap asm-options -n istio-systemRemova o namespace
istio-system:kubectl delete namespace istio-system --ignore-not-found=trueVerifique se as exclusões foram feitas:
kubectl get nsA saída deve indicar um estado
Terminatinge retornar conforme mostrado. Caso contrário, talvez seja necessário excluir manualmente os recursos restantes nos namespaces e tentar novamente.NAME STATUS AGE istio-system Terminating 71m
Se o CNI gerenciado estiver ativado no cluster(o padrão para instalações modernas), limpe os recursos do CNI:
Clusters padrão:verifique e exclua o ConfigMap
istio-cni-plugin-config:Verifique se o ConfigMap
istio-cni-plugin-configestá presente:kubectl get configmap istio-cni-plugin-config -n kube-systemSe estiver presente, exclua o ConfigMap
istio-cni-plugin-config:kubectl delete configmap istio-cni-plugin-config -n kube-system
Clusters do Autopilot:o GKE Autopilot restringe modificações nos recursos no namespace
kube-system. Se você estiver mantendo o cluster do Autopilot após desinstalar o Cloud Service Mesh gerenciado, entre em contato com o suporte para que ele remova oistio-cni-plugin-configConfigMap dekube-system.
Se você estiver usando o Certificate Authority Service, limpe as permissões e o pool de ACs criados ao configurar o Certificate Authority Service para o Cloud Service Mesh gerenciado.
Se você ativou a configuração padrão da frota do Cloud Service Mesh gerenciado e quer desativá-la para clusters futuros, desative-a. Você pode pular essa etapa se estiver desinstalando apenas de um único cluster.
gcloud container hub mesh disable --fleet-default-member-config --project FLEET_PROJECT_IDEm que FLEET_PROJECT_ID é o ID do projeto host da frota.
Se você planeja parar de usar o Cloud Service Mesh no nível da frota, desative o recurso de malha de serviço para o projeto host da frota.
gcloud container hub mesh disable --project FLEET_PROJECT_IDEm que FLEET_PROJECT_ID é o ID do projeto host da frota.
Após a conclusão dessas etapas, todos os componentes do Cloud Service Mesh, incluindo proxies, autoridades certificadoras e papéis e vinculações do RBAC, serão removidos sistematicamente do cluster. Durante o processo de instalação, uma conta de serviço do Google recebe as permissões necessárias para estabelecer os recursos da malha de serviço no cluster. Essas instruções de desinstalação não revogam essas permissões, permitindo uma reativação perfeita do Cloud Service Mesh no futuro.