Cloud Service Mesh をアンインストールする
このページでは、Istio API を使用している場合の Cloud Service Mesh のアンインストール方法について説明します。Compute Engine API を使用している場合は、何もする必要ありません。違いについては、Cloud Service Mesh の概要をご覧ください。
Cloud Service Mesh をアンインストールする
以下のコマンドを使用して、Cloud Service Mesh のすべてのコンポーネントをアンインストールします。また、これらのコマンドでは、istio-system 名前空間と、すべてのカスタム リソース定義(CRD)(お客様が適用した CRD も含む)が削除されます。
- アプリケーション トラフィックが中断されないようにするには: - STRICT mTLS ポリシーを PERMISSIVE にダウングレードします。
- トラフィックをブロックする可能性のある AuthorizationPolicy をすべて削除します。
 
- 次のコマンドで、このクラスタで自動管理を無効にします(直接適用したか、フリートのデフォルト構成を使用して適用したかにかかわらず)。 - gcloud container fleet mesh update \ --management manual \ --memberships MEMBERSHIP_NAME \ --project FLEET_PROJECT_ID \ --location MEMBERSHIP_LOCATION- 以下を置き換えます。 - MEMBERSHIP_NAME は、クラスタがフリートに登録されていることを確認した際に表示されるメンバーシップ名です。
- MEMBERSHIP_LOCATION は、メンバーシップのロケーションです(リージョンまたは global)。
 
- 名前空間でサイドカーの自動挿入機能が有効になっている場合は、これを無効にします。次のコマンドを実行して、名前空間ラベルを表示します。 - 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ラベルが表示されていない場合、名前空間で自動挿入が有効になっていません。
- サイドカーが挿入されたワークロードを再起動してプロキシを削除します。 
- マネージド Cloud Service Mesh を使用している場合は、クラスタにどのコントロール プレーンが実装されているかを確認します。これは、この後の手順で関連するリソースを削除する際に役立ちます。 
- マネージド Cloud Service Mesh を使用している場合は、クラスタ内のすべての - controlplanerevisionリソースを削除します。- kubectl delete controlplanerevision asm-managed asm-managed-rapid asm-managed-stable -n istio-system --ignore-not-found=true
- クラスタ内に Webhook が存在する場合は、それを削除します。 - クラスタ内 Cloud Service Mesh- validatingwebhooksconfigurationと- mutatingwebhookconfigurationを削除します。- 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 istiod-RELEASE_CHANNEL
- すべてのワークロードが稼働し、プロキシが確認されなくなったら、クラスタ内コントロール プレーンを安全に削除して課金を停止できます。 - クラスタ内コントロール プレーンを削除するには、次のコマンドを実行します。 - istioctl uninstall --purge- コントロール プレーンが他にない場合は、 - istio-system名前空間を削除して、すべての Cloud Service Mesh リソースを削除できます。他のコントロール プレーンがある場合は、Cloud Service Mesh のリビジョンに対応するサービスを削除します。これにより、CRD などの共有リソースの削除を回避できます。
- 名前空間 - istio-systemと- asm-systemを削除します。- kubectl delete namespace istio-system asm-system --ignore-not-found=true
- 削除が成功したかどうかを確認します。 - kubectl get ns- 次に示すように、 - Terminating状態を示す出力が返されます。出力されない場合は、名前空間内の残りのリソースを手動で削除して、もう一度試してください。- NAME STATUS AGE istio-system Terminating 71m asm-system Terminating 71m
- クラスタを削除する場合、またはすでに削除している場合は、各クラスタがフリートから登録解除されていることを確認してください。 
- マネージド Cloud Service Mesh のフリートのデフォルト構成を有効にしていて、将来のクラスタで無効にする場合は、無効にします。単一クラスタからのアンインストールのみを行う場合は、この手順をスキップできます。 - gcloud container hub mesh disable --fleet-default-member-config --project FLEET_PROJECT_ID- ここで、FLEET_PROJECT_ID はフリート ホスト プロジェクトの ID です。 
- マネージド Cloud Service Mesh を有効にした場合は、マネージド リソースが存在するかどうか確認し、存在すれば削除します。 - mdp-controllerデプロイを削除します。- kubectl delete deployment mdp-controller -n kube-system
- TRAFFIC_DIRECTORコントロール プレーンを実装している場合は、透過的ヘルスチェック リソースをクリーンアップします。通常、これらのリソースは自動的に削除されますが、以下のようにすると確実にクリーンアップできます。- snkdaemonset を削除します。- kubectl delete daemonset snk -n kube-system
- ファイアウォール ルールを削除します。 - gcloud compute firewall-rules delete gke-csm-thc-FIRST_8_CHARS_OF_CLUSTER_ID- 以下を置き換えます。 - FIRST_8_CHARS_OF_CLUSTER_ID は、特定のクラスタのクラスタ ID の最初の 8 文字です。
 
 
- istio-cni-plugin-configconfigmap が存在するかどうかを確認します。- kubectl get configmap istio-cni-plugin-config -n kube-system- istio-cni-plugin-configconfigmap が存在する場合は削除します。- kubectl delete configmap istio-cni-plugin-config -n kube-system
- istio-cni-nodedaemonset を削除します。- kubectl delete daemonset istio-cni-node -n kube-system
 
- マネージド Cloud Service Mesh をアンインストールしてクラスタを維持する場合は、サポートに連絡してすべてのGoogle Cloud リソースを確実にクリーンアップしてください。この手順を行わないと、 - istio-system名前空間と構成マップが引き続き再作成されることもあります。
これらの手順を完了すると、プロキシ、クラスタ内認証局、ロールベース アクセス制御のロールとバインディングを含むすべての Cloud Service Mesh コンポーネントが、クラスタから体系的に削除されます。インストール プロセス中に、Google 所有のサービス アカウントに、クラスタ内のサービス メッシュ リソースを確立するために必要な権限が付与されます。これらのアンインストール手順を実施しても、これらの権限は取り消されないため、今後 Cloud Service Mesh をシームレスに再有効化できます。