1.3.2. 서비스 메시 아키텍처
서비스 메시 기술은 네트워크 통신 수준에서 작동합니다. 즉, 서비스 메시 구성 요소는 요청을 수정하거나, 리디렉션하거나, 다른 서비스에 새 요청을 생성하여 마이크로 서비스로 들어오고 나가는 트래픽을 캡처하거나 가로챕니다.
![서비스 메시 아키텍처 이미지](https://access.redhat.com/webassets/avalon/d/OpenShift_Container_Platform-4.10-Service_Mesh-ko-KR/images/f59a87f7fbacaa4463a28e892881c6d7/ossm-architecture.png)
높은 수준에서 Red Hat OpenShift Service Mesh는 데이터 플레인과 컨트롤 플레인으로 구성됩니다.
데이터 플레인은 pod에서 애플리케이션 컨테이너와 함께 실행되며 서비스 메시의 마이크로 서비스 간 인바운드 및 아웃바운드 네트워크 통신을 가로채고 제어하는 지능형 프록시 집합입니다. 데이터 플레인은 인바운드(ingress) 및 아웃바운드(egress) 네트워크 트래픽을 가로채는 방식으로 구현됩니다. Istio 데이터 플레인은 pod의 사이드 애플리케이션 컨테이너와 함께 실행되는 Envoy 컨테이너로 구성됩니다. Envoy 컨테이너는 pod 내외의 모든 네트워크 통신을 제어하는 프록시 역할을 합니다.
Envoy 프록시는 데이터 플레인 트래픽과 상호 작용하는 유일한 Istio 구성 요소입니다. 서비스 간에 들어오는 모든(ingress) 및 발신(egress) 네트워크 트래픽은 프록시를 통해 이동합니다. 또한 Envoy 프록시는 메시 내에서 서비스 트래픽과 관련된 모든 메트릭을 수집합니다. Envoy 프록시는 서비스와 동일한 Pod에서 실행되는 사이드카로 배포됩니다. Envoy 프록시는 메시 게이트웨이를 구현하는 데도 사용됩니다.
- 사이드카 프록시는 연결된 워크로드 인스턴스에 대한 인바운드 및 아웃바운드 통신을 관리합니다.
게이트웨이는 들어오거나 나가는 HTTP/TCP 연결을 수신하는 로드 밸런서 장치로 작동하는 프록시입니다. 게이트웨이 구성은 서비스 워크로드와 함께 실행되는 사이드카 Envoy 프록시가 아닌, 메시의 에지에서 실행되는 독립 실행형 Envoy 프록시에 적용됩니다. 게이트웨이를 사용하여 메시에 대한 인바운드 및 아웃바운드 트래픽을 관리하여 메시에 들어오거나 나가려는 트래픽을 지정할 수 있습니다.
- Ingress-gateway - 수신 컨트롤러라고도 하는 Ingress 게이트웨이는 서비스 메시를 입력하는 트래픽을 수신하고 제어하는 전용 Envoy 프록시입니다. Ingress 게이트웨이를 사용하면 모니터링 및 경로 규칙과 같은 기능을 클러스터로 들어오는 트래픽에 적용할 수 있습니다.
- egress-gateway - 송신 컨트롤러라고도 하는 Egress 게이트웨이는 서비스 메시를 나가는 트래픽을 관리하는 전용 Envoy 프록시입니다. Egress Gateway를 사용하면 모니터링 및 경로 규칙과 같은 기능이 메시를 종료하는 트래픽에 적용할 수 있습니다.
컨트롤 플레인은 데이터 플레인을 구성하는 프록시를 관리하고 구성합니다. 구성에 대한 권한 있는 소스이며 액세스 제어 및 사용 정책을 관리하고 서비스 메시의 프록시에서 메트릭을 수집합니다.
Istio 컨트롤 플레인은 이전의 여러 컨트롤 플레인 구성 요소(Citadel, Galley, Pilot)를 단일 바이너리로 통합하는 Istiod로 구성됩니다. Istiod는 서비스 검색, 구성 및 인증서 관리를 제공합니다. 고급 라우팅 규칙을 Envoy 구성으로 변환하고 런타임 시 사이드카로 전달합니다.
- Istiod는 CA(인증 기관) 역할을 하며 데이터 플레인에서 보안 mTLS 통신을 지원하는 인증서를 생성할 수 있습니다. 이를 위해 외부 CA를 사용할 수도 있습니다.
- Istiod는 OpenShift 클러스터에 배포된 워크로드에 사이드카 프록시 컨테이너를 삽입하는 역할을 합니다.
Red Hat OpenShift Service Mesh는 istio-operator를 사용하여 컨트롤 플레인 설치를 관리합니다. Operator는 OpenShift 클러스터에서 공통 활동을 구현하고 자동화할 수 있는 소프트웨어입니다. 컨트롤러 역할을 하여 클러스터에서 원하는 오브젝트 상태(이 경우 Red Hat OpenShift Service Mesh 설치)를 설정하거나 변경할 수 있습니다.
또한 Red Hat OpenShift Service Mesh는 다음 Istio 추가 기능도 제품의 일부로 번들로 제공합니다.
- Kiali - Kiali는 Red Hat OpenShift Service Mesh의 관리 콘솔입니다. 대시보드, 관찰 기능, 강력한 구성 및 유효성 검사 기능을 제공합니다. 트래픽 토폴로지를 유추하고 서비스 메시의 구조를 표시하고 메시의 상태를 표시합니다. Kiali는 자세한 지표, 강력한 검증, Grafana 액세스 및 분산 추적 플랫폼과의 강력한 통합을 제공합니다.
- Prometheus - Red Hat OpenShift Service Mesh는 Prometheus를 사용하여 서비스의 원격 분석 정보를 저장합니다. Kiali는 Prometheus를 사용하여 메트릭, 상태 및 메시 토폴로지를 가져옵니다.
- Jaeger - Red Hat OpenShift Service Mesh는 분산 추적 플랫폼을 지원합니다. Jaeger는 여러 서비스 간에 단일 요청과 관련된 추적을 중앙 집중화하고 표시하는 오픈소스 추적 기능 서버입니다. 분산 추적 플랫폼을 사용하여 마이크로서비스 기반 분산 시스템을 모니터링하고 문제를 해결할 수 있습니다.
- Elasticsearch - Elasticsearch는 오픈 소스 분산 JSON 기반 검색 및 분석 엔진입니다. 분산 추적 플랫폼은 영구 스토리지에 Elasticsearch를 사용합니다.
- Grafana - Grafana는 메시 관리자에게 Istio 데이터에 대한 고급 쿼리 및 메트릭 분석 및 대시보드를 제공합니다. 선택적으로 Grafana를 사용하여 서비스 메시 메트릭을 분석할 수 있습니다.
Red Hat OpenShift Service Mesh에서 다음 Istio 통합이 지원됩니다.
- 3scale - Istio는 Red Hat 3scale API Management 솔루션과의 선택적 통합을 제공합니다. 2.1 이전의 버전의 경우 이 통합은 3scale Istio 어댑터를 통해 수행되었습니다. 버전 2.1 이상의 경우 3scale 통합은 WebAssembly 모듈을 통해 수행됩니다.
3scale 어댑터 설치 방법에 대한 자세한 내용은 3scale Istio 어댑터 설명서를 참조하십시오.