Desinstalar o Cloud Service Mesh

Nesta página, explicamos como desinstalar o Cloud Service Mesh se você estiver usando as APIs Istio. Se você usa APIs do Compute Engine, nenhuma etapa é necessários. Consulte a Visão geral do Cloud Service Mesh para entender as diferenças.

Desinstalar o Cloud Service Mesh

Use os seguintes comandos 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 se o cluster foi registrado na frota.
    • MEMBERSHIP_LOCATION é o local da sua assinatura (ou 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 vai ajudar a excluir recursos relevantes em outras etapas.

  6. Se você estiver usando o Cloud Service Mesh gerenciado, remova todos os controlplanerevision recursos no 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
    

    Cloud Service Mesh gerenciado

    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 uninstall --purge
    

    Se não houver outros planos de controle, exclua o istio-system para se livrar de todos os recursos do Cloud Service Mesh. Caso contrário, exclua o 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 ou já tiver excluído seus clusters, verifique se cada cluster está desregistrado da frota.

  12. Se você ativou a configuração padrão da frota do Cloud Service Mesh gerenciada e quiser desativá-lo para clusters futuros, desative-o. 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_ID
    

    FLEET_PROJECT_ID é o ID do projeto host da frota.

  13. Se você ativou o Cloud Service Mesh gerenciado, verifique e exclua os recursos gerenciados se eles apresentarem:

    1. Exclua a implantação mdp-controller:

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

      1. Exclua o daemonset snk.

           kubectl delete daemonset snk -n kube-system
        
      2. 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 oito primeiros caracteres do ID do cluster específico.
    3. 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
      
    4. Exclua o DaemonSet istio-cni-node:

        kubectl delete daemonset istio-cni-node -n kube-system
      
  14. Se você estiver desinstalando o Cloud Service Mesh gerenciado e continuar mantendo cluster, entre em contato com o Suporte para garantir que todas os recursos do Google Cloud são limpos. O namespace istio-system e os mapas de configuração também podem 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 certificado no cluster e funções e vinculações do RBAC, são sistematicamente removidos do cluster. Durante o processo de instalação, um A conta de serviço do Google recebe as permissões necessárias para estabelecer os recursos da malha de serviço no cluster. Estas instruções de desinstalação não revoguem essas permissões, o que permite a reativação perfeita de Cloud Service Mesh no futuro.