1.5. 서비스 메시 및 Istio 차이점
Red Hat OpenShift Service Mesh는 OpenShift Container Platform에 배포할 때 추가 기능을 제공하거나, 차이점을 처리하기 위한 Istio 설치와는 다릅니다.
1.5.1. Istio와 Red Hat OpenShift Service Mesh 간의 차이점
다음 기능은 서비스 메시와 Istio에서 다릅니다.
1.5.1.1. 명령줄 도구
Red Hat OpenShift Service Mesh의 명령줄 도구는 oc
입니다. Red Hat OpenShift Service Mesh는 istioctl
을 지원하지 않습니다.
1.5.1.2. 설치 및 업그레이드
Red Hat OpenShift Service Mesh는 Istio 설치 프로필을 지원하지 않습니다.
Red Hat OpenShift Service Mesh는 서비스 메시의 카나리아 업그레이드를 지원하지 않습니다.
1.5.1.3. 자동 삽입
업스트림 Istio 커뮤니티 설치는 레이블을 지정한 프로젝트 내의 pod에 사이드카를 자동으로 삽입합니다.
Red Hat OpenShift Service Mesh는 사이드카를 Pod에 자동으로 삽입하지 않지만 프로젝트에 레이블을 지정하지 않고 주석을 사용하여 삽입해야 합니다. 이 방법은 더 적은 권한이 필요하며, builder pod와 같은 다른 OpenShift 기능과 충돌하지 않습니다. 자동 삽입을 활성화하려면 자동 사이드카 삽입 섹션에 설명된 대로 sidecar.istio.io/inject
주석을 지정합니다.
업스트림 Istio | Red Hat OpenShift Service Mesh | |
---|---|---|
네임스페이스 라벨 | "활성화" 및 "비활성화" 지원 | "비활성화" 지원 |
Pod 라벨 | "true" 및 "false" 지원 | 지원되지 않음 |
Pod 주석 | "false"만 지원 | "true" 및 "false" 지원 |
1.5.1.4. Istio 역할 기반 액세스 제어 기능
역할 기반 액세스 제어(RBAC)는 서비스에 대한 액세스를 제어하는 데 사용할 수 있는 메커니즘을 제공합니다. 사용자 이름별로, 또는 속성 집합을 지정하여 제목을 식별하고 그에 따라 액세스 제어를 적용할 수 있습니다.
업스트림 Istio 커뮤니티 설치에는 정확한 헤더 일치를 수행하거나, 헤더에서 와일드카드를 일치시키거나, 특정 접두사 또는 접미사가 포함된 헤더를 확인하는 옵션이 포함되어 있습니다.
Red Hat OpenShift Service Mesh는 정규식을 사용하여 요청 헤더를 일치시키는 기능을 확장합니다. 정규식이 있는 request.regex.headers
의 속성 키를 지정합니다.
요청 헤더와 일치하는 업스트림 Istio 커뮤니티 예
apiVersion: security.istio.io/v1beta1 kind: AuthorizationPolicy metadata: name: httpbin-usernamepolicy spec: action: ALLOW rules: - when: - key: 'request.regex.headers[username]' values: - "allowed.*" selector: matchLabels: app: httpbin
1.5.1.5. OpenSSL
Red Hat OpenShift Service Mesh는 BoringSSL을 OpenSSL로 대체합니다. OpenSSL은 SSL(Secure Sockets Layer) 및 TLS(Transport Layer Security) 프로토콜의 오픈 소스 구현이 포함된 소프트웨어 라이브러리입니다. Red Hat OpenShift Service Mesh 프록시 바이너리는 기본 Red Hat Enterprise Linux 운영 체제에서 OpenSSL 라이브러리(libssl 및 libcrypto)를 동적으로 연결합니다.
1.5.1.6. 외부 워크로드
Red Hat OpenShift Service Mesh는 베어 메탈 서버에서 OpenShift 외부에서 실행되는 가상 머신과 같은 외부 워크로드를 지원하지 않습니다.
1.5.1.7. 가상 머신 지원
OpenShift Virtualization을 사용하여 OpenShift에 가상 머신을 배포할 수 있습니다. 그런 다음 mTLS 또는 AuthorizationPolicy와 같은 메시 정책을 메시의 일부인 다른 Pod와 마찬가지로 이러한 가상 머신에 적용할 수 있습니다.
1.5.1.8. 구성 요소 수정
- maistra-version 레이블이 모든 리소스에 추가되었습니다.
- 모든 Ingress 리소스가 OpenShift Route 리소스로 변환되었습니다.
- Grafana, distributed tracing(Jaeger) 및 Kiali는 기본적으로 활성화되어 OpenShift 경로를 통해 노출됩니다.
- Godebug가 모든 템플릿에서 제거됨
-
istio-multi
ServiceAccount과 ClusterRoleBinding,istio-reader
ClusterRole이 제거되었습니다.
1.5.1.9. Envoy 필터
Red Hat OpenShift Service Mesh는 명시적으로 문서화된 경우를 제외하고 EnvoyFilter
구성을 지원하지 않습니다. 기본 Envoy API와의 긴밀한 결합으로 인해 이전 버전과의 호환성을 유지할 수 없습니다. EnvoyFilter
패치는 Istio에서 생성한 Envoy 구성의 형식에 매우 민감합니다. Istio에서 생성한 구성이 변경되면 EnvoyFilter
의 애플리케이션을 중단할 수 있습니다.
1.5.1.10. Envoy 서비스
Red Hat OpenShift Service Mesh는 QUIC 기반 서비스를 지원하지 않습니다.
1.5.1.11. Istio CNI(컨테이너 네트워크 인터페이스)
Red Hat OpenShift Service Mesh에는 CNI 플러그인이 포함되어 있으며, 이것은 애플리케이션 Pod 네트워킹을 구성할 수 있는 대체 방법을 제공합니다. CNI 플러그인은 상승된 권한으로 SCC(보안 컨텍스트 제약 조건)에 대한 서비스 계정 및 프로젝트 액세스 권한을 부여할 필요가 없도록 init-container
네트워크 구성을 대체합니다.
1.5.1.12. 글로벌 mTLS 설정
Red Hat OpenShift Service Mesh는 메시 내에서 상호 TLS 인증(mTLS)을 활성화 또는 비활성화하는 PeerAuthentication
리소스를 생성합니다.
1.5.1.13. 게이트웨이
Red Hat OpenShift Service Mesh는 기본적으로 수신 및 송신 게이트웨이를 설치합니다. 다음 설정을 사용하여 ServiceMeshControlPlane
(SMCP) 리소스에서 게이트웨이 설치를 비활성화할 수 있습니다.
-
spec.gateways.enabled=false
를 사용하여 수신 및 송신 게이트웨이를 모두 비활성화합니다. -
spec.gateways.ingress.enabled=false
를 사용하여 수신 게이트웨이를 비활성화합니다. -
spec.gateways.egress.enabled=false
를 사용하여 송신 게이트웨이를 비활성화합니다.
Operator는 기본 게이트웨이에 주석을 달아 Red Hat OpenShift Service Mesh Operator에 의해 생성되고 관리됨을 나타냅니다.
1.5.1.14. 다중 클러스터 구성
Red Hat OpenShift Service Mesh는 다중 클러스터 구성을 지원하지 않습니다.
1.5.1.15. 사용자 정의 인증서 서명 요청(CSR)
Kubernetes CA(인증 기관)를 통해 CSR을 처리하도록 Red Hat OpenShift Service Mesh를 구성할 수 없습니다.
1.5.1.16. Istio 게이트웨이 경로
Istio 게이트웨이의 OpenShift 경로는 Red Hat OpenShift Service Mesh에서 자동으로 관리됩니다. Istio 게이트웨이가 서비스 메시 내부에서 생성, 업데이트 또는 삭제될 때마다 OpenShift 경로가 생성, 업데이트 또는 삭제됩니다.
IOR(Istio OpenShift Routing)이라는 Red Hat OpenShift Service Mesh Control Plane 구성 요소는 게이트웨이 경로를 동기화합니다. 자세한 내용은 자동 경로 생성을 참조하십시오.
1.5.1.16.1. catch-all 도메인
catch-all 도메인("*")은 지원되지 않습니다. 게이트웨이 정의에서 이 도메인이 발견되면 Red Hat OpenShift Service Mesh는 경로를 생성하지만 기본 호스트 이름을 만들기 위해 OpenShift에 의존합니다. 즉, 새로 생성된 경로는 catch-all ("*") 경로가 아니며, 대신 r<route-name>[-<project>].<suffix>
형식의 호스트 이름이 있습니다. 기본 호스트 이름이 작동하는 방식과 cluster-admin
이 이를 사용자 정의할 수 있는 방법에 대한 자세한 내용은 OpenShift Container Platform 설명서를 참조하십시오. Red Hat OpenShift Dedicated를 사용하는 경우 Red Hat OpenShift Dedicated에서 dedicated-admin
역할을 참조하십시오.
1.5.1.16.2. 하위 도메인
하위 도메인(예: "*.domain.com")이 지원됩니다. 그러나 이 기능은 OpenShift Container Platform에서 기본적으로 활성화되어 있지 않습니다. 즉, Red Hat OpenShift Service Mesh는 하위 도메인이 있는 경로를 생성하지만 OpenShift Container Platform이 이것을 활성화하도록 구성된 경우에만 적용됩니다.
1.5.1.16.3. TLS(Transport layer security)
TLS(Transport Layer Security)가 지원됩니다. 즉, 게이트웨이에 tls
섹션이 포함된 경우 OpenShift 경로는 TLS를 지원하도록 구성됩니다.