Cloud Service Mesh をアンインストールする

このページでは、Cloud Service Mesh をアンインストールする方法について説明します。

Cloud Service Mesh をアンインストールする

以下のコマンドを使用して、Cloud Service Mesh のすべてのコンポーネントをアンインストールします。また、これらのコマンドでは、istio-system 名前空間と、すべてのカスタム リソース定義(CRD)(お客様が適用した CRD も含む)が削除されます。

  1. アプリケーション トラフィックが中断されないようにするには:

    • STRICT mTLS ポリシーを PERMISSIVE にダウングレードします。
    • トラフィックをブロックする可能性のある AuthorizationPolicy をすべて削除します。
  2. Fleet API を介した自動マネージド Cloud Service Mesh を無効にします(有効になっている場合)。

  3. 名前空間でサイドカーの自動挿入機能が有効になっている場合は、これを無効にします。次のコマンドを実行して、名前空間ラベルを表示します。

     kubectl get namespace YOUR_NAMESPACE --show-labels
    

    出力は次のようになります。

     NAME   STATUS   AGE     LABELS
     demo   Active   4d17h   istio.io/rev=asm-181-5

    出力の LABELS 列の下に istio.io/rev= が表示されている場合は、削除します。

     kubectl label namespace YOUR_NAMESPACE istio.io/rev-
    

    出力の LABELS 列の下に istio-injection が表示されている場合は、削除します。

     kubectl label namespace YOUR_NAMESPACE istio-injection-
    

    istio.io/rev ラベルまたは istio-injection ラベルが表示されていない場合、名前空間で自動挿入が有効になっていません。

  4. サイドカーが挿入されたワークロードを再起動してプロキシを削除します。

  5. マネージド Cloud Service Mesh を使用している場合は、クラスタ内の controlplanerevision リソースを削除します。

    kubectl delete controlplanerevision RELEASE_CHANNEL -n istio-system
    

    RELEASE_CHANNEL は、asm-managedasm-managed-rapidasm-managed-stable など、プロビジョニングしたリリース チャンネルを示します。

  6. クラスタ内に Webhook が存在する場合は、それを削除します。

    クラスタ内 Cloud Service Mesh

    validatingwebhooksconfigurationmutatingwebhookconfiguration を削除します。

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

    マネージド Cloud Service Mesh

    A. validatingwebhooksconfiguration を削除します。

    kubectl delete validatingwebhookconfiguration istiod-istio-system-mcp
    

    B. mutatingwebhookconfiguration を削除します。

    kubectl delete mutatingwebhookconfiguration RELEASE_CHANNEL
    
  7. すべてのワークロードが稼働し、プロキシが確認されなくなったら、クラスタ内コントロール プレーンを安全に削除して課金を停止できます。マネージド コントロール プレーンをデプロイした場合は、前のステップで自動的に削除されます。

    クラスタ内コントロール プレーンを削除するには、次のコマンドを実行します。

    istioctl x uninstall --purge
    

    コントロール プレーンが他にない場合は、istio-system 名前空間を削除して、すべての Cloud Service Mesh リソースを削除できます。他のコントロール プレーンがある場合は、Cloud Service Mesh のリビジョンに対応するサービスを削除します。これにより、CRD などの共有リソースの削除を回避できます。

  8. 名前空間 istio-systemasm-system を削除します。

     kubectl delete namespace istio-system asm-system --ignore-not-found=true
    
  9. 削除が成功したかどうかを確認します。

     kubectl get ns
    

    次に示すように、Terminating 状態を示す出力が返されます。出力されない場合は、名前空間内の残りのリソースを手動で削除して、もう一度試してください。

     NAME                 STATUS       AGE
     istio-system         Terminating  71m
     asm-system           Terminating  71m
    
  10. マネージド Cloud Service Mesh を使用している場合は、mdp-controller Deployment を削除します。

     kubectl delete deployment mdp-controller -n kube-system
    
  11. istio-cni-node daemonset を削除します。

     kubectl delete daemonset istio-cni-node -n kube-system
    
  12. 手順に沿ってフリートから各クラスタの登録を解除します。削除されたクラスタがフリートに登録されている可能性があるため、クラスタを削除した場合でも、このステップが必要です。