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의 예
다음 명령을 실행하여 모든 사용자 지정 옵션을 확인할 수 있습니다.
oc explain istios.spec.values
$ 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. IstioRevisionTag 리소스 링크 복사링크가 클립보드에 복사되었습니다!
IstioRevisionTag 리소스는 Istio 컨트롤 플레인 버전의 별칭으로 작동하는 안정적인 버전 태그를 나타냅니다. stable 태그인 prod 를 사용하면 istio.io/rev=prod 레이블을 사용하여 워크로드에 프록시를 삽입할 수 있습니다. 새 버전 이름으로 컨트롤 플레인으로 업그레이드할 때 워크로드 및 네임스페이스의 레이블을 다시 지정하지 않고 새 버전을 가리키도록 태그를 업데이트할 수 있습니다. 자세한 내용은 Stable revision labels (Istio 문서)를 참조하십시오.
OpenShift Service Mesh Operator와 함께 IstioRevisionTag 리소스를 사용할 수 있습니다. 따라서 IstioRevision 및 Istio 리소스를 모두 참조할 수 있습니다. Istio 리소스를 사용하는 경우 컨트롤 플레인을 업데이트한 후 기본 IstioRevision 리소스가 변경되고 OpenShift Service Mesh Operator는 버전 태그를 자동으로 업데이트합니다. 새 프록시를 다시 삽입하려면 배포를 다시 시작해야 합니다.
IstioRevisionTag 에는 Istio 또는 리소스를 참조할 수 있는 Istio Revisionspec: field, targetRef 에 하나의 필드가 있습니다. IstioRevisionTag 를 배포한 후 istio.io/rev=default 및 istio-injection=enabled 라벨을 모두 사용하여 워크로드에 프록시를 삽입할 수 있습니다.
2.1.4. IstioCNI 리소스 링크 복사링크가 클립보드에 복사되었습니다!
OpenShift Service Mesh Operator를 사용할 때 Istio의 CNI(Container Network Interface) 플러그인의 라이프사이클은 별도로 관리됩니다. Istio의 CNI 플러그인을 설치하려면 IstioCNI 리소스를 생성합니다.
IstioCNI 리소스는 클러스터의 모든 노드에서 작동하는 데몬 세트를 설치하기 때문에 클러스터 전체 리소스입니다. 다음 예제에서 볼 수 있듯이 spec.version 필드를 설정하여 버전을 선택할 수 있습니다. CNI 플러그인을 업데이트하려면 버전 필드를 설치하려는 버전으로 변경합니다. Istio 리소스와 마찬가지로 istio-cni 차트에 제공된 모든 옵션을 노출하는 값 필드도 있습니다.
IstioCNI 리소스의 예