2장. OpenShift Service Mesh 이해
Red Hat OpenShift Service Mesh는 다음 두 부분으로 구성됩니다.
- Red Hat OpenShift Service Mesh 리소스
- Red Hat에서 제공하는 Kiali
Red Hat에서 제공하는 Kali는 다음 세 부분으로 구성됩니다.
- Red Hat에서 제공하는 Kiali Operator
- Kiali 서버
- OpenShift Service Mesh Console (OSSMC) 플러그인
OpenShift Service Mesh는 다음과 통합됩니다.
다음과 같은 가시성 구성 요소:
- OpenShift Monitoring
- Red Hat OpenShift distributed tracing 플랫폼
- Red Hat OpenShift distributed tracing data collection Operator
- cert-manager
- Argo 롤아웃
2.1. Red Hat OpenShift Service Mesh 리소스
Red Hat OpenShift Service Mesh Operator는 Istio 컨트롤 플레인의 라이프사이클을 관리합니다. 새 구성 스키마를 생성하는 대신 OpenShift Service Mesh Operator API는 Istio의 Helm 차트 API를 기반으로 빌드됩니다.
- Red Hat OpenShift Service Mesh API는 Istio의 Helm 차트 API를 기반으로 빌드되지만 Helm 차트는 지원되지 않습니다.
-
Istio의 Helm 차트에서 노출하는 모든 설치 및 구성 옵션은 Red Hat OpenShift Service Mesh CRD(Custom Resource Definition)
값
필드를 통해 사용할 수 있습니다.
2.1.1. Istio 리소스
Istio
리소스는 Istio 컨트롤 플레인을 관리하는 데 사용됩니다. Istio 컨트롤 플레인이 작동하고 전체 클러스터에 액세스해야 하므로 클러스터 전체 리소스입니다.
컨트롤 플레인 Pod를 실행할 네임스페이스를 선택하려면 spec.namespace
필드를 사용할 수 있습니다.
spec.namespace
필드는 변경할 수 없습니다. 컨트롤 플레인을 다른 네임스페이스로 이동하려면 Istio
리소스를 제거하고 다른 spec.namespace
로 다시 생성해야 합니다.
spec.values
필드를 통해 모든 Istio
CRD(사용자 정의 리소스 정의) 옵션에 액세스할 수 있습니다.
Istio
리소스 CRD의 예
apiVersion: sailoperator.io/v1alpha1 kind: Istio metadata: name: default spec: version: v1.22.3 namespace: istio-system updateStrategy: type: InPlace values: pilot: resources: requests: cpu: 100m memory: 1024Mi
다음 명령을 실행하여 모든 사용자 지정 옵션을 확인할 수 있습니다.
$ oc explain istios.spec.values
컨트롤 플레인의 카나리아 업데이트를 지원하기 위해 OpenShift Service Mesh에는 여러 Istio 버전에 대한 지원이 포함되어 있습니다. spec.version
을 설치하려는 버전으로 설정하여 버전을 선택할 수 있으며, 앞에 v
가 붙습니다. 이 필드를 변경하여 새 버전으로 업데이트할 수 있습니다.
OpenShift Service Mesh는 컨트롤 플레인에 대해 두 가지 다른 업데이트 전략을 지원합니다.
InPlace
- OpenShift Service Mesh Operator는 기존 컨트롤 플레인 리소스를 새 버전의 리소스로 즉시 교체합니다.
버전 기반
- 워크로드를 마이그레이션하여 업데이트를 완료할 수 있는 두 번째 컨트롤 플레인을 생성하여 Istio의 카나리아 업데이트 메커니즘을 사용합니다.
Istio 리소스를 생성한 후 OpenShift Service Mesh는 updateStrategy
를 기반으로 리소스에 대한 버전 이름을 생성하고 해당 IstioRevision
을 생성합니다.
2.1.2. IstioRevision 리소스
IstioRevision
은 클러스터 전체 리소스이며 가장 낮은 수준의 API OpenShift Service Mesh가 제공합니다. 일반적으로 사용자가 생성한 것이 아니라 Operator 자체에 의해 생성됩니다. 해당 스키마는 Istio
리소스의 것과 거의 유사하지만 클러스터에 존재할 컨트롤 플레인의 상태를 나타내는 대신 해당 컨트롤 플레인의 버전을 나타냅니다.
클러스터에 존재할 컨트롤 플레인의 버전은 특정 버전 및 버전 이름이 있는 Istio 인스턴스이며, 해당 버전 이름을 사용하여 워크로드 또는 전체 네임스페이스를 메시에 추가할 수 있습니다. 예: istio.io/rev=<REVISION_NAME> 레이블을 사용하여 다음을
수행합니다.
Kubernetes의 복제본 세트와 Pod 간의 관계와 유사한 Istio
와 IstioRevision
리소스 간의 관계를 생각할 수 있습니다. 복제본 세트는 사용자가 생성할 수 있으며 Pod가 자동으로 생성되어 컨테이너 인스턴스화가 트리거됩니다.
마찬가지로 사용자는 OpenShift Service Mesh Operator에 일치하는
리소스를 생성하도록 지시하는 Istio 리소스를 생성하여 Istio 컨트롤 플레인 생성을 트리거합니다. 이를 위해 OpenShift Service Mesh Operator는 Istio 리소스에서 Istio
Revision
리소스로 모든 관련 구성을 복사합니다.
Istio
Revision
2.1.3. IstioCNI 리소스
OpenShift Service Mesh Operator를 사용할 때 Istio의 CNI(Container Network Interface) 플러그인의 라이프사이클은 별도로 관리됩니다. Istio의 CNI 플러그인을 설치하려면 IstioCNI
리소스를 생성합니다.
IstioCNI
리소스는 클러스터의 모든 노드에서 작동하는 데몬 세트를 설치하기 때문에 클러스터 전체 리소스입니다. 다음 예제에서 볼 수 있듯이 spec.version
필드를 설정하여 버전을 선택할 수 있습니다. CNI 플러그인을 업데이트하려면 버전 필드를 설치하려는 버전으로 변경합니다. Istio
리소스와 마찬가지로 istio-cni
차트에 제공된 모든 옵션을 노출하는 값
필드도 있습니다.
IstioCNI
리소스의 예
apiVersion: sailoperator.io/v1alpha1 kind: IstioCNI metadata: name: default spec: version: v1.22.3 namespace: istio-cni values: cni: cniConfDir: /etc/cni/net.d excludeNamespaces: - kube-system