1.11.
1.11.1.
1.11.1.1.
1.11.1.2.
- 중요
1.11.2.
1.11.2.1.
1.11.3.
OLM(Operator Lifecycle Manager)은 클러스터에서 Operator의 설치, 업그레이드, RBAC(역할 기반 액세스 제어)를 제어합니다.
자동 |
|
|
수동 |
|
|
1.11.4.
1.11.4.1.
1.11.4.2.
1.11.4.3.
아키텍처 변경
An error occurred admission webhook smcp.validation.maistra.io denied the request: [support for policy.type "Mixer" and policy.Mixer options have been removed in v2.1, please use another alternative, support for telemetry.type "Mixer" and telemetry.Mixer options have been removed in v2.1, please use another alternative]”
예를 들면 다음과 같습니다.
apiVersion: maistra.io/v2 kind: ServiceMeshControlPlane spec: policy: type: Istiod telemetry: type: Istiod version: v2.3
동작 변경
1.11.4.4.
사전 요구 사항
절차
ServiceMeshControlPlane
리소스가 포함된 프로젝트로 전환합니다.$ oc project istio-system
다음 명령을 실행하여
ServiceMeshControlPlane
리소스를 v2 리소스로 확인합니다.$ oc get smcp -o yaml
작은 정보
예를 들면 다음과 같습니다.
apiVersion: maistra.io/v2 kind: ServiceMeshControlPlane metadata: name: basic spec: version: v2.3
-
Operators
설치된 Operators를 클릭합니다. - 저장을 클릭합니다.
-
Operators
1.11.4.5.
버전 1.1에서 2.0으로 업그레이드하려면 워크로드와 애플리케이션을 새 버전을 실행하는 Red Hat OpenShift Service Mesh의 새 인스턴스로 마이그레이션하는 수동 단계가 필요합니다.
사전 요구 사항
- Red Hat OpenShift Service Mesh 버전 2.0 operator가 있어야 합니다. 자동 업그레이드 경로를 선택한 경우 Operator는 최신 정보를 자동으로 다운로드합니다. 하지만 Red Hat OpenShift Service Mesh 버전 2.0에서 기능을 사용하려면 몇 가지 단계를 거쳐야 합니다.
1.11.4.5.1. Red Hat OpenShift Service Mesh 업그레이드
Red Hat OpenShift Service Mesh를 업그레이드하려면 새 네임스페이스에 Red Hat OpenShift Service Mesh ServiceMeshControlPlane
v2 리소스 인스턴스를 생성해야 합니다. 구성되면 이전 메시에서 새로운 서비스 메시로 마이크로 서비스 애플리케이션과 워크로드를 이동하십시오.
프로세스
v1
ServiceMeshControlPlane
리소스 구성을 점검하여 유효한지 확인합니다.다음 명령을 실행하여
ServiceMeshControlPlane
리소스를 v2 리소스로 확인합니다.$ oc get smcp -o yaml
-
유효하지 않은 필드에 대한 정보는 출력의
spec.techPreview.errored.message
필드를 확인합니다. - v1 리소스에 유효하지 않은 필드가 있으면 리소스가 조정되지 않고 v2 리소스로 편집할 수 없습니다. v2 필드에 대한 모든 업데이트는 원래 v1 설정으로 덮어씁니다. 유효하지 않은 필드를 수정하려면 리소스의 v1 버전을 교체, 패치 또는 편집할 수 있습니다. 또한 수정하지 않고 리소스를 삭제할 수도 있습니다. 리소스가 수정된 후 조정할 수 있으며, v2 버전의 리소스를 수정하거나 볼 수 있습니다.
파일을 편집하여 리소스를 수정하려면
oc get
를 사용하여 리소스를 검색하고, 로컬로 텍스트 파일을 편집한 다음, 편집한 파일로 리소스를 교체합니다.$ oc get smcp.v1.maistra.io <smcp_name> > smcp-resource.yaml #Edit the smcp-resource.yaml file. $ oc replace -f smcp-resource.yaml
패치를 사용하여 리소스를 수정하려면
oc patch
를 사용합니다.$ oc patch smcp.v1.maistra.io <smcp_name> --type json --patch '[{"op": "replace","path":"/spec/path/to/bad/setting","value":"corrected-value"}]'
명령줄 도구로 리소스를 수정하려면
oc edit
를 사용합니다.$ oc edit smcp.v1.maistra.io <smcp_name>
ServiceMeshControlPlane
리소스가 포함된 프로젝트로 전환합니다.$ oc project istio-system
다음 명령을 입력하여 현재 구성을 검색할 수 있습니다. <smcp_name>은
ServiceMeshControlPlane
리소스의 메타데이터에 지정됩니다(예:basic-install
또는full-install
).$ oc get servicemeshcontrolplanes.v1.maistra.io <smcp_name> -o yaml > <smcp_name>.v1.yaml
ServiceMeshControlPlane
을 구성에 대한 정보를 시작점으로 포함하는 v2 컨트롤 플레인 버전으로 변환합니다.$ oc get smcp <smcp_name> -o yaml > <smcp_name>.v2.yaml
프로젝트를 생성합니다. 또는 CLI에서 이 명령을 실행할 수 있습니다.
$ oc new-project istio-system-upgrade
-
v2
ServiceMeshControlPlane
의metadata.namespace
필드를 새 프로젝트 이름으로 업데이트합니다. 이 예제에서는istio-system-upgrade
를 사용합니다. -
1.1에서 2.0으로
version
필드를 업데이트하거나 v2ServiceMeshControlPlane
에서 제거합니다. 새 네임스페이스에서
ServiceMeshControlPlane
을 생성합니다. 명령줄에서 다음 명령을 실행하여 검색한ServiceMeshControlPlane
의 v2 버전을 사용하여 컨트롤 플레인을 배포합니다. 이 예제에서 ‘<smcp_name.v2>’를 파일 경로로 바꿉니다.$ oc create -n istio-system-upgrade -f <smcp_name>.v2.yaml
그런 다음, 방금 입력한 프로젝트 이름을 선택합니다.
-
Operators
설치된 Operator를 클릭합니다. - ServiceMeshControlPlane 만들기를 클릭합니다.
-
YAML 보기를 선택하고, 검색한 YAML 파일의 텍스트를 필드에 붙여넣습니다.
apiVersion
필드가 maistra.io/v2
로 설정되어 있는지 확인하고 새 네임스페이스를 사용하도록metadata.namespace
필드를 수정합니다(예:istio-system-upgrade
). - 생성을 클릭합니다.
-
Operators
1.11.4.5.2. 2.0 ServiceMeshControlPlane 구성
Red Hat OpenShift Service Mesh 버전 2.0에서 ServiceMeshControlPlane
리소스가 변경되었습니다. ServiceMeshControlPlane
리소스의 v2 버전을 생성한 후 새 기능을 활용하고 배포에 적합하게 수정합니다. ServiceMeshControlPlane
리소스를 수정할 때 Red Hat OpenShift Service Mesh 2.0의 사양 및 동작에 대해 다음과 같은 변경 사항을 고려하십시오. 또한 사용하는 기능에 대한 새로운 정보는 Red Hat OpenShift Service Mesh 2.0 제품 문서를 참조하십시오. v2 리소스는 Red Hat OpenShift Service Mesh 2.0 설치에 사용해야 합니다.
1.11.4.5.2.1. 아키텍처 변경
이전 버전에서 사용하는 아키텍처 단위는 Istiod로 교체되었습니다.
Mixer는 더 이상 컨트롤 플레인 구성 요소로 지원되지 않지만, Mixer 정책 및 Telemetry 플러그인은 이제 Istiod의 WASM 확장을 통해 지원됩니다. 레거시 Mixer 플러그인을 통합해야 하는 경우 정책 및 Telemetry에 대해 Mixer를 활성화할 수 있습니다.
SDS(Secret Discovery Service)는 Istiod에서 직접 사이드카에 인증서와 키를 배포하는 데 사용됩니다. Red Hat OpenShift Service Mesh 버전 1.1에서는 Citadel에 의해 시크릿이 생성되었으며, 이는 프록시가 클라이언트 인증서와 키를 검색하는 데 사용되었습니다.
1.11.4.5.2.2. 주석 변경
v2.0에서는 다음과 같은 주석이 더 이상 지원되지 않습니다.
-
sidecar.maistra.io/proxyCPULimit
은sidecar.istio.io/proxyCPULimit
로 교체되었습니다. 워크로드에서sidecar.maistra.io
주석을 사용 중인 경우 대신 동등한sidecar.istio.io
를 사용하도록 해당 워크로드를 수정해야 합니다. -
sidecar.maistra.io/proxyMemoryLimit
가sidecar.istio.io/proxyMemoryLimit
로 교체됨 -
sidecar.istio.io/discoveryAddress
는 더 이상 지원되지 않습니다. 또한 기본 검색 주소는pilot.<control_plane_namespace>.svc:15010
(또는 mtls가 활성화된 경우 포트 15011)에서istiod-<smcp_name>.<control_plane_namespace>.svc:15012
로 이동했습니다. -
상태 포트는 더 이상 구성할 수 없으며 15021로 하드 코딩됩니다. 상태 포트를
0
으로 설정하여 준비 상태 점검을 비활성화할 수 있습니다. - Kubernetes 시크릿 리소스는 더 이상 사이드카에 대한 클라이언트 인증서를 배포하는 데 사용되지 않습니다. 인증서는 이제 Istiod의 SDS 서비스를 통해 배포됩니다.
1.11.4.5.2.3. 동작 변경
Red Hat OpenShift Service Mesh 2.0의 일부 기능은 이전 버전과 다르게 작동합니다.
-
게이트웨이의 준비 상태 포트는
15020
에서15021
로 이동했습니다. - 대상 호스트 가시성에는 VirtualService 및 ServiceEntry 리소스가 포함됩니다. 사이드카 리소스를 통해 적용된 모든 제한을 포함합니다.
- 자동 상호 TLS는 기본적으로 활성화되어 있습니다. 프록시 간 통신은 글로벌 PeerAuthentication 정책에 관계없이 mTLS를 사용하도록 자동 구성됩니다.
-
spec.security.controlPlane.mtls
설정은 Mixer Telemetry 또는 정책에 대한 연결을 구성할 때만 사용됩니다.
1.11.4.5.2.4. 지원되지 않는 리소스에 대한 마이그레이션 세부 정보
정책(authentication.istio.io/v1alpha1)
정책 리소스의 특정 구성에 따라 동일한 효과를 달성하기 위해 여러 리소스를 구성해야 할 수 있습니다.
상호 TLS
상호 TLS 적용은 security.istio.io/v1beta1
PeerAuthentication 리소스를 사용하여 수행됩니다. 레거시 spec.peers.mtls.mode
필드는 새로운 리소스의 spec.mtls.mode
필드에 직접 매핑됩니다. 선택 기준이 spec.targets[x].name
의 서비스 이름 지정에서 spec.selector.matchLabels
의 레이블 선택기로 변경되었습니다. PeerAuthentication에서 레이블은 대상 목록에 이름이 지정된 서비스의 선택기와 일치해야 합니다. 모든 포트별 설정은 spec.portLevelMtls
에 매핑되어야 합니다.
인증
spec.origins
에 지정된 추가 인증 방법은 security.istio.io/v1beta1
RequestAuthentication 리소스에 매핑되어야 합니다. spec.selector.matchLabels
는 PeerAuthentication의 동일한 필드와 유사하게 구성되어야 합니다. spec.origins.jwt
항목의 JWT 주체와 관련된 구성은 spec.rules
항목의 유사한 필드에 매핑됩니다.
-
정책에 지정된
spec.origins[x].jwt.triggerRules
는 하나 이상의security.istio.io/v1beta1
AuthorizationPolicy 리소스에 매핑되어야 합니다.spec.selector.labels
는 RequestAuthentication의 동일한 필드와 유사하게 구성되어야 합니다. -
spec.origins[x].jwt.triggerRules.excludedPaths.excludedPaths
는 spec.action이 ALLOW로 설정된 AuthorizationPolicy에 매핑되고,spec.rules[x].to.operation.path
항목이 제외된 경로와 일치해야 합니다. -
spec.origins[x].jwt.triggerRules.includedPaths
는spec.action
이ALLOW
로 설정된 별도의 AuthorizationPolicy에 매핑되고,spec.rules[x].to.operation.path
항목이 제외된 경로와 일치하며,spec.rules.[x].from.source.requestPrincipals
항목이 정책 리소스의specified spec.origins[x].jwt.issuer
와 일치해야 합니다
ServiceMeshPolicy(maistra.io/v1)
v2 컨트롤 플레인의 경우 설치 중에 기능적으로 동일한 PeerAuthentication 리소스가 생성됩니다. 이 기능은 Red Hat OpenShift Service Mesh 버전 2.0에서 더 이상 사용되지 않습니다.
RbacConfig, ServiceRole, ServiceRoleBinding (rbac.istio.io/v1alpha1)
이러한 리소스는 security.istio.io/v1beta1 AuthorizationPolicy
리소스로 교체되었습니다.
RbacConfig 동작을 모방하려면 RbacConfig에 지정된 spec.mode에 따라 설정이 달라지는 기본 AuthorizationPolicy를 작성해야 합니다.
-
spec.mode
가OFF
로 설정되면 AuthorizationPolicy가 요청에 적용되지 않는 한 기본 정책은 ALLOW이므로 리소스가 필요하지 않습니다. -
spec.mode
가 ON으로 설정된 경우spec: {}
를 설정합니다. 메시의 모든 서비스에 대해 AuthorizationPolicy 정책을 생성해야 합니다. -
spec.mode
가ON_WITH_INCLUSION
으로 설정되며, 포함된 각각의 네임스페이스에spec: {}
을 사용하여 AuthorizationPolicy를 생성해야 합니다. 개별 서비스 포함은 AuthorizationPolicy에서 지원되지 않습니다. 그러나 서비스의 워크로드에 적용되는 AuthorizationPolicy가 생성되면 명시적으로 허용되지 않는 다른 모든 요청이 거부됩니다. -
spec.mode
가ON_WITH_EXCLUSION
으로 설정된 경우 AuthorizationPolicy에서 지원되지 않습니다. 글로벌 DENY 정책을 생성할 수 있지만, 네임스페이스 또는 워크로드에 적용할 수 있는 허용된 정책이 없기 때문에 메시의 모든 워크로드에 대해 AuthorizationPolicy를 생성해야 합니다.
AuthorizationPolicy에는 ServiceRoleBinding이 제공하는 기능과 유사한 구성이 적용되는 선택기와 ServiceRole이 제공하는 기능과 유사하며 적용되어야 하는 규칙에 대한 구성이 모두 포함됩니다.
ServiceMeshRbacConfig (maistra.io/v1)
이 정책은 메시의 모든 워크로드에 적용되는 기본 권한 부여 정책이 됩니다. 특정 마이그레이션 세부 사항은 위의 RbacConfig를 참조하십시오.
1.11.4.5.2.5. Mixer 플러그인
Mixer 구성 요소는 버전 2.0에서 기본적으로 비활성화되어 있습니다. 워크로드에 Mixer 플러그인을 사용하는 경우 Mixer 구성 요소를 포함하도록 버전 2.0 ServiceMeshControlPlane
을 구성해야 합니다.
Mixer 정책 구성 요소를 활성화하려면 ServiceMeshControlPlane
에 다음 스니펫을 추가합니다.
spec: policy: type: Mixer
Mixer telemetry 구성 요소를 활성화하려면 ServiceMeshControlPlane
에 다음 스니펫을 추가합니다.
spec: telemetry: type: Mixer
또한 레거시 mixer 플러그인은 WASM으로 마이그레이션하고 새로운 ServiceMeshExtension(maistra.io/v1alpha1) 사용자 정의 리소스를 사용하여 통합할 수 있습니다.
업스트림 Istio 배포에 포함된 내장 WASM 필터는 Red Hat OpenShift Service Mesh 2.0에서 사용할 수 없습니다.
1.11.4.5.2.6. 상호 TLS 변경
워크로드별 PeerAuthentication 정책과 함께 mTLS를 사용할 때 워크로드 정책이 네임스페이스/글로벌 정책과 다를 경우 트래픽을 허용하려면 상응하는 DestinationRule이 필요합니다.
자동 mTLS는 기본적으로 활성화되어 있지만 ServiceMeshControlPlane
리소스에서 spec.security.dataPlane.automtls
를 false로 설정하여 비활성화할 수 있습니다. 자동 mTLS를 비활성화할 때 서비스 간 적절한 통신을 위해 DestinationRules가 필요할 수 있습니다. 예를 들어, 하나의 네임스페이스에 대해 PeerAuthentication을 STRICT
으로 설정하면 DestinationRule이 네임스페이스의 서비스에 TLS 모드를 구성하지 않는 한 다른 네임스페이스의 서비스에 액세스하지 못할 수 있습니다.
1.11.4.5.2.6.1. 기타 mTLS 예
mTLS 비활성화: bookinfo 샘플 애플리케이션의 productpage 서비스의 경우, Red Hat OpenShift Service Mesh v1.1에 대해 다음과 같은 방식으로 정책 리소스를 구성했습니다.
정책 리소스 예
apiVersion: authentication.istio.io/v1alpha1 kind: Policy metadata: name: productpage-mTLS-disable namespace: <namespace> spec: targets: - name: productpage
mTLS 비활성화: bookinfo 샘플 애플리케이션의 productpage 서비스의 경우, 다음 예제를 사용하여 Red Hat OpenShift Service Mesh v2.0에 PeerAuthentication 리소스를 구성합니다.
PeerAuthentication 리소스 예
apiVersion: security.istio.io/v1beta1 kind: PeerAuthentication metadata: name: productpage-mTLS-disable namespace: <namespace> spec: mtls: mode: DISABLE selector: matchLabels: # this should match the selector for the "productpage" service app: productpage
mTLS 활성화: bookinfo 샘플 애플리케이션에서 productpage
서비스에 대한 JWT 인증의 경우, Red Hat OpenShift Service Mesh v1.1에 대해 다음과 같은 방식으로 정책 리소스를 구성했습니다.
정책 리소스 예
apiVersion: authentication.istio.io/v1alpha1 kind: Policy metadata: name: productpage-mTLS-with-JWT namespace: <namespace> spec: targets: - name: productpage ports: - number: 9000 peers: - mtls: origins: - jwt: issuer: "https://securetoken.google.com" audiences: - "productpage" jwksUri: "https://www.googleapis.com/oauth2/v1/certs" jwtHeaders: - "x-goog-iap-jwt-assertion" triggerRules: - excludedPaths: - exact: /health_check principalBinding: USE_ORIGIN
mTLS 활성화: bookinfo 샘플 애플리케이션에서 productpage 서비스에 대한 JWT 인증의 경우, 다음 예제를 사용하여 Red Hat OpenShift Service Mesh v2.0에 PeerAuthentication 리소스를 구성합니다.
PeerAuthentication 리소스 예
#require mtls for productpage:9000 apiVersion: security.istio.io/v1beta1 kind: PeerAuthentication metadata: name: productpage-mTLS-with-JWT namespace: <namespace> spec: selector: matchLabels: # this should match the selector for the "productpage" service app: productpage portLevelMtls: 9000: mode: STRICT --- #JWT authentication for productpage apiVersion: security.istio.io/v1beta1 kind: RequestAuthentication metadata: name: productpage-mTLS-with-JWT namespace: <namespace> spec: selector: matchLabels: # this should match the selector for the "productpage" service app: productpage jwtRules: - issuer: "https://securetoken.google.com" audiences: - "productpage" jwksUri: "https://www.googleapis.com/oauth2/v1/certs" fromHeaders: - name: "x-goog-iap-jwt-assertion" --- #Require JWT token to access product page service from #any client to all paths except /health_check apiVersion: security.istio.io/v1beta1 kind: AuthorizationPolicy metadata: name: productpage-mTLS-with-JWT namespace: <namespace> spec: action: ALLOW selector: matchLabels: # this should match the selector for the "productpage" service app: productpage rules: - to: # require JWT token to access all other paths - operation: notPaths: - /health_check from: - source: # if using principalBinding: USE_PEER in the Policy, # then use principals, e.g. # principals: # - “*” requestPrincipals: - “*” - to: # no JWT token required to access health_check - operation: paths: - /health_check
1.11.4.5.3. 설정 레시피
이러한 구성 레시피를 사용하여 다음 항목을 구성할 수 있습니다.
1.11.4.5.3.1. 데이터 플레인의 상호 TLS
데이터 플레인 통신에 대한 상호 TLS는 ServiceMeshControlPlane
리소스의 spec.security.dataPlane.mtls
를 통해 구성되며, 기본적으로 false
입니다.
1.11.4.5.3.2. 사용자 정의 서명 키
Istiod는 서비스 프록시에서 사용하는 클라이언트 인증서 및 개인 키를 관리합니다. 기본적으로 Istiod는 서명에 자체 서명된 인증서를 사용하지만 사용자 정의 인증서와 개인 키를 구성할 수 있습니다.
1.11.4.5.3.3. 추적
추적 기능은 spec.tracing
에서 구성됩니다. 현재 지원되는 유일한 추적기 유형은 Jaeger
입니다. 샘플링은 0.01% 증분을 나타내는 스케일링된 정수입니다(예: 1은 0.01%, 10000은 100%). 추적 구현 및 샘플링 비율을 지정할 수 있습니다.
spec: tracing: sampling: 100 # 1% type: Jaeger
spec: addons: jaeger: name: jaeger install: storage: type: Memory # or Elasticsearch for production mode memory: maxTraces: 100000 elasticsearch: # the following values only apply if storage:type:=Elasticsearch storage: # specific storageclass configuration for the Jaeger Elasticsearch (optional) size: "100G" storageClassName: "storageclass" nodeCount: 3 redundancyPolicy: SingleRedundancy runtime: components: tracing.jaeger: {} # general Jaeger specific runtime configuration (optional) tracing.jaeger.elasticsearch: #runtime configuration for Jaeger Elasticsearch deployment (optional) container: resources: requests: memory: "1Gi" cpu: "500m" limits: memory: "1Gi"
Jaeger 설치는 install
필드로 사용자 지정할 수 있습니다. 리소스 제한과 같은 컨테이너 구성은 spec.runtime.components.jaeger
관련 필드에 구성됩니다. 기존 Jaeger 리소스를 사용하여 Jaeger 설치를 완전히 사용자 지정할 수 있습니다.
1.11.4.5.3.4. 시각화
spec: addons: grafana: enabled: true install: {} # customize install kiali: enabled: true name: kiali install: {} # customize install
Grafana 및 Kiali 설치는 각각의 install
필드를 통해 사용자 지정할 수 있습니다. 리소스 제한과 같은 컨테이너 사용자 정의는 spec.runtime.components.kiali
및 spec.runtime.components.grafana
에서 구성됩니다. Kiali 리소스의 일부 필드(예: accessible_namespaces
목록과 Grafana, Prometheus, 추적에 대한 끝점)는 재정의됩니다. 기존 리소스를 사용하여 Kiali 설치를 완전히 사용자 지정할 수 있습니다.
1.11.4.5.3.5. 리소스 사용률 및 스케줄링
리소스는 spec.runtime.<component>
에서 구성됩니다. 다음과 같은 구성 요소 이름이 지원됩니다.
구성 요소 | 설명 | 지원되는 버전 |
---|---|---|
보안 | Citadel 컨테이너 | v1.0/1.1 |
galley | Galley 컨테이너 | v1.0/1.1 |
pilot | Pilot/Istiod 컨테이너 | v1.0/1.1/2.0 |
mixer | Istio-telemetry 및 istio-policy 컨테이너 | v1.0/1.1 |
| Istio-policy 컨테이너 | v2.0 |
| Istio-telemetry 컨테이너 | v2.0 |
| 다양한 애드온과 함께 사용되는 oauth-proxy 컨테이너 | v1.0/1.1/2.0 |
| 사이드카 인젝터 webhook 컨테이너 | v1.0/1.1 |
| 일반 Jaeger 컨테이너 - 일부 설정은 적용할 수 없습니다. | v1.0/1.1/2.0 |
| Jaeger 에이전트와 관련된 설정 | v1.0/1.1/2.0 |
| Jaeger allInOne과 관련된 설정 | v1.0/1.1/2.0 |
| Jaeger 수집기와 관련된 설정 | v1.0/1.1/2.0 |
| Jaeger elasticsearch 배포와 관련된 설정 | v1.0/1.1/2.0 |
| Jaeger 쿼리와 관련된 설정 | v1.0/1.1/2.0 |
prometheus | prometheus 컨테이너 | v1.0/1.1/2.0 |
kiali |
| v1.0/1.1/2.0 |
grafana | Grafana 컨테이너 | v1.0/1.1/2.0 |
3scale | 3scale 컨테이너 | v1.0/1.1/2.0 |
| WASM 확장 cacher 컨테이너 | v2.0 - 기술 프리뷰 |
일부 구성 요소는 리소스 제한 및 스케줄링을 지원합니다.
1.11.4.5.4.
애플리케이션 워크로드를 새 메시로 이동하고 이전 인스턴스를 제거하여 업그레이드를 완료합니다.
1.11.5.
1.11.5.1.
$ oc rollout restart <deployment>