관리형 Cloud Service Mesh 제거
이 페이지에서는 관리형 Cloud Service Mesh를 제거하는 방법을 설명합니다. 클러스터 내 Cloud Service Mesh를 제거하는 경우 클러스터 내 제거 가이드를 따르세요.
프로비저닝된 컨트롤 플레인이 여러 개인 기존 설정을 사용하는 경우 다음 안내에 따라 프로비저닝된 모든 컨트롤 플레인이 삭제됩니다.
asmcli로 관리되는 컨트롤 플레인은 제거가 지원되지 않지만 asmcli --managed 또는 메시 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_NAME여기서 SECRET_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)" '메시 기능 멤버십 사양 관리를
not-installed로 업데이트합니다.gcloud alpha container fleet mesh update \ --project FLEET_PROJECT_ID \ --memberships MEMBERSHIP_NAME \ --location MEMBERSHIP_LOCATION \ --management not-installed다음을 바꿉니다.
- MEMBERSHIP_NAME은 클러스터가 Fleet에 등록되었는지 확인할 때 나열되는 멤버십 이름입니다.
- MEMBERSHIP_LOCATION은 멤버십 위치입니다(리전 또는
global).
컨트롤 플레인 상태의 메시 기능 멤버십 상태가
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-system네임스페이스를 삭제하여 클러스터에서 서비스 메시를 삭제하거나 다른 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-(리비전) configmap 삭제
istio-system네임스페이스를 삭제하는 경우 이 단계를 건너뛸 수 있습니다.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-system네임스페이스를 삭제합니다.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 Fleet 기본 구성을 사용 설정했고 이후 클러스터에서 사용 중지하려면 이를 사용 중지합니다. 단일 클러스터에서만 제거하는 경우 이 단계를 건너뛸 수 있습니다.
gcloud container hub mesh disable --fleet-default-member-config --project FLEET_PROJECT_ID여기서 FLEET_PROJECT_ID는 Fleet 호스트 프로젝트의 ID입니다.
Fleet 수준에서 Cloud Service Mesh 사용을 중지하려면 Fleet 호스트 프로젝트에서 서비스 메시 기능을 사용 중지합니다.
gcloud container hub mesh disable --project FLEET_PROJECT_ID여기서 FLEET_PROJECT_ID는 Fleet 호스트 프로젝트의 ID입니다.
이 단계가 완료되면 프록시, 인증 기관, RBAC 역할 및 바인딩을 포함한 모든 Cloud Service Mesh 구성요소가 클러스터에서 체계적으로 삭제됩니다. 설치 프로세스 중 클러스터 내에서 서비스 메시 리소스를 설정하는 데 필요한 권한이 Google 소유 서비스 계정에 부여됩니다. 이러한 삭제 안내는 이러한 권한을 취소하지 않으며 이후에 Cloud Service Mesh를 다시 쉽게 활성화할 수 있게 해줍니다.