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, não será necessário fazer nada. Consulte a visão geral do Cloud Service Mesh para entender as diferenças.

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.

  1. 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.
  2. 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_LOCATION
    

    Substitua:

    • MEMBERSHIP_NAME é o nome da assinatura listado quando você verificou que o cluster foi registrado na frota.
    • MEMBERSHIP_LOCATION é o local da sua assinatura (uma região ou global).
  3. 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-labels
    

    O 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 coluna LABELS, remova-a:

     kubectl label namespace YOUR_NAMESPACE istio.io/rev-
    

    Se você vir istio-injection na saída na coluna LABELS, remova-a:

     kubectl label namespace YOUR_NAMESPACE istio-injection-
    

    Se você não vir os rótulos istio.io/rev ou istio-injection, a injeção automática não foi ativada no namespace.

  4. Reinicie as cargas de trabalho que tenham arquivos secundários injetados para remover os proxies.

  5. 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 em outras etapas.

  6. Se você estiver usando o Cloud Service Mesh gerenciado, remova todos os recursos controlplanerevision do cluster:

    kubectl delete controlplanerevision asm-managed asm-managed-rapid asm-managed-stable -n istio-system --ignore-not-found=true
    
  7. Exclua os webhooks do cluster, se houver.

    Cloud Service Mesh no cluster

    Exclua validatingwebhooksconfiguration e mutatingwebhookconfiguration.

    kubectl delete validatingwebhookconfiguration,mutatingwebhookconfiguration -l operator.istio.io/component=Pilot
    

    Malha de serviço gerenciada do Cloud

    A) Exclua validatingwebhooksconfiguration:

    kubectl delete validatingwebhookconfiguration istiod-istio-system-mcp
    

    B. Excluir todos os mutatingwebhookconfiguration.

    kubectl delete mutatingwebhookconfiguration istiod-RELEASE_CHANNEL
    
  8. Depois 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 seguinte comando:

    istioctl x uninstall --purge
    

    Se não houver outros planos de controle, exclua o namespace istio-system para excluir 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.

  9. Exclua os namespaces istio-system e asm-system:

     kubectl delete namespace istio-system asm-system --ignore-not-found=true
    
  10. Verifique se as exclusões foram feitas:

     kubectl get ns
    

    A saída indicará um estado Terminating e 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  71m
    
  11. Se você excluir os clusters ou já os tiver excluído, verifique se cada um deles não está registrado na sua frota.

  12. Se você ativou a configuração padrão da frota do Cloud Service Mesh gerenciada e quiser desativá-la para clusters futuros, desative-a. Pule esta etapa se estiver desinstalando somente de um único cluster.

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

    FLEET_PROJECT_ID é o ID do projeto host da frota.

  13. Se você estiver usando o Cloud Service Mesh gerenciado, exclua a implantação mdp-controller:

     kubectl delete deployment mdp-controller -n kube-system
    
  14. Se você estiver usando o Cloud Service Mesh gerenciado e tiver a implementação do plano de controle TRAFFIC_DIRECTOR, limpe os recursos da verificação de integridade transparente. Normalmente, eles são removidos automaticamente, mas é possível garantir que eles sejam limpos fazendo o seguinte:

    A) Exclua o daemonset snk.

     kubectl delete daemonset snk -n kube-system
    

    B. Exclua a regra de firewall.

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

    Substitua:

    • FIRST_8_CHARS_OF_CLUSTER_ID são os primeiros 8 caracteres do ID do cluster específico.
  15. Verifique se o configmap istio-cni-plugin-config está presente:

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

    Se presente, exclua o configmap istio-cni-plugin-config:

     kubectl delete configmap istio-cni-plugin-config -n kube-system
    
  16. Exclua o DaemonSet istio-cni-node:

     kubectl delete daemonset istio-cni-node -n kube-system
    
  17. Se você estiver desinstalando o Cloud Service Mesh gerenciado e estiver mantendo seu cluster, entre em contato com o suporte para garantir que todos os recursos do Google Cloud sejam limpos. O namespace istio-system e 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, sã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.