Istio on GKE 사용 중지 또는 제거

이 가이드에서는 클러스터에서 Istio on GKE 부가기능을 사용 중지하거나 완전히 제거하는 방법을 보여줍니다.

Istio on GKE 부가기능을 사용 중지하면 클러스터에서 Istio의 부가기능 관리가 사용 중지되지만 클러스터의 Istio 설치 및 구성은 유지됩니다. Istio on GKE 부가기능을 사용 중지하면 Google은 더 이상 클러스터에서 Istio 설치를 관리하지 않습니다. 클러스터에서 Istio의 구성 및 수명 주기를 사용자가 관리해야 합니다. Istio on GKE 부가기능을 사용 중지하려면 Istio on GKE 부가기능 사용 중지 섹션의 안내를 따릅니다.

부가기능을 사용 중지하는 대신 Istio on GKE 부가기능을 완전히 제거할 수 있습니다. Istio on GKE 부가기능을 제거하면 클러스터에서 Istio 및 모든 관련 구성이 완전히 삭제됩니다. Istio on GKE 부가기능을 제거하려면 클러스터에서 Istio 제거 섹션의 안내를 따르세요.

Istio on GKE 부가기능 사용 중지

Google에서 더 이상 Istio 설치를 관리하지 않도록 하려면 Istio on GKE 부가기능을 사용 중지할 수 있습니다. Istio 설치 및 구성은 유지됩니다. 이렇게 하려면 GKE 버전 1.17.17-gke.3100+, 1.18.16-gke.1600+ 또는 1.19.8-gke.1600+ 이상을 실행 중인지 확인합니다. 이전 GKE 버전에서 Istio on GKE 부가기능을 사용 중지하면 Istio(Istio 설치 및 구성)가 완전히 제거되므로 서비스 다운타임이 발생할 수 있습니다.

  1. 다음 명령어를 실행하여 Istio on GKE를 사용 중지합니다.

    gcloud beta container clusters update my-cluster --project=$PROJECT_ID \
      --update-addons=Istio=DISABLED
    

클러스터에서 Istio 제거

Istio on GKE 부가기능을 삭제하는 가장 간단한 방법은 클러스터를 삭제하는 것입니다. 하지만 클러스터에 보존해야 하는 기존 애플리케이션이 있으면, 다음 단계에 따라 Istio를 사용 중지해야 합니다.

  1. 기본 mTLS 모드가 Permissive mTLS로 설정되었는지 확인합니다.
  2. Istio 인그레스 게이트웨이 외부로 트래픽을 전환합니다.
  3. 사이드카 자동 삽입을 사용 중지합니다(사용 설정된 경우).
    kubectl label namespace your-namespace istio-injection=disabled
    
  4. 애플리케이션 Pod를 다시 시작하여(예: 순차적 재시작 사용) Envoy 사이드카를 삭제합니다.
  5. gcloud를 사용하여 Istio 제어 영역을 삭제합니다.
    gcloud beta container clusters update my-cluster --project=$PROJECT_ID \
      --update-addons=Istio=DISABLED
    
  6. IstioOperator CustomResource를 삭제합니다.

    kubectl delete istiooperator -n istio-system istio-1-6-11-gke-0
    

    클러스터 버전에 따라 istio-1-6-11-gke-0을 클러스터에 설치된 CustomResource 이름으로 바꿔야 할 수 있습니다. 다음을 실행하여 이름을 가져올 수 있습니다.

    kubectl get istiooperator -n istio-system\
    
  7. Istio Operator가 설치한 리소스를 삭제할 때까지 몇 분 정도 기다립니다.

  8. istio-system 네임스페이스가 있으면 삭제합니다.

    kubectl delete ns istio-system

  9. 나머지 Istio 클러스터 리소스를 삭제합니다.

    for i in $(kubectl get clusterrole,clusterrolebinding,crd | grep istio | cut -f1 -d' '); do kubectl delete $i; done