マネージド Cloud Service Mesh をアンインストールする
このページでは、マネージド Cloud Service Mesh をアンインストールする方法について説明します。クラスタ内 Cloud Service Mesh をアンインストールする場合は、 クラスタ内の アンインストール ガイドに従ってください。
複数のコントロール プレーンがプロビジョニングされたレガシー設定を使用している場合は、次の手順に沿ってプロビジョニングされたすべてのコントロール プレーンを削除します。
asmcli で管理されるコントロール プレーンはアンインストール対象外ですが、asmcli --managed または Mesh API で管理されるコントロール プレーンを使用するクラスタはサポートされています。コントロール プレーンが不明な場合は、次のコマンドを実行します。
kubectl get controlplanerevisions -n istio-system -l 'app.kubernetes.io/created-by!=asmcli'
出力にリストされている項目がある場合は、アンインストールがサポートされます。
Cloud Service Mesh をアンインストールする
以下のコマンドを使用して、Cloud Service Mesh のすべてのコンポーネントをアンインストールします。
アプリケーション トラフィックが中断されないようにするには:
- STRICT mTLS ポリシーを PERMISSIVE にダウングレードします。
- トラフィックをブロックする可能性のある AuthorizationPolicy をすべて削除します。
アンインストールするクラスタでエンドポイント検出を実行している他のクラスタがある場合は、マルチクラスタを無効にします。
kubectl patch configmap/asm-options -n istio-system --type merge -p '{"data":{"multicluster_mode":"manual"}}'クリーンアップが必要なシークレットを見つけて削除します。
kubectl get secrets -n istio-system -l istio/multiCluster=truekubectl delete secret SECRET_NAMESECRET_NAME はシークレットの名前です。リストされているシークレットごとにこの手順を繰り返します。
名前空間でサイドカーの自動挿入機能が有効になっている場合は、これを無効にします。次のコマンドを実行して、名前空間ラベルを表示します。
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ラベルが表示されない場合、名前空間で自動挿入は有効になっていません。
サイドカーが挿入されたワークロードを再起動してプロキシを削除します。
プロキシがマネージド コントロール プレーンに接続されていないことを確認します。
kubectl get pods --all-namespaces -o json | jq -r ' .items[] | select( .spec.containers[].env[]? | select(.name == "PROXY_CONFIG" and (.value | contains("\"discoveryAddress\":\"meshconfig.googleapis.com:443\""))) ) | "\(.metadata.namespace)\t\(.metadata.name)" 'Mesh 機能メンバーシップ仕様の管理を
not-installedに更新します。gcloud alpha container fleet mesh update \ --project FLEET_PROJECT_ID \ --memberships MEMBERSHIP_NAME \ --location MEMBERSHIP_LOCATION \ --management not-installed次のように置き換えます。
- MEMBERSHIP_NAME は、クラスタがフリートに登録されていることを確認した際に表示されるメンバーシップ名です。
- MEMBERSHIP_LOCATION は、メンバーシップのロケーションです(
リージョンまたは
global)。
コントロール プレーンの状態の Mesh 機能メンバーシップの状態が
DISABLEDであることを確認します。gcloud container fleet mesh describe --project FLEET_PROJECT_ID出力は次のようになります。
servicemesh: controlPlaneManagement: details: - code: DISABLED details: Control Plane Management is not enabled. state: DISABLED dataPlaneManagement: details: - code: DISABLED details: Data Plane Management is not enabled. state: DISABLED state: description: 'Please see https://cloud.google.com/service-mesh/docs/install for instructions to onboard to Anthos Service Mesh.' ...コントロール プレーンの状態が
DEPROVISIONINGの場合は、数分後に再度確認してください。- コントロール プレーンの状態が
STALLEDの場合、内部エラーのためアンインストールがブロックされています。問題が解決しない場合は、サポートにお問い合わせください。
- コントロール プレーンの状態が
必要に応じて、Istio CR、Istio CRD、istio-(revision) configmap、asm-options configmap、
istio-systemNamespace を削除して、クラスタからサービス メッシュを削除するか、別の Istio API 互換サービス メッシュで使用します。Istio CR を削除します。
kubectl delete gateways,virtualservices,destinationrules,serviceentries,envoyfilters,sidecars,peerauthentications,requestauthentications,authorizationpolicies,telemetries,wasmplugins,proxyconfigs --all --all-namespacesIstio CRD を削除します。
kubectl get crds -o name | grep --color=never 'istio.io' | xargs kubectl deleteistio-(revision) configmap を削除します。
istio-systemNamespace を削除する場合は、この手順をスキップできます。kubectl delete configmap istio-RELEASE_CHANNEL -n istio-systemRELEASE_CHANNEL は、リリース チャンネル (
asm-managed、asm-managed-stable、asm-managed-rapid)に置き換えます。asm-options configmap を削除します。
kubectl delete configmap asm-options -n istio-systemistio-systemNamespace を削除します。kubectl delete namespace istio-system --ignore-not-found=true削除が成功したかどうかを確認します。
kubectl get ns次のように、
Terminating状態を示す出力が返されるはずです。そうでない場合は、名前空間内の残りのリソースを手動で削除して、もう一度試してください。NAME STATUS AGE istio-system Terminating 71m
Certificate Authority Service を使用している場合は、マネージド Cloud Service Mesh 用に Certificate Authority Service を構成するときに作成した権限と CA プール をクリーンアップします。
マネージド Cloud Service Mesh のフリートのデフォルト構成を有効にしていて、将来のクラスタで無効にする場合は、無効にします。単一のクラスタからのみアンインストールする場合は、この手順をスキップできます。
gcloud container hub mesh disable --fleet-default-member-config --project FLEET_PROJECT_IDここで、FLEET_PROJECT_ID はフリート ホスト プロジェクトの ID です。
フリートレベルで Cloud Service Mesh の使用を停止する場合は、フリート ホスト プロジェクトのサービス メッシュ機能を無効にします。
gcloud container hub mesh disable --project FLEET_PROJECT_IDここで、FLEET_PROJECT_ID はフリート ホスト プロジェクトの ID です。
これらの手順を完了すると、プロキシ、認証局、RBAC のロールとバインディングを含むすべての Cloud Service Mesh コンポーネントが、クラスタから体系的に削除されます。インストール プロセス中に、Google 所有のサービス アカウントに、クラスタ内のサービス メッシュ リソースを確立するために必要な権限が付与されます。これらのアンインストール手順を実行しても、これらの権限は取り消されないため、今後 Cloud Service Mesh をシームレスに再有効化できます。