1.3. 버전 기반 전략 정보
일반적으로 RevisionBased
전략을 사용하여 수행되는 업데이트는 컨트롤 플레인의 두 가지 버전을 실행합니다. 이 기능을 사용하면 이전 컨트롤 플레인에서 새 컨트롤 플레인으로 워크로드를 점진적으로 마이그레이션하여 카나리아 업그레이드를 수행할 수 있습니다. RevisionBased
전략을 사용하면 두 개 이상의 마이너 버전으로 업데이트할 수 있습니다.
1.3.1. 버전 기반 전략 선택
RevisionBased
전략을 사용하여 Istio를 배포하려면 다음 spec.updateStrategy 값을 사용하여 Istio 리소스를 생성합니다.
RevisionBased 전략을 선택하는 사양 예
kind: Istio spec: version: 1.20.0 updateStrategy: RevisionBased
Istio 리소스에 대한 전략을 선택한 후 Operator는 <istio 리소스 name>-<version>이라는 이름으로 새 IstioRevision
리소스를 생성합니다.
1.3.2. RevisionBased 전략을 사용하여 컨트롤 플레인에 워크로드를 연결합니다.
RevisionBased
전략을 사용하여 배포된 컨트롤 플레인에 워크로드를 연결하려면 istio.io/rev 네임스페이스
레이블을 IstioRevision
의 이름으로 설정해야 합니다. 또는 워크로드 Pod에 라벨을 적용할 수 있습니다.
1.3.3. 버전 기반 업데이트 수행
RevisionBased
전략을 사용하여 Istio를 업데이트할 때 기존 사이드카가 컨트롤 플레인의 새 버전에 자동으로 연결되지 않기 때문에 한 번에 두 개 이상의 마이너 버전으로 늘릴 수 있습니다. 대신 워크로드를 새 컨트롤 플레인으로 수동으로 이동해야 합니다.
사전 요구 사항
- Red Hat OpenShift Service Mesh Operator를 설치하고 Istio를 배포했습니다.
프로세스
Istio 리소스의 버전을 변경합니다.
kind: Istio spec: version: 1.20.2 updateStrategy: type: RevisionBased
Service Mesh Operator는 이전 버전의 컨트롤 플레인과 함께 새 버전의 컨트롤 플레인을 배포합니다. 사이드카는 이전 컨트롤 플레인에 연결된 상태로 유지됩니다.
컨트롤 플레인의 두 버전이 모두 실행 중이고 준비되었는지 확인합니다.
$ oc get istiorevisions
-
애플리케이션 네임스페이스의
istio.io/rev
레이블을 업데이트하거나 Pod를 새 컨트롤 플레인의 버전 이름으로 업데이트하여 워크로드를 새 컨트롤 플레인으로 이동합니다. 새 버전의 사이드카가 삽입되도록 애플리케이션 워크로드를 다시 시작합니다.
$ oc rollout restart <deployment>