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
Copy to Clipboard Toggle word wrap

리소스를 생성하거나 나중에 편집하는 동안 이 값을 설정할 수 있습니다. 생성 후 리소스를 편집하는 경우 Istio 컨트롤 플레인을 업데이트하기 전에 변경합니다.

트래픽 중단을 최소화하기 위해 High Availability 모드에서 Istio 리소스를 실행하려면 추가 속성 설정이 필요합니다. 자세한 내용은 "About Istio High Availability"를 참조하십시오.

1.5.2. InPlace 업데이트 전략을 사용하여 설치

인플레이스 업데이트 전략을 사용하여 Istio 컨트롤 플레인, Istio CNI 및 Bookinfo 데모 애플리케이션을 설치할 수 있습니다.

참고

클러스터에 이미 Istio 배포가 포함된 경우 이 설치 프로세스를 건너뛸 수 있습니다.

InPlace 전략을 사용하는 경우 OpenShift Service Mesh Operator에서 생성한 IstioRevision 리소스는 항상 Istio 리소스와 동일한 이름을 사용합니다.

프로세스

  1. 다음 명령을 실행하여 istio-system 네임스페이스를 생성합니다.

    $ oc create ns istio-system
    Copy to Clipboard Toggle word wrap
  2. InPlace 전략을 사용하여 배포된 컨트롤 플레인에 워크로드를 연결합니다.

    1. 다음 명령을 입력하여 모든 워크로드를 자동으로 포함하도록 네임스페이스에 레이블을 지정합니다.

      $ oc label namespace <namespace_name> istio.io/rev=<revision_name>
      Copy to Clipboard Toggle word wrap
    2. Deployment 리소스의 Pod 템플릿을 수정하여 개별 워크로드에 버전 레이블을 적용합니다. 예를 들면 다음과 같습니다.

      apiVersion: apps/v1
      kind: Deployment
      spec:
        template:
          metadata:
            labels:
              istio.io/rev: <revision_name>
      Copy to Clipboard Toggle word wrap
  3. 버전 이름이 기본값 인 경우 다음 명령을 실행하여 워크로드를 버전에 연결합니다. 다음 예제에서는 istio-injection: enabled 라벨을 사용하여 네임스페이스에 레이블을 지정합니다.

    $ oc label namespace <namespace_name> istio-injection=enabled
    Copy to Clipboard Toggle word wrap
  4. InPlace 업데이트 전략을 사용하여 Istio 컨트롤 플레인을 배포합니다. 다음 예제 구성은 istio-system 네임스페이스에 default 라는 Istio 리소스를 생성합니다.

    apiVersion: sailoperator.io/v1
    kind: Istio
    metadata:
      name: default
    spec:
      namespace: istio-system
      version: v1.24.3
      updateStrategy:
        type: InPlace
    Copy to Clipboard Toggle word wrap
  5. 원하는 버전으로 Istio CNI 플러그인을 설치합니다. 다음 예제 구성은 istio-cni 네임스페이스에 default 라는 IstioCNI 리소스를 생성합니다.

    apiVersion: sailoperator.io/v1
    kind: IstioCNI
    metadata:
      name: default
    spec:
      version: v1.24.3
      namespace: istio-cni
    Copy to Clipboard Toggle word wrap
  6. 클러스터에서 실행되도록 애플리케이션 워크로드를 구성합니다. 다음 예제에서는 bookinfo 네임스페이스에 info 애플리케이션을 배포합니다.

    1. 다음 명령을 실행하여 info 네임스페이스를 생성합니다.

      $ oc create ns info
      Copy to Clipboard Toggle word wrap
    2. 다음 명령을 실행하여 사이드카 삽입을 활성화하려면 info 네임스페이스에 레이블을 지정합니다.

      $ oc label namespace info istio-injection=enabled
      Copy to Clipboard Toggle word wrap
    3. 다음 명령을 실행하여 bookinfo 네임스페이스에 정보 Pod를 설치합니다.

      $ 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 Toggle word wrap
  7. 다음 명령을 실행하여 Istio 리소스를 검토합니다.

    $ oc get istio -n istio-system
    Copy to Clipboard Toggle word wrap

    출력 예

    NAME      REVISIONS   READY   IN USE   ACTIVE REVISION   STATUS    VERSION   AGE
    default   1           1       1        default           Healthy   v1.24.3   115s
    Copy to Clipboard Toggle word wrap

    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 네임스페이스에 배포됩니다.

프로세스

  1. Istio 리소스의 버전을 변경합니다. 예를 들어 Istio 1.24.4 로 업데이트하려면 다음 명령을 실행하여 spec.version 필드를 v1.24.4 로 설정합니다.

    $ oc patch istio default --type='merge' -p '{"spec":{"version":"v1.24.4"}}'
    Copy to Clipboard Toggle word wrap

    Istio CR의 버전 업데이트

    kind: Istio
    spec:
      version: v1.24.4
      updateStrategy:
        type: InPlace
    Copy to Clipboard Toggle word wrap

    Service Mesh Operator는 이전 버전의 컨트롤 플레인을 대체하는 새 버전의 컨트롤 플레인을 배포합니다. 사이드카는 새 컨트롤 플레인에 자동으로 다시 연결됩니다.

  2. 다음 명령을 실행하여 컨트롤 플레인의 새 버전이 준비되었는지 확인합니다.

    $ oc get istio
    Copy to Clipboard Toggle word wrap

    출력 예

    NAME      REVISIONS   READY   IN USE   ACTIVE REVISION   STATUS    VERSION   AGE
    default   1           1       1        default           Healthy   v1.24.4   4m50s
    Copy to Clipboard Toggle word wrap

  3. 다음 명령을 실행하여 새 버전의 사이드카가 삽입되도록 애플리케이션 워크로드를 다시 시작합니다.

    $ oc rollout restart deployment -n info
    Copy to Clipboard Toggle word wrap

검증

  1. 다음 명령을 입력하여 새 버전의 사이드카가 실행 중인지 확인합니다.

    $ istioctl proxy-status
    Copy to Clipboard Toggle word wrap

    출력 예

    NAME                                                    CLUSTER        CDS                LDS                EDS                RDS                ECDS        ISTIOD                                     VERSION
    details-v1-7d775cb4f6-5t9zm.info                    Kubernetes     SYNCED (2m25s)     SYNCED (2m25s)     SYNCED (2m17s)     SYNCED (2m25s)     IGNORED     istiod-default-v1-24-4-c98fd9675-r7bfw     1.24.4
    productpage-v1-7c4b6b857-mxrw6.info                 Kubernetes     SYNCED (2m35s)     SYNCED (2m35s)     SYNCED (2m17s)     SYNCED (2m35s)     IGNORED     istiod-default-v1-24-4-c98fd9675-r7bfw     1.24.4
    ratings-v1-5b896f8544-r552l.info                    Kubernetes     SYNCED (2m21s)     SYNCED (2m21s)     SYNCED (2m17s)     SYNCED (2m21s)     IGNORED     istiod-default-v1-24-4-c98fd9675-r7bfw     1.24.4
    reviews-v1-746f96c9d4-9pw8k.info                    Kubernetes     SYNCED (2m17s)     SYNCED (2m17s)     SYNCED (2m17s)     SYNCED (2m17s)     IGNORED     istiod-default-v1-24-4-c98fd9675-r7bfw     1.24.4
    reviews-v2-97bdf5876-4mzx5.info                     Kubernetes     SYNCED (2m35s)     SYNCED (2m35s)     SYNCED (2m17s)     SYNCED (2m35s)     IGNORED     istiod-default-v1-24-4-c98fd9675-r7bfw     1.24.4
    reviews-v3-77d9db6844-djgjk.info                    Kubernetes     SYNCED (2m19s)     SYNCED (2m19s)     SYNCED (2m17s)     SYNCED (2m19s)     IGNORED     istiod-default-v1-24-4-c98fd9675-r7bfw     1.24.4
    Copy to Clipboard Toggle word wrap

    VERSION 열이 새 컨트롤 플레인 버전과 일치해야 합니다.

맨 위로 이동
Red Hat logoGithubredditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

Red Hat을 사용하는 고객은 신뢰할 수 있는 콘텐츠가 포함된 제품과 서비스를 통해 혁신하고 목표를 달성할 수 있습니다. 최신 업데이트를 확인하세요.

보다 포괄적 수용을 위한 오픈 소스 용어 교체

Red Hat은 코드, 문서, 웹 속성에서 문제가 있는 언어를 교체하기 위해 최선을 다하고 있습니다. 자세한 내용은 다음을 참조하세요.Red Hat 블로그.

Red Hat 소개

Red Hat은 기업이 핵심 데이터 센터에서 네트워크 에지에 이르기까지 플랫폼과 환경 전반에서 더 쉽게 작업할 수 있도록 강화된 솔루션을 제공합니다.

Theme

© 2025 Red Hat