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-systemCopy 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=enabledCopy 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 infoCopy to Clipboard Copied! Toggle word wrap Toggle overflow 다음 명령을 실행하여 사이드카 삽입을 활성화하려면
info네임스페이스에 레이블을 지정합니다.oc label namespace info istio-injection=enabled
$ oc label namespace info istio-injection=enabledCopy 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 bookinfoCopy to Clipboard Copied! Toggle word wrap Toggle overflow
다음 명령을 실행하여
Istio리소스를 검토합니다.oc get istio -n istio-system
$ oc get istio -n istio-systemCopy 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 115sCopy 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: InPlacekind: Istio spec: version: v1.24.4 updateStrategy: type: InPlaceCopy to Clipboard Copied! Toggle word wrap Toggle overflow Service Mesh Operator는 이전 버전의 컨트롤 플레인을 대체하는 새 버전의 컨트롤 플레인을 배포합니다. 사이드카는 새 컨트롤 플레인에 자동으로 다시 연결됩니다.
다음 명령을 실행하여 컨트롤 플레인의 새 버전이 준비되었는지 확인합니다.
oc get istio
$ oc get istioCopy 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 4m50sCopy to Clipboard Copied! Toggle word wrap Toggle overflow 다음 명령을 실행하여 새 버전의 사이드카가 삽입되도록 애플리케이션 워크로드를 다시 시작합니다.
oc rollout restart deployment -n info
$ oc rollout restart deployment -n infoCopy to Clipboard Copied! Toggle word wrap Toggle overflow
검증
다음 명령을 입력하여 새 버전의 사이드카가 실행 중인지 확인합니다.
istioctl proxy-status
$ istioctl proxy-statusCopy to Clipboard Copied! Toggle word wrap Toggle overflow 출력 예
Copy to Clipboard Copied! Toggle word wrap Toggle overflow VERSION열이 새 컨트롤 플레인 버전과 일치해야 합니다.