1.5. InPlace 전략 정보
InPlace
업데이트 전략은 한 번에 하나의 컨트롤 플레인 버전만 실행합니다. 업데이트 중에 모든 워크로드가 새 컨트롤 플레인 버전에 즉시 연결됩니다. 사이드카와 컨트롤 플레인 간의 호환성을 유지하기 위해 한 번에 하나의 마이너 버전만 업그레이드할 수 있습니다.
InPlace
전략은 기존 Istio 컨트롤 플레인을 업데이트하고 다시 시작합니다. 이 프로세스 중에는 컨트롤 플레인의 인스턴스가 하나만 있으므로 워크로드를 새 컨트롤 플레인 인스턴스로 이동할 필요가 없습니다. 업데이트를 완료하려면 애플리케이션 워크로드 및 게이트웨이를 다시 시작하여 Envoy 프록시를 새로 고칩니다.
InPlace
전략은 단순성과 효율성을 제공하지만 컨트롤 플레인을 다시 시작하는 동안 워크로드 Pod를 업데이트, 재시작 또는 스케일링하면 애플리케이션 트래픽 중단이 약간의 가능성이 있습니다. Istio 컨트롤 플레인(istiod)의 여러 복제본을 실행하여 이 위험을 완화할 수 있습니다.
1.5.1. InPlace 전략 선택 링크 복사링크가 클립보드에 복사되었습니다!
InPlace
전략을 선택하려면 Istio 리소스의 spec.updateStrategy.type
값을 InPlace
로 설정합니다.
InPlace 업데이트 전략을 선택하는 사양의 예
kind: Istio spec: updateStrategy: type: InPlace
kind: Istio
spec:
updateStrategy:
type: InPlace
리소스를 생성하거나 나중에 편집하는 동안 이 값을 설정할 수 있습니다. 생성 후 리소스를 편집하는 경우 Istio 컨트롤 플레인을 업데이트하기 전에 변경합니다.
트래픽 중단을 최소화하기 위해 High Availability 모드에서 Istio 리소스를 실행하려면 추가 속성 설정이 필요합니다. 자세한 내용은 "About Istio High Availability"를 참조하십시오.
1.5.2. InPlace 업데이트 전략을 사용하여 설치 링크 복사링크가 클립보드에 복사되었습니다!
인플레이스
업데이트 전략을 사용하여 Istio 컨트롤 플레인, Istio CNI 및 Bookinfo 데모 애플리케이션을 설치할 수 있습니다.
클러스터에 이미 Istio 배포가 포함된 경우 이 설치 프로세스를 건너뛸 수 있습니다.
InPlace
전략을 사용하는 경우 OpenShift Service Mesh Operator에서 생성한 IstioRevision
리소스는 항상 Istio
리소스와 동일한 이름을 사용합니다.
프로세스
다음 명령을 실행하여
istio-system
네임스페이스를 생성합니다.oc create ns istio-system
$ oc create ns istio-system
Copy to Clipboard Copied! Toggle word wrap Toggle overflow InPlace
전략을 사용하여 배포된 컨트롤 플레인에 워크로드를 연결합니다.다음 명령을 입력하여 모든 워크로드를 자동으로 포함하도록 네임스페이스에 레이블을 지정합니다.
oc label namespace <namespace_name> istio.io/rev=<revision_name>
$ oc label namespace <namespace_name> istio.io/rev=<revision_name>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Deployment
리소스의 Pod 템플릿을 수정하여 개별 워크로드에 버전 레이블을 적용합니다. 예를 들면 다음과 같습니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow
버전 이름이
기본값
인 경우 다음 명령을 실행하여 워크로드를 버전에 연결합니다. 다음 예제에서는istio-injection: enabled
라벨을 사용하여 네임스페이스에 레이블을 지정합니다.oc label namespace <namespace_name> istio-injection=enabled
$ oc label namespace <namespace_name> istio-injection=enabled
Copy to Clipboard Copied! Toggle word wrap Toggle overflow InPlace
업데이트 전략을 사용하여 Istio 컨트롤 플레인을 배포합니다. 다음 예제 구성은istio-system
네임스페이스에default
라는Istio
리소스를 생성합니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow 원하는 버전으로 Istio CNI 플러그인을 설치합니다. 다음 예제 구성은
istio-cni
네임스페이스에default
라는IstioCNI
리소스를 생성합니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow 클러스터에서 실행되도록 애플리케이션 워크로드를 구성합니다. 다음 예제에서는
bookinfo
네임스페이스에info
애플리케이션을 배포합니다.다음 명령을 실행하여
info
네임스페이스를 생성합니다.oc create ns info
$ oc create ns info
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 다음 명령을 실행하여 사이드카 삽입을 활성화하려면
info
네임스페이스에 레이블을 지정합니다.oc label namespace info istio-injection=enabled
$ oc label namespace info istio-injection=enabled
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 다음 명령을 실행하여
bookinfo
네임스페이스에정보
Pod를 설치합니다.oc apply -f https://raw.githubusercontent.com/openshift-service-mesh/istio/release-1.24/samples/info/platform/kube/bookinfo.yaml -n bookinfo
$ oc apply -f https://raw.githubusercontent.com/openshift-service-mesh/istio/release-1.24/samples/info/platform/kube/bookinfo.yaml -n bookinfo
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
다음 명령을 실행하여
Istio
리소스를 검토합니다.oc get istio -n istio-system
$ oc get istio -n istio-system
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 출력 예
NAME REVISIONS READY IN USE ACTIVE REVISION STATUS VERSION AGE default 1 1 1 default Healthy v1.24.3 115s
NAME REVISIONS READY IN USE ACTIVE REVISION STATUS VERSION AGE default 1 1 1 default Healthy v1.24.3 115s
Copy to Clipboard Copied! Toggle word wrap Toggle overflow namespace 레이블과 삽입된 프록시가 모두
IstioRevision
리소스를 참조하므로IN USE
필드에1
이 표시됩니다.
1.5.3. InPlace 전략을 사용하여 Istio 컨트롤 플레인 업데이트 링크 복사링크가 클립보드에 복사되었습니다!
InPlace
전략을 사용하여 Istio를 업데이트할 때 한 번에 하나의 마이너 릴리스로만 버전을 늘릴 수 있습니다. 마이너 버전을 두 개 이상 업데이트하려면 업데이트 후 버전을 늘리고 워크로드를 다시 시작해야 합니다. 워크로드를 다시 시작하면 사이드카와 컨트롤 플레인 버전 간의 호환성이 보장됩니다. 모든 워크로드를 다시 시작한 후 업데이트 프로세스가 완료됩니다.
사전 요구 사항
-
cluster-admin
역할의 사용자로 OpenShift Container Platform에 로그인되어 있습니다. - Red Hat OpenShift Service Mesh Operator를 설치하고 Istio를 배포했습니다.
-
로컬 시스템에
istioctl
을 설치했습니다. -
InPlace
업데이트 전략을 사용하도록 Istio 컨트롤 플레인을 구성했습니다. 이 예에서default
라는Istio
리소스는istio-system
네임스페이스에 배포됩니다. -
원하는 버전으로 Istio CNI 플러그인을 설치했습니다. 이 예에서
default
라는IstioCNI
리소스는istio-cni
네임스페이스에 배포됩니다. -
사이드카 삽입을 활성화하려면
info
네임스페이스에 레이블이 지정되어 있습니다. -
클러스터에서 애플리케이션 워크로드가 실행되고 있어야 합니다. 이 예제에서
info
애플리케이션은bookinfo
네임스페이스에 배포됩니다.
프로세스
Istio
리소스의 버전을 변경합니다. 예를 들어 Istio1.24.4
로 업데이트하려면 다음 명령을 실행하여spec.version
필드를v1.24.4
로 설정합니다.oc patch istio default --type='merge' -p '{"spec":{"version":"v1.24.4"}}'
$ oc patch istio default --type='merge' -p '{"spec":{"version":"v1.24.4"}}'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Istio CR의 버전 업데이트
kind: Istio spec: version: v1.24.4 updateStrategy: type: InPlace
kind: Istio spec: version: v1.24.4 updateStrategy: type: InPlace
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Service Mesh Operator는 이전 버전의 컨트롤 플레인을 대체하는 새 버전의 컨트롤 플레인을 배포합니다. 사이드카는 새 컨트롤 플레인에 자동으로 다시 연결됩니다.
다음 명령을 실행하여 컨트롤 플레인의 새 버전이 준비되었는지 확인합니다.
oc get istio
$ oc get istio
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 출력 예
NAME REVISIONS READY IN USE ACTIVE REVISION STATUS VERSION AGE default 1 1 1 default Healthy v1.24.4 4m50s
NAME REVISIONS READY IN USE ACTIVE REVISION STATUS VERSION AGE default 1 1 1 default Healthy v1.24.4 4m50s
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 다음 명령을 실행하여 새 버전의 사이드카가 삽입되도록 애플리케이션 워크로드를 다시 시작합니다.
oc rollout restart deployment -n info
$ oc rollout restart deployment -n info
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
검증
다음 명령을 입력하여 새 버전의 사이드카가 실행 중인지 확인합니다.
istioctl proxy-status
$ istioctl proxy-status
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 출력 예
Copy to Clipboard Copied! Toggle word wrap Toggle overflow VERSION
열이 새 컨트롤 플레인 버전과 일치해야 합니다.