4장. Istio CNI 업데이트
Istio CNI(Container Network Interface)의 업데이트 절차를 검토합니다. 업그레이드 중에 CNI 플러그인이 OpenShift Service Mesh Control Plane과 호환되는지 확인합니다.
4.1. Istio CNI 업데이트 프로세스 정보 링크 복사링크가 클립보드에 복사되었습니다!
Istio CNI(Container Network Interface) 업데이트 프로세스에서 인플레이스 업데이트를 사용합니다. IstioCNI 리소스가 변경되면 데몬 세트에서 기존 istio-cni-node Pod를 지정된 버전의 CNI 플러그인으로 자동으로 대체합니다.
다음 필드를 사용하여 버전 업데이트를 관리할 수 있습니다.
spec.version-
설치할 CNI 플러그인 버전을 정의합니다.
vX.Y.Z형식으로 값을 지정합니다. 여기서X.Y.Z는 필수 버전을 나타냅니다. 예를 들어v1.27.3을 사용하여 CNI 플러그인 버전1.27.3을 설치합니다.
CNI 플러그인을 업데이트하려면 대상 버전으로 spec.version 필드를 변경합니다. IstioCNI 리소스에는 istio-cni 차트의 구성 옵션을 노출하는 values 필드도 포함되어 있습니다.
앰비언트 모드에서 Istio CNI 구성 요소는 트래픽 리디렉션을 관리합니다. RevisionBased 업그레이드 중에 구성 요소는 컨트롤 플레인의 이전 버전과 호환되는 상태로 유지되며 마이그레이션 전체에서 이전 컨트롤 플레인과 새 컨트롤 플레인의 트래픽 리디렉션을 계속 관리합니다.
Istio CNI는 동일한 마이너 버전 또는 하나의 마이너 버전을 실행하는 컨트롤 플레인과 호환됩니다.
Istio 컨트롤 플레인을 업데이트한 후 Istio CNI 구성 요소를 업데이트합니다. OpenShift Service Mesh Operator는 새 버전의 CNI 플러그인을 배포하여 기존 플러그인을 대체합니다. istio-cni-node DaemonSet Pod는 롤링 업데이트 전략을 사용하여 업데이트되어 전체 업데이트 프로세스 중에 트래픽 리디렉션 규칙이 활성 상태로 유지됩니다.
4.1.1. Istio CNI 리소스 버전 업데이트 링크 복사링크가 클립보드에 복사되었습니다!
리소스의 버전을 변경하여 Istio CNI(Container Network Interface) 리소스 버전을 업데이트할 수 있습니다. 그런 다음 Service Mesh Operator는 이전 버전의 CNI 플러그인을 대체하는 새 버전의 CNI 플러그인을 배포합니다. istio-cni-node Pod는 새 CNI 플러그인에 자동으로 다시 연결됩니다.
사전 요구 사항
-
cluster-admin역할의 사용자로 OpenShift Container Platform에 로그인되어 있습니다. - Red Hat OpenShift Service Mesh Operator를 설치하고 Istio를 배포했습니다.
-
필수 버전으로 Istio CNI 플러그인을 설치했습니다. 다음 예에서
default라는IstioCNI리소스는istio-cni네임스페이스에 배포됩니다. -
Istio 컨트롤 플레인을 필요한 버전(
플레이스 전략의 경우)으로 업데이트하거나 새 컨트롤 플레인 버전(버전)을 생성했습니다.기반전략의 경우
프로세스
Istio리소스의 버전을 변경합니다. 예를 들어 Istio1.27.3으로 업데이트하려면 다음 명령을 실행하여spec.version필드를1.27.3으로 설정합니다.oc patch istiocni default -n istio-cni --type='merge' -p '{"spec":{"version":"v1.27.3"}}'$ oc patch istiocni default -n istio-cni --type='merge' -p '{"spec":{"version":"v1.27.3"}}'Copy to Clipboard Copied! Toggle word wrap Toggle overflow 다음 명령을 실행하여
IstioCNIDaemonSet이 업데이트 후Ready상태에 도달할 때까지 기다립니다.oc wait --for=condition=Ready istiocnis/default --timeout=5m
$ oc wait --for=condition=Ready istiocnis/default --timeout=5mCopy to Clipboard Copied! Toggle word wrap Toggle overflow 다음 명령을 실행하여 새 버전의 CNI 플러그인이 준비되었는지 확인합니다.
oc get istiocni default
$ oc get istiocni defaultCopy to Clipboard Copied! Toggle word wrap Toggle overflow 다음 예와 유사한 출력이 표시되어야 합니다.
NAME READY STATUS VERSION AGE default True Healthy v{istio-latest} 7d1hNAME READY STATUS VERSION AGE default True Healthy v{istio-latest} 7d1hCopy to Clipboard Copied! Toggle word wrap Toggle overflow 다음 명령을 실행하여 Pod의 상태를 확인합니다.
oc get pods -n istio-cni
$ oc get pods -n istio-cniCopy to Clipboard Copied! Toggle word wrap Toggle overflow 다음 예와 유사한 출력이 표시되어야 합니다.
NAME READY STATUS RESTARTS AGE istio-cni-node-abc12 1/1 Running 0 3m istio-cni-node-def34 1/1 Running 0 3m istio-cni-node-ghi56 1/1 Running 0 3m
NAME READY STATUS RESTARTS AGE istio-cni-node-abc12 1/1 Running 0 3m istio-cni-node-def34 1/1 Running 0 3m istio-cni-node-ghi56 1/1 Running 0 3mCopy to Clipboard Copied! Toggle word wrap Toggle overflow
RevisionBased 전략을 사용하면 Istio CNI 구성 요소는 여러 컨트롤 플레인 버전과 호환되는 상태로 유지됩니다. 마이그레이션 전체에서 이전 컨트롤 플레인과 새 컨트롤 플레인 모두에 대한 트래픽 리디렉션을 계속 관리합니다. Istio CNI는 동일한 마이너 버전 또는 하나의 마이너 버전을 실행하는 컨트롤 플레인과 호환됩니다.