Istio 업데이트
관리 추가 기능을 사용하여 설치된 Istio 버전을 업데이트하려면 istioctl을 사용하지 마십시오. 업데이트 시 관리형 Istio 애드온에는 Istio 버전 업데이트도 포함됩니다.
Istio 애드온의 마이너 버전으로 업데이트하기
IBM Cloud는 IBM Cloud Kubernetes Service에서 지원하는 최신 버전의 Istio에 대한 패치 업데이트를 자동으로 롤아웃하여 모든 Istio 컴포넌트를 최신 상태로 유지합니다. 지원되는 버전은 IBM Cloud 에서 테스트하고 IBM Cloud Kubernetes Service 에서 사용 승인을 받았습니다.
시작하기 전에:
마이너 버전을 업데이트할 때 다음 사항에 유의하세요:
-
Istio 추가 기능은 한 번에 한 버전만 수동으로 업데이트할 수 있습니다. Istio 애드온을 두 개 이상의 버전으로 업데이트하려면 수동 업데이트 프로세스를 반복하거나 애드온을 제거한 다음 최신 버전을 설치할 수 있습니다.
-
관리 Istio 추가 기능을 이전 버전으로 되돌릴 수 없습니다. 이전 부 버전으로 되돌리려면 애드온을 제거한 다음 이전 버전을 설치해야 합니다.
-
istio-system네임스페이스의 Istio 제어 컴포넌트를 최신 부 버전으로 업데이트하면 변경이 중단될 수 있습니다. 부 버전 업데이트 중에 발생하는 다음 변경사항을 검토하십시오.- 업데이트가 제어 플레인 팟(Pod)으로 롤아웃되면 팟(Pod)이 다시 작성됩니다. 업데이트가 완료될 때까지 Istio 제어 플레인을 완전히 사용할 수 없습니다.
- Istio 데이터 플레인은 업데이트 중에 계속 작동합니다. 하지만 서비스 메시의 앱에 대한 일부 트래픽이 짧은 시간 동안 인터럽트될 수 있습니다.
istio-ingressgateway로드 밸런서의 외부 IP 주소는 업데이트 중이나 후에 변경되지 않습니다.
Istio 애드온의 부 버전을 업데이트하려면 다음과 같이 하세요:
-
Istio 추가 기능의 현재 버전을 검토하십시오.
kubectl get iop managed-istio -n ibm-operators -o jsonpath='{.metadata.annotations.version}' -
사용 가능한 Istio 추가 기능 버전을 검토하십시오.
ibmcloud ks addon-versions -
Istio 애드온 변경 로그에서 각 버전의 변경 사항을 검토하세요.
-
버전 1.11에서 버전 1.12로 업그레이드 중이고 Istio 컴포넌트가 버전 1.10 이하에서 프로비저닝된 경우:
-
명령을 실행하여 다양한 웹훅 구성의 세부사항을 가져오십시오.
kubectl get mutatingwebhookconfigurations출력 예
NAME WEBHOOKS AGE istio-sidecar-injector 5 32m -
출력에서
istio-sidecar-injector을(를) 찾고 WEBHOOKS 열을 검토하십시오. 5개 이상의 웹훅이 있으면 다음 명령을 실행하여 추가 웹훅을 삭제하십시오.kubectl delete mutatingwebhookconfigurations istio-sidecar-injector && kubectl rollout restart deploy addon-istio-operator -n ibm-operators출력 예
mutatingwebhookconfiguration.admissionregistration.k8s.io "istio-sidecar-injector" deleted -
추가 웹훅이 삭제되었는지 확인하십시오. 음소거 웹훅 구성의 세부사항을 가져오고 네 개의
istio-sidecar-injector웹훅이 있는지 확인하십시오.kubectl get mutatingwebhookconfigurations출력 예
NAME WEBHOOKS AGE istio-sidecar-injector 4 60s -
명령을 실행하여 유효성 검증 웹훅 구성의 세부사항을 가져오십시오.
kubectl get validatingwebhookconfigurations출력 예
NAME WEBHOOKS AGE istio-validator-istio-system 2 66s istiod-istio-system 1 31m -
출력을 검토하십시오.
istiod-istio-system웹훅이 나열되면 다음 명령을 실행하여 삭제하십시오.kubectl delete ValidatingWebhookConfiguration istiod-istio-system출력 예
validatingwebhookconfiguration.admissionregistration.k8s.io "istiod-istio-system" deleted -
istiod-istio-system웹훅이 더 이상 나열되지 않는지 확인하십시오.kubectl get validatingwebhookconfigurations출력 예
NAME WEBHOOKS AGE istio-validator-istio-system 2 2m
-
-
Istio 추가 기능을 업데이트하십시오.
ibmcloud ks cluster addon update istio --version <version> -c <cluster_name_or_ID> -
계속하기 전에 업데이트가 완료되었는지 확인하십시오.
업데이트 프로세스를 완료하는 데 최대 20분이 걸릴 수 있습니다.
-
Istio 추가 기능의 상태가
normal이고 상태가Addon Ready인지 확인하십시오. 상태가updating인 경우 업데이트가 아직 완료되지 않았습니다.ibmcloud ks cluster addon ls --cluster <cluster_name_or_ID> -
istio-system네임스페이스의 컨트롤 플레인 컴포넌트 파드가Running상태인지 확인합니다.kubectl get pods -n istio-systemNAME READY STATUS RESTARTS AGE istio-system istio-egressgateway-6d4667f999-gjh94 1/1 Running 0 61m istio-system istio-egressgateway-6d4667f999-txh56 1/1 Running 0 61m istio-system istio-ingressgateway-7bbf8d885-b9xgp 1/1 Running 0 61m istio-system istio-ingressgateway-7bbf8d885-xhkv6 1/1 Running 0 61m istio-system istiod-5b9b5bfbb7-jvcjz 1/1 Running 0 60m istio-system istiod-5b9b5bfbb7-khcht 1/1 Running 0 60m
-
istioctl 클라이언트 및 사이드카 업데이트
Istio 관리 추가 기능이 업데이트될 때마다 istioctl 클라이언트 및 사용자 앱의 Istio 사이드카를 업데이트하십시오.
예를 들어, IBM Cloud Kubernetes Service를 사용하여 추가 기능의 패치 버전을 자동으로 업데이트하거나 추가 기능의 부 버전을 업데이트할 수 있습니다. 두 경우 모두, 추가 기능의 Istio 버전과 일치하도록 istioctl 클라이언트 및 사용자 앱의 기존 Istio 사이드카를 업데이트하십시오.
-
istioctl클라이언트 및 Istio 추가 기능 제어 플레인의 버전을 가져오십시오.istioctl version --short=false출력 예
client version: version.BuildInfo{Version:"1.11.2"} pilot version: version.BuildInfo{Version:1.23.5} pilot version: version.BuildInfo{Version:1.23.5} data plane version: version.ProxyInfo{ID:"istio-egressgateway-77bf75c5c-vp97p.istio-system", IstioVersion:1.23.5} data plane version: version.ProxyInfo{ID:"istio-egressgateway-77bf75c5c-qkhgm.istio-system", IstioVersion:1.23.5} data plane version: version.ProxyInfo{ID:"istio-ingressgateway-6dcb67b64d-dffhq.istio-system", IstioVersion:1.23.5} data plane version: version.ProxyInfo{ID:"httpbin-74fb669cc6-svc8x.default", IstioVersion:1.23.5} data plane version: version.ProxyInfo{ID:"istio-ingressgateway-6dcb67b64d-cs9r9.istio-system", IstioVersion:1.23.5} ... -
출력에서
client version(istioctl)과 Istio 제어 플레인 컴포넌트의 버전(예:pilot version)을 비교하십시오.client version및 제어 플레인 컴포넌트 버전이 일치하지 않는 경우:-
제어 플레인 컴포넌트와 동일한 버전의
istioctl클라이언트를 다운로드하십시오.curl -L https://istio.io/downloadIstio | ISTIO_VERSION=1.23.5 sh - -
Istio 패키지 디렉토리로 이동하십시오.
cd istio-1.23.5 -
Linux 및 macOS 사용자:
istioctl클라이언트를PATH시스템 변수에 추가하십시오.export PATH=$PWD/bin:$PATH
-
-
1단계의 출력에서 각 데이터 플레인 팟(Pod)에 대해
pilot version을data plane version과 비교하십시오.pilot version과data plane version이 일치하면 추가 업데이트가 필요하지 않습니다.pilot version및data plane version이(가) 일치하지 않으면 이전 버전을 실행하는 데이터 플레인 팟(Pod)에 대한 배치를 다시 시작하십시오. 팟 이름과 네임스페이스는 각 항목에data plane version: version.ProxyInfo{ID:"<pod_name>.<namespace>", IstioVersion:"1.8.4"}(으)로 나열됩니다.
kubectl rollout restart deployment <deployment> -n <namespace>
지원되지 않는 버전의 Istio 애드온에서 업데이트하기
Istio 구성 요소를 IBM Cloud Kubernetes Service 에서 지원하는 최신 패치 버전으로 업데이트하세요.
Istio 애드온에서 커뮤니티 Istio로 마이그레이션하기
관리형 Istio 애드온을 사용하는 대신 커뮤니티 Istio로 마이그레이션할 수 있습니다.
시작하기 전에
- 1.21 이전 버전을 사용 중인 경우 Istio 애드온을 1.21 버전 이상으로 업데이트하세요. 이 업데이트가 중요한 이유는 이 버전에서는 애드온을 비활성화해도 이전 버전에서처럼 사용자 지정 리소스가 제거되지 않기 때문입니다.
- Istio가 더 이상 필요하지 않은 경우, 이 단계를 완료하는 대신 커뮤니티 Istio를 설치하지 않고 애드온을 제거할 수 있습니다.
1단계: 콘솔에서 Istio 애드온 비활성화하기
콘솔 또는 CLI에서 애드온을 비활성화합니다.
-
클러스터 대시보드에서 Istio 애드온을 제거하려는 클러스터의 이름을 클릭합니다.
-
추가 기능 섹션으로 이동하십시오.
-
관리 Istio 카드에서 조치 메뉴 아이콘을 클릭하십시오.
-
설치 제거를 클릭하십시오. 이 클러스터에서는 관리형 Istio 애드온이 비활성화되어 있습니다.
-
관리 Istio 카드에서 설치 제거한 추가 기능이 더 이상 나열되지 않는지 확인하십시오.
1단계: CLI에서 Istio 애드온 비활성화하기
애드온을 비활성화하고 추가 Istio 애드온이 남아 있지 않은지 확인합니다.
istio추가 기능을 사용 안함으로 설정하십시오.ibmcloud ks cluster addon disable istio --cluster <cluster_name_or_ID> -f- 이 클러스터에서 모든 관리 Istio 추가 기능이 사용 안함으로 설정되어 있는지 확인하십시오. 출력에 Istio 추가 기능이 리턴되지 않습니다.
ibmcloud ks cluster addon ls --cluster <cluster_name_or_ID> - 다음 단계로 넘어가기 전에 10분 정도 기다립니다. 이렇게 하면 istio 연산자의 관리를 해제할 시간이 생깁니다.
2단계: Istio 연산자 축소하기
Istio 운영자 배포를 축소합니다.
다음 명령을 실행하십시오.
kubectl scale deployment -n ibm-operators addon-istio-operator --replicas=0
3단계: 리소스 절약
istio-system 네임스페이스에서 만들거나 수정한 모든 리소스와 사용자 정의 리소스 정의(CRD)에 의해 자동으로 생성된 모든 Kubernetes 리소스를 저장합니다.
-
managed-istio-customConfigMap 을 저장하여 문제를 해결하거나 나중에 애드온을 다시 설치하세요.kubectl get cm -n ibm-operators managed-istio-custom -o yaml > Customizations.yaml -
모든 IstioOperator CR(IOP)을 저장합니다.
- IOP 리소스를 나열합니다:
kubectl get iop -A - 나열된 각 IOP 리소스에 대해 파이널라이저를 제거합니다.
managed-istioIOP 사용 예시:kubectl patch -n ibm-operators istiooperator/managed-istio --type json --patch='[ { "op": "remove", "path": "/metadata/finalizers" } ]' - 나열된 각 IOP 리소스에 대해 각각 파일에 저장합니다:
kubectl get iop -n <IOP_namespace> <IOP_name> -o yaml > <IOP_name>.yaml
- IOP 리소스를 나열합니다:
-
다음 단계로 넘어가기 전에 10분 정도 기다립니다.
4단계: IOP 설치 관리자 변경하기
사용자 지정 인그레스 게이트웨이와 같은 모든 Istio 운영자(IOP) 리소스를 삭제합니다.
-
istioctlcli 도구가 필요한 패치 버전에 있는지 확인하세요.istioctl version -
이전 단계에서 저장한 각 IOP 파일에 대해
upgrade명령을 실행합니다.istioctl upgrade -f <filename>.yaml
5단계: Istio 연산자 및 IOP 제거하기
Istio 운영자 배포, 서비스 계정, 클러스터 역할 바인딩, 클러스터 역할 및 모든 IOP를 삭제합니다.
-
다음 명령을 실행하여 istio 운영자 배포를 삭제합니다:
kubectl delete deployment -n ibm-operators addon-istio-operator --ignore-not-found=true kubectl delete serviceaccount -n ibm-operators addon-istio-operator --ignore-not-found=true kubectl delete clusterrolebinding addon-istio-operator --ignore-not-found=true kubectl delete clusterrole addon-istio-operator --ignore-not-found=true -
IOP를 삭제합니다.
- IOP 리소스를 나열합니다:
kubectl get iop -A - 나열된 각 IOP 리소스에 대해 삭제합니다:
kubectl delete IstioOperator <resource_name> -n <namespace>
- IOP 리소스를 나열합니다:
6단계: 제거 ConfigMap
ConfigMap 은 이전에 저장되었으므로 제거할 수 있습니다.
managed-istio-custom ConfigMap 을 제거합니다.
kubectl delete cm -n ibm-operators managed-istio-custom
애드온 제거가 완료되었으며 필요에 따라 커뮤니티 Istio를 계속 사용하고 업그레이드할 수 있습니다.