Desinstalar o Cloud Service Mesh
Nesta página, explicamos como desinstalar o Cloud Service Mesh se você estiver usando as APIs do Istio. Se você estiver usando as APIs do Compute Engine, nenhuma etapa será necessária. Consulte a Visão geral do Cloud Service Mesh para entender as diferenças.
Seguir estas instruções para desinstalar o Cloud Service Mesh remove todas as configurações, independentemente do tipo de plano de controle (no cluster ou gerenciado). Se você estiver fazendo uma migração de no cluster para gerenciado, siga o Guia de migração em vez disso.
Desinstalar o Cloud Service Mesh
Use os comandos a seguir para desinstalar todos os componentes do Cloud Service Mesh. Esses comandos também excluem o namespace istio-system e todas as definições de recursos personalizados (CRDs, na sigla em inglês), incluindo todos os CRDs que você aplicou.
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 o gerenciamento automático neste cluster (se você o aplicou diretamente ou usando a configuração padrão da frota):
gcloud container fleet mesh update \ --management manual \ --memberships MEMBERSHIP_NAME \ --project FLEET_PROJECT_ID \ --location MEMBERSHIP_LOCATIONSubstitua:
- 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).
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-a:kubectl label namespace YOUR_NAMESPACE istio.io/rev-Se você vir
istio-injectionna saída na colunaLABELS, remova-a: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.
Se você estiver usando o Cloud Service Mesh gerenciado, verifique qual implementação do plano de controle você tem no cluster. Isso ajudará a excluir recursos relevantes nas próximas etapas.
Se você estiver usando o Cloud Service Mesh gerenciado, remova todos os recursos
controlplanerevisionno cluster:kubectl delete controlplanerevision asm-managed asm-managed-rapid asm-managed-stable -n istio-system --ignore-not-found=trueVerifique o status dos recursos
controlplanerevisionpara confirmar se eles foram excluídos:kubectl get controlplanerevision -n istio-systemSe a saída mostrar que um recurso
controlplanerevisionainda está presente, ele poderá estar preso ao finalizadormesh.cloud.google.com/deprovision. Nesse caso, é possível remover manualmente o finalizador do recurso para permitir que ele seja excluído:kubectl patch controlplanerevision CPR_NAME -n istio-system -p '{"metadata":{"finalizers":null}}' --type=mergeSubstitua CPR_NAME pelo nome da revisão do plano de controle retornado na etapa anterior, por exemplo,
asm-managed.Exclua os webhooks do cluster, se houver.
Cloud Service Mesh no cluster
Exclua
validatingwebhooksconfigurationemutatingwebhookconfiguration.kubectl delete validatingwebhookconfiguration,mutatingwebhookconfiguration -l operator.istio.io/component=Pilot,istio.io/owned-by!=mesh.googleapis.comCloud Service Mesh gerenciado
A. Exclua
validatingwebhooksconfiguration:kubectl delete validatingwebhookconfiguration istiod-istio-system-mcpB. Exclua todos os
mutatingwebhookconfiguration.kubectl delete mutatingwebhookconfiguration istiod-RELEASE_CHANNELDepois que todas as cargas de trabalho aparecerem e nenhum proxy for observado, será possível excluir com segurança o plano de controle no clusterpara interromper o faturamento.
Para remover o plano de controle no cluster, execute o comando a seguir:
istioctl uninstall --purgeSe não houver outros planos de controle, exclua o namespace
istio-systempara eliminar todos os recursos do Cloud Service Mesh. Caso contrário, exclua os serviços correspondentes às revisões do Cloud Service Mesh. Isso evita a exclusão de recursos compartilhados, como CRDs.Exclua os namespaces
istio-systemeasm-system:kubectl delete namespace istio-system asm-system --ignore-not-found=trueVerifique se as exclusões foram feitas:
kubectl get nsA saída 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 asm-system Terminating 71mSe você excluir ou já tiver excluído os clusters, verifique se cada cluster está cancelado da sua frota.
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 esta 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.
Se você ativou o Cloud Service Mesh gerenciado, verifique e exclua os recursos gerenciados, se eles estiverem presentes:
Exclua a implantação
mdp-controller:kubectl delete deployment mdp-controller -n kube-systemReceba e exclua o recurso personalizado de controle do plano de dados:
Receba o CR de controle do plano de dados:
kubectl get dataplanecontrolExclua o CR de controle do plano de dados:
kubectl delete dataplanecontrol DATA_PLANE_CONTROL_CR_NAMESubstitua DATA_PLANE_CONTROL_CR_NAME pela saída do comando anterior.
Exclua os CRDs
controlplanerevisione dataplanecontrol:kubectl delete crd controlplanerevisions.mesh.cloud.google.com dataplanecontrols.mesh.cloud.google.com
Se você tiver a implementação do plano de controle
TRAFFIC_DIRECTOR, limpe os recursos de verificação de integridade transparente. Normalmente, eles são removidos automaticamente, mas você pode garantir que eles sejam limpos fazendo o seguinte:Exclua o DaemonSet
snk.kubectl delete daemonset snk -n kube-systemExclua a regra de firewall.
gcloud compute firewall-rules delete gke-csm-thc-FIRST_8_CHARS_OF_CLUSTER_IDSubstitua:
- FIRST_8_CHARS_OF_CLUSTER_ID são os primeiros 8 caracteres do ID do cluster específico.
Verifique se o configmap
istio-cni-plugin-configestá presente:kubectl get configmap istio-cni-plugin-config -n kube-systemSe presente, exclua o configmap
istio-cni-plugin-config:kubectl delete configmap istio-cni-plugin-config -n kube-systemExclua o DaemonSet
istio-cni-node:kubectl delete daemonset istio-cni-node -n kube-system
Se você estiver desinstalando o Cloud Service Mesh gerenciado, entre em contato com o suporte para garantir que todos os Google Cloud recursos sejam limpos. O namespace
istio-systeme os mapas de configuração também poderão continuar sendo recriados se você não seguir esta etapa.
Após a conclusão dessas etapas, todos os componentes do Cloud Service Mesh, incluindo proxies, autoridades de certificação no cluster 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.
.