서비스 메시


OpenShift Container Platform 4.17

서비스 메시 설치, 사용법, 릴리스 정보

Red Hat OpenShift Documentation Team

초록

이 문서에서는 OpenShift Container Platform에서 서비스 메시를 사용하는 방법에 대한 정보를 제공합니다.

1장. 서비스 메시 3.x

1.1. 서비스 메시 개요

Red Hat OpenShift Service Mesh는 트래픽 관리, 고급 라우팅 및 로드 밸런싱을 제공하여 마이크로 서비스 간 통신을 관리하고 보호합니다. Red Hat OpenShift Service Mesh는 상호 TLS와 같은 기능을 통해 보안을 개선하고, 애플리케이션을 모니터링하고 해결하기 위해 메트릭, 로깅, 추적을 관찰할 수 있습니다.

참고

Red Hat OpenShift Service Mesh 3.0은 OpenShift Container Platform과 다른 주기로 릴리스되므로 Service Mesh 문서는 Red Hat OpenShift Service Mesh 에 설정된 별도의 문서로 사용할 수 있습니다.

2장. 서비스 메시 2.x

2.1. OpenShift Service Mesh 정보

참고

Red Hat OpenShift Service Mesh는 OpenShift Container Platform과 다른 주기로 릴리스되며 Red Hat OpenShift Service Mesh Operator는 ServiceMeshControlPlane 의 여러 버전 배포를 지원하므로 Service Mesh 문서는 제품의 마이너 버전에 대한 별도의 문서 세트를 유지 관리하지 않습니다. 현재 문서 세트는 특정 주제 또는 특정 기능에 대해 버전별 제한 사항이 호출되지 않는 한 최신 버전의 서비스 메시에 적용됩니다.

Red Hat OpenShift Service Mesh 라이프 사이클 및 지원되는 플랫폼에 대한 자세한 내용은 Platform 라이프 사이클 정책을 참조하십시오.

2.1.1. Red Hat OpenShift Service Mesh 소개

Red Hat OpenShift Service Mesh는 애플리케이션에서 중앙 집중식 제어 지점을 생성하여 마이크로 서비스 아키텍처에서 다양한 문제에 대응합니다. 애플리케이션 코드를 변경하지 않고도 기존 분산 애플리케이션에 투명한 레이어를 추가합니다.

마이크로 서비스 아키텍처는 엔터프라이즈 애플리케이션의 작업을 모듈식 서비스로 분할하므로 확장 및 유지 관리를 더 쉽게 수행할 수 있습니다. 그러나 마이크로 서비스 아키텍처에 구축된 엔터프라이즈 애플리케이션이 크기와 복잡성이 증가함에 따라 마이크로 서비스 아키텍처의 이해 및 관리가 어려워집니다. 서비스 메시는 서비스 간 트래픽을 캡처하거나 차단하거나 다른 서비스에 대한 새 요청을 리디렉트 또는 생성하여 이러한 아키텍처의 문제에 대응할 수 있습니다.

오픈 소스 Istio project를 기반으로 하는 Service Mesh는 배포된 서비스 네트워크를 쉽게 구축할 수 있는 방법을 제공하여 검색, 로드 밸런싱, 서비스 간 인증, 실패 복구, 지표 및 모니터링을 지원합니다. 서비스 메시는 A/B 테스트, 카나리아 릴리스, 액세스 제어 및 엔드 투 엔드 인증을 포함한 보다 복잡한 운영 기능을 제공합니다.

참고

Red Hat OpenShift Service Mesh 3은 일반적으로 사용할 수 있습니다. 자세한 내용은 Red Hat OpenShift Service Mesh 3.0 을 참조하십시오.

2.1.2. 핵심 기능

Red Hat OpenShift Service Mesh는 서비스 네트워크 전반에서 여러 주요 기능을 균일하게 제공합니다.

  • 트래픽 관리 - 서비스 간 트래픽 및 API 호출 흐름을 제어하고, 호출을 더 안정적으로 만들며, 불리한 조건에서도 네트워크를 보다 견고하게 만듭니다.
  • 서비스 ID 및 보안 - 메시에서 확인 가능한 ID로 서비스를 제공하고 다양한 수준의 신뢰도를 갖춘 네트워크를 통해 전달될 때 서비스 트래픽을 보호할 수 있는 기능을 제공합니다.
  • 정책 강화- 서비스 간 상호 작용에 조직 정책을 적용하여 액세스 정책이 시행되고 리소스가 소비자 간에 공정하게 배포되도록 합니다. 애플리케이션 코드를 변경하는 것이 아니라 메시를 구성하여 정책 변경을 수행합니다.
  • Telemetry - 서비스 간의 종속성과 트래픽 속성 및 흐름을 이해하여 문제를 신속하게 식별할 수 있는 기능을 제공합니다.

2.2. 서비스 메시 릴리스 노트

2.2.1. Red Hat OpenShift Service Mesh 버전 2.6.6

이번 Red Hat OpenShift Service Mesh 릴리스는 Red Hat OpenShift Service Mesh Operator 버전을 2.6.6으로 업데이트하고 다음 ServiceMeshControlPlane 리소스 버전 업데이트(2.6.6, 2.5.9 및 2.4.15)를 포함합니다.

이번 릴리스에서는 CVE(Common Vulnerabilities and Exposures)를 지원하며 OpenShift Container Platform 4.14 이상에서 지원됩니다.

지원되는 모든 Red Hat OpenShift Service Mesh 버전과 함께 Red Hat에서 제공하는 Kiali Operator의 최신 버전을 사용할 수 있습니다. Service Mesh 버전은 ServiceMeshControlPlane 리소스를 사용하여 지정합니다. Service Mesh 버전은 호환되는 Kiali 버전을 자동으로 확인합니다.

2.2.1.1. 구성 요소 업데이트
Expand
Component버전

Istio

1.20.8

Envoy 프록시

1.28.7

Kiali 서버

1.73.19

2.2.1.2. 새로운 기능
  • 이번 업데이트를 통해 Red Hat OpenShift Service Mesh 2.6용 Operator의 이름이 Red Hat OpenShift Service Mesh 3.0 릴리스와 일치하고 명확성을 개선하도록 Red Hat OpenShift Service Mesh 2로 이름이 변경되었습니다.

2.2.2. Red Hat OpenShift Service Mesh 버전 2.5.9

이번 Red Hat OpenShift Service Mesh 릴리스는 Red Hat OpenShift Service Mesh Operator 2.6.6에 포함되어 있으며 OpenShift Container Platform 4.14 이상에서 지원됩니다. 이 릴리스에서는 CVE(Common Vulnerabilities and Exposures)를 처리합니다.

2.2.2.1. 구성 요소 업데이트
Expand
Component버전

Istio

1.18.7

Envoy 프록시

1.26.8

Kiali 서버

1.73.19

2.2.3. Red Hat OpenShift Service Mesh 버전 2.4.15

이번 Red Hat OpenShift Service Mesh 릴리스는 Red Hat OpenShift Service Mesh Operator 2.6.6에 포함되어 있으며 OpenShift Container Platform 4.14 이상에서 지원됩니다.

2.2.3.1. 구성 요소 업데이트
Expand
Component버전

Istio

1.16.7

Envoy 프록시

1.24.12

Kiali 서버

1.65.20

2.2.4. Red Hat OpenShift Service Mesh 버전 2.6.5

이번 Red Hat OpenShift Service Mesh 릴리스는 Red Hat OpenShift Service Mesh Operator 버전을 2.6.5로 업데이트하고 다음 ServiceMeshControlPlane 리소스 버전 업데이트( 2.6.5, 2.5.8, 2.4.14)를 포함합니다.

이번 릴리스에서는 CVE(Common Vulnerabilities and Exposures)를 지원하며 OpenShift Container Platform 4.14 이상에서 지원됩니다.

지원되는 모든 Red Hat OpenShift Service Mesh 버전과 함께 Red Hat에서 제공하는 Kiali Operator의 최신 버전을 사용할 수 있습니다. Service Mesh 버전은 ServiceMeshControlPlane 리소스를 사용하여 지정합니다. Service Mesh 버전은 호환되는 Kiali 버전을 자동으로 확인합니다.

2.2.4.1. 구성 요소 업데이트
Expand
Component버전

Istio

1.20.8

Envoy 프록시

1.28.7

Kiali 서버

1.73.18

2.2.4.2. 새로운 기능
  • Red Hat OpenShift distributed tracing platform (Tempo) Stack은 IBM Z에서 지원됩니다.
2.2.4.3. 해결된 문제
  • OSSM-8608 이전에 바이너리를 복사하는 동안 설치 단계에서 CNI(Container Network Interface) Pod를 종료하면 노드 파일 시스템에 Istio-CNI 임시 파일을 남길 수 있습니다. 반복된 발생은 결국 노드 디스크 공간을 채울 수 있습니다. 이제 설치 단계에서 CNI Pod를 종료하는 동안 CNI 바이너리를 복사하기 전에 기존 임시 파일이 삭제되어 Istio 버전당 하나의 임시 파일만 노드 파일 시스템에 있는지 확인합니다.

2.2.5. Red Hat OpenShift Service Mesh 버전 2.5.8

이번 Red Hat OpenShift Service Mesh 릴리스는 Red Hat OpenShift Service Mesh Operator 2.6.5에 포함되어 있으며 OpenShift Container Platform 4.14 이상에서 지원됩니다. 이 릴리스에서는 CVE(Common Vulnerabilities and Exposures)를 처리합니다.

2.2.5.1. 구성 요소 업데이트
Expand
Component버전

Istio

1.18.7

Envoy 프록시

1.26.8

Kiali 서버

1.73.18

2.2.5.2. 해결된 문제
  • OSSM-8608 이전에 바이너리를 복사하는 동안 설치 단계에서 CNI(Container Network Interface) Pod를 종료하면 노드 파일 시스템에 Istio-CNI 임시 파일을 남길 수 있습니다. 반복된 발생은 결국 노드 디스크 공간을 채울 수 있습니다. 이제 설치 단계에서 CNI Pod를 종료하는 동안 CNI 바이너리를 복사하기 전에 기존 임시 파일이 삭제되어 Istio 버전당 하나의 임시 파일만 노드 파일 시스템에 있는지 확인합니다.

2.2.6. Red Hat OpenShift Service Mesh 버전 2.4.14

이번 Red Hat OpenShift Service Mesh 릴리스는 Red Hat OpenShift Service Mesh Operator 2.6.5에 포함되어 있으며 OpenShift Container Platform 4.14 이상에서 지원됩니다. 이 릴리스에서는 CVE(Common Vulnerabilities and Exposures)를 처리합니다.

2.2.6.1. 구성 요소 업데이트
Expand
Component버전

Istio

1.16.7

Envoy 프록시

1.24.12

Kiali 서버

1.65.19

2.2.6.2. 해결된 문제
  • OSSM-8608 이전에 바이너리를 복사하는 동안 설치 단계에서 CNI(Container Network Interface) Pod를 종료하면 노드 파일 시스템에 Istio-CNI 임시 파일을 남길 수 있습니다. 반복된 발생은 결국 노드 디스크 공간을 채울 수 있습니다. 이제 설치 단계에서 CNI Pod를 종료하는 동안 CNI 바이너리를 복사하기 전에 기존 임시 파일이 삭제되어 Istio 버전당 하나의 임시 파일만 노드 파일 시스템에 있는지 확인합니다.

2.2.7. Red Hat OpenShift Service Mesh 버전 2.6.4

이번 Red Hat OpenShift Service Mesh 릴리스는 Red Hat OpenShift Service Mesh Operator 버전을 2.6.4로 업데이트하고 다음 ServiceMeshControlPlane 리소스 버전 업데이트( 2.6.4, 2.5.7 및 2.4.13)를 포함합니다.

이번 릴리스에서는 CVE(Common Vulnerabilities and Exposures)를 지원하며 OpenShift Container Platform 4.14 이상에서 지원됩니다.

Red Hat에서 제공하는 Kiali Operator의 최신 버전은 지원되는 모든 Red Hat OpenShift Service Mesh 버전에서 사용할 수 있습니다. Service Mesh 버전은 ServiceMeshControlPlane 리소스를 사용하여 지정합니다. Service Mesh 버전은 호환되는 Kiali 버전을 자동으로 확인합니다.

2.2.7.1. 구성 요소 업데이트
Expand
Component버전

Istio

1.20.8

Envoy 프록시

1.28.7

Kiali 서버

1.73.17

2.2.8. Red Hat OpenShift Service Mesh 버전 2.5.7

이번 Red Hat OpenShift Service Mesh 릴리스는 Red Hat OpenShift Service Mesh Operator 2.6.4에 포함되어 있으며 OpenShift Container Platform 4.14 이상에서 지원됩니다. 이 릴리스에서는 CVE(Common Vulnerabilities and Exposures)를 처리합니다.

2.2.8.1. 구성 요소 업데이트
Expand
Component버전

Istio

1.18.7

Envoy 프록시

1.26.8

Kiali 서버

1.73.17

2.2.9. Red Hat OpenShift Service Mesh 버전 2.4.13

이번 Red Hat OpenShift Service Mesh 릴리스는 Red Hat OpenShift Service Mesh Operator 2.6.4에 포함되어 있으며 OpenShift Container Platform 4.14 이상에서 지원됩니다. 이 릴리스에서는 CVE(Common Vulnerabilities and Exposures)를 처리합니다.

2.2.9.1. 구성 요소 업데이트
Expand
Component버전

Istio

1.16.7

Envoy 프록시

1.24.12

Kiali 서버

1.65.18

2.2.10. Red Hat OpenShift Service Mesh 버전 2.6.3

이번 Red Hat OpenShift Service Mesh 릴리스는 Red Hat OpenShift Service Mesh Operator 버전을 2.6.3으로 업데이트하고 다음 ServiceMeshControlPlane 리소스 버전 업데이트( 2.6.3, 2.5.6, 2.4.12)를 포함합니다.

이번 릴리스에서는 CVE(Common Vulnerabilities and Exposures)를 지원하며 OpenShift Container Platform 4.14 이상에서 지원됩니다.

Red Hat에서 제공하는 Kiali Operator의 최신 버전은 지원되는 모든 Red Hat OpenShift Service Mesh 버전에서 사용할 수 있습니다. Service Mesh 버전은 ServiceMeshControlPlane 리소스를 사용하여 지정합니다. Service Mesh 버전은 호환되는 Kiali 버전을 자동으로 확인합니다.

2.2.10.1. 구성 요소 업데이트
Expand
Component버전

Istio

1.20.8

Envoy 프록시

1.28.7

Kiali 서버

1.73.16

2.2.11. Red Hat OpenShift Service Mesh 버전 2.5.6

이번 Red Hat OpenShift Service Mesh 릴리스는 Red Hat OpenShift Service Mesh Operator 2.6.3에 포함되어 있으며 CVE(Common Vulnerabilities and Exposures)를 사용하며 OpenShift Container Platform 4.14 이상에서 지원됩니다.

2.2.11.1. 구성 요소 업데이트
Expand
Component버전

Istio

1.18.7

Envoy 프록시

1.26.8

Kiali 서버

1.73.16

2.2.12. Red Hat OpenShift Service Mesh 버전 2.4.12

이번 Red Hat OpenShift Service Mesh 릴리스는 Red Hat OpenShift Service Mesh Operator 2.6.3에 포함되어 있으며 CVE(Common Vulnerabilities and Exposures)를 사용하며 OpenShift Container Platform 4.14 이상에서 지원됩니다.

2.2.12.1. 구성 요소 업데이트
Expand
Component버전

Istio

1.16.7

Envoy 프록시

1.24.12

Kiali 서버

1.65.17

2.2.13. Red Hat OpenShift Service Mesh 버전 2.6.2

이번 Red Hat OpenShift Service Mesh 릴리스는 Red Hat OpenShift Service Mesh Operator 버전을 2.6.2로 업데이트하고 다음 ServiceMeshControlPlane 리소스 버전 업데이트( 2.6.2, 2.5.5 및 2.4.11)를 포함합니다.

이번 릴리스에서는 CVE(Common Vulnerabilities and Exposures)에 버그 수정이 포함되어 있으며 OpenShift Container Platform 4.14 이상에서 지원됩니다.

Red Hat에서 제공하는 Kiali Operator의 최신 버전은 지원되는 모든 Red Hat OpenShift Service Mesh 버전에서 사용할 수 있습니다. Service Mesh 버전은 ServiceMeshControlPlane 리소스를 사용하여 지정합니다. Service Mesh 버전은 호환되는 Kiali 버전을 자동으로 확인합니다.

2.2.13.1. 구성 요소 업데이트
Expand
Component버전

Istio

1.20.8

Envoy 프록시

1.28.7

Kiali 서버

1.73.15

2.2.13.2. 새로운 기능
  • cert-manager Operator for Red Hat OpenShift는 IBM Power, IBM Z 및 IBM® LinuxONE에서 지원됩니다.
2.2.13.3. 해결된 문제
  • OSSM-8099 이전 버전에서는 끝점이 드레이닝 단계에 있을 때 영구 세션 레이블을 지원하는 데 문제가 있었습니다. 이제 상태 저장 헤더 세션에 대한 끝점 드레이닝을 처리하는 방법이 있습니다.
  • 이전에 OSSM-8001 runAsUserrunAsGroup 이 Pod의 동일한 값으로 설정된 경우 프록시 GID가 컨테이너의 GID와 일치하도록 잘못 설정되어 Istio CNI에서 적용한 iptables 규칙에 대한 트래픽 인터셉션 문제가 발생했습니다. 이제 컨테이너에 runAsUser 및 runAsGroup에 동일한 값이 있을 수 있으며 iptables 규칙이 올바르게 적용될 수 있습니다.
  • OSSM-8074 이전에 서비스 메시에 숫자 전용 네임스페이스(예: 12345)가 있는 경우 Kiali Operator가 Kiali 서버를 설치하지 못했습니다. 이제 숫자만 있는 네임스페이스가 올바르게 작동합니다.

2.2.14. Red Hat OpenShift Service Mesh 버전 2.5.5

이번 Red Hat OpenShift Service Mesh 릴리스는 Red Hat OpenShift Service Mesh Operator 2.6.2에 포함되어 있으며 OpenShift Container Platform 4.14 이상에서 지원됩니다.

2.2.14.1. 구성 요소 업데이트
Expand
Component버전

Istio

1.18.7

Envoy 프록시

1.26.8

Kiali 서버

1.73.15

2.2.14.2. 해결된 문제
  • 이전에는 runAsUserrunAsGroup 매개변수가 Pod의 동일한 값으로 설정된 경우 프록시 GID가 컨테이너의 GID와 일치하도록 잘못 설정되어 Istio CNI에서 적용한 iptables 규칙에 대한 트래픽 인터셉션 문제가 발생했습니다. https://issues.redhat.com/browse/OSSM-8001 이제 컨테이너에 runAsUserrunAsGroup 매개변수에 동일한 값이 있을 수 있으며 iptables 규칙이 올바르게 적용됩니다.
  • OSSM-8074 이전에 서비스 메시에 숫자 전용 네임스페이스(예: 12345)가 있는 경우 Red Hat에서 제공하는 Kiali Operator가 Kiali 서버를 설치하지 못했습니다. 이제 숫자만 있는 네임스페이스가 올바르게 작동합니다.

2.2.15. Red Hat OpenShift Service Mesh 버전 2.4.11

이번 Red Hat OpenShift Service Mesh 릴리스는 Red Hat OpenShift Service Mesh Operator 2.6.2에 포함되어 있으며 OpenShift Container Platform 4.14 이상에서 지원됩니다.

2.2.15.1. 구성 요소 업데이트
Expand
Component버전

Istio

1.16.7

Envoy 프록시

1.24.12

Kiali 서버

1.65.16

2.2.15.2. 해결된 문제
  • 이전에는 runAsUserrunAsGroup 매개변수가 Pod의 동일한 값으로 설정된 경우 프록시 GID가 컨테이너의 GID와 일치하도록 잘못 설정되어 Istio CNI에서 적용한 iptables 규칙에 대한 트래픽 인터셉션 문제가 발생했습니다. https://issues.redhat.com/browse/OSSM-8001 이제 컨테이너에 runAsUserrunAsGroup 매개변수에 동일한 값이 있을 수 있으며 iptables 규칙이 올바르게 적용됩니다.
  • OSSM-8074 이전에 서비스 메시에 숫자 전용 네임스페이스(예: 12345)가 있는 경우 Red Hat에서 제공하는 Kiali Operator가 Kiali 서버를 설치하지 못했습니다. 이제 숫자만 있는 네임스페이스가 올바르게 작동합니다.

2.2.16. Red Hat OpenShift Service Mesh 버전 2.6.1

이번 Red Hat OpenShift Service Mesh 릴리스는 Red Hat OpenShift Service Mesh Operator 버전을 2.6.1로 업데이트하고 다음 ServiceMeshControlPlane 리소스 버전 업데이트( 2.6.1, 2.5.4 및 2.4.10)를 포함합니다. 이번 릴리스에서는 CVE(Common Vulnerabilities and Exposures)에 버그 수정이 포함되어 있으며 OpenShift Container Platform 4.14 이상에서 지원됩니다.

Red Hat에서 제공하는 Kiali Operator의 최신 버전은 지원되는 모든 Red Hat OpenShift Service Mesh 버전에서 사용할 수 있습니다. Service Mesh 버전은 ServiceMeshControlPlane 리소스를 사용하여 지정합니다. Service Mesh 버전은 호환되는 Kiali 버전을 자동으로 확인합니다.

2.2.16.1. 구성 요소 업데이트
Expand
Component버전

Istio

1.20.8

Envoy 프록시

1.28.5

Kiali 서버

1.73.14

2.2.16.2. 해결된 문제
  • OSSM-6766 이전 버전에서는 사용자가 네임스페이스(예: 삽입 활성화 또는 비활성화)를 업데이트하거나 Istio 오브젝트(예: 트래픽 정책 생성)를 생성하려는 경우 OSSM-6766이 실패했습니다. 이제 사용자가 네임스페이스를 업데이트하거나 Istio 오브젝트를 생성하는 경우 OpenShift Service Mesh Console(OSSMC) 플러그인이 실패하지 않습니다.

2.2.17. Red Hat OpenShift Service Mesh 버전 2.5.4

이번 Red Hat OpenShift Service Mesh 릴리스는 Red Hat OpenShift Service Mesh Operator 2.6.1에 포함되어 있으며 OpenShift Container Platform 4.14 이상에서 지원됩니다.

2.2.17.1. 구성 요소 업데이트
Expand
Component버전

Istio

1.18.7

Envoy 프록시

1.26.8

Kiali 서버

1.73.14

2.2.18. Red Hat OpenShift Service Mesh 버전 2.4.10

이번 Red Hat OpenShift Service Mesh 릴리스는 Red Hat OpenShift Service Mesh Operator 2.6.1에 포함되어 있으며 OpenShift Container Platform 4.14 이상에서 지원됩니다.

2.2.18.1. 구성 요소 업데이트
Expand
Component버전

Istio

1.16.7

Envoy 프록시

1.24.12

Kiali 서버

1.65.15

2.2.19. Red Hat OpenShift Service Mesh 버전 2.6.0

이번 Red Hat OpenShift Service Mesh 릴리스는 Red Hat OpenShift Service Mesh Operator 버전을 2.6.0으로 업데이트하고 다음 ServiceMeshControlPlane 리소스 버전 업데이트(2.6.0, 2.5.3 및 2.4.9)를 포함합니다. 이번 릴리스에서는 새로운 기능을 추가하고 CVE(Common Vulnerabilities and Exposures)를 지원하며 OpenShift Container Platform 4.14 이상에서 지원됩니다.

이번 릴리스에서는 Red Hat OpenShift Service Mesh 버전 2.3에 대한 유지 관리 지원이 종료됩니다. Service Mesh 버전 2.3을 사용하는 경우 지원되는 버전으로 업데이트해야 합니다.

중요

Red Hat OpenShift Service Mesh는 FIPS용으로 설계되었습니다. 서비스 메시는 x86_64, ppc64le, s390x 아키텍처의 FIPS 140-2/140-3 Validation에 대해 NIST에 제출된 RHEL 암호화 라이브러리를 사용합니다. NIST 검증 프로그램에 대한 자세한 내용은 암호화 모듈 유효성 검사 프로그램을 참조하십시오. 검증을 위해 제출된 개별 RHEL 암호화 라이브러리의 최신 NIST 상태는 규정 준수 활동 및 정부 표준을 참조하십시오.

2.2.19.1. 구성 요소 업데이트
Expand
Component버전

Istio

1.20.8

Envoy 프록시

1.28.5

Kiali

1.73.9

2.2.19.2. Istio 1.20 지원

서비스 메시 2.6은 Istio 1.20을 기반으로 하며 다음을 포함하여 새로운 기능 및 제품 개선 사항을 제공합니다.

  • 네이티브 사이드카는 OpenShift Container Platform 4.16 이상에서 지원됩니다.

    ServiceMeshControlPlane 리소스 예

    apiVersion: maistra.io/v2
    kind: ServiceMeshControlPlane
    metadata:
      name: basic
    spec:
      runtime:
        components:
          pilot:
            container:
              env:
                ENABLE_NATIVE_SIDECARS: "true"
    Copy to Clipboard Toggle word wrap

  • Istio 1.20의 트래픽 미러링은 이제 여러 대상을 지원합니다. 이 기능을 사용하면 트래픽을 다양한 엔드포인트로 미러링할 수 있으므로 다양한 서비스 버전 또는 구성에서 동시에 관찰할 수 있습니다.

Red Hat OpenShift Service Mesh는 많은 Istio 1.20 기능을 지원하지만 다음 예외에 유의하십시오.

  • 앰비언트 메시는 지원되지 않습니다.
  • Istio의 QAT(QuickAssist Technology) PrivateKeyProvider는 지원되지 않습니다.
2.2.19.3. Istio 및 Kiali 번들 이미지 이름 변경

이번 릴리스에서는 Istio 번들 이미지 이름 및 Kiali 번들 이미지 이름이 업데이트되어 Red Hat 이름 지정 규칙에 더 적합합니다.

  • Istio 번들 이미지 이름: openshift-service-mesh/istio-operator-bundle
  • Kiali 번들 이미지 이름: openshift-service-mesh/kiali-operator-bundle

이번 릴리스에서는 Red Hat OpenShift distributed tracing Platform (Tempo) 및 Red Hat build of OpenTelemetry의 추적 확장 공급자를 일반적으로 통합할 수 있습니다.

ServiceMehControlPlane 리소스의 spec.meshConfig.extensionProviders 사양에 이름이 지정된 요소와 opentelemetry 공급자를 추가하여 Red Hat OpenShift distributed tracing platform(Tempo)에 추적 데이터를 노출할 수 있습니다. 그런 다음 Telemetry 사용자 정의 리소스는 추적 범위를 수집하여 OpenTelemetry 수집기 끝점으로 전송하도록 Istio 프록시를 구성합니다.

메시 네임스페이스에 OpenTelemetry 인스턴스의 Red Hat 빌드를 생성하고 추적 데이터를 추적 플랫폼 백엔드 서비스에 전송하도록 구성할 수 있습니다.

2.2.19.5. Red Hat OpenShift distributed tracing platform (Jaeger) 기본 설정 변경

이번 릴리스에서는 ServiceMeshControlPlane 리소스의 새 인스턴스에 대해 기본적으로 Red Hat OpenShift distributed tracing Platform (Jaeger)을 비활성화합니다.

ServiceMeshControlPlane 리소스의 기존 인스턴스를 Red Hat OpenShift Service Mesh 버전 2.6로 업데이트할 때 분산 추적 플랫폼(Jaeger)은 기본적으로 활성화되어 있습니다.

Red Hat OpenShift Service Mesh 2.6은 Red Hat OpenShift distributed tracing Platform (Jaeger) 및 OpenShift Elasticsearch Operator에 대한 지원이 포함된 마지막 릴리스입니다. 다음 릴리스에서 분산 추적 플랫폼(Jaeger) 및 OpenShift Elasticsearch Operator가 모두 제거됩니다. 현재 분산 추적 플랫폼(Jaeger) 및 OpenShift Elasticsearch Operator를 사용하는 경우 Red Hat OpenShift distributed tracing Platform (Tempo) 및 Red Hat build of OpenTelemetry로 전환해야 합니다.

이번 릴리스에서는 Red Hat OpenShift Service Mesh 2.6에서 Kubernetes Gateway API 버전 1.0.0을 사용하기 위한 일반 가용성이 도입되었습니다. 이 API 사용은 Red Hat OpenShift Service Mesh로 제한됩니다. Gateway API CRD(사용자 정의 리소스 정의)는 지원되지 않습니다.

이제 클러스터 전체 모드가 활성화된 경우 게이트웨이 API가 기본적으로 활성화됩니다(spec.mode: ClusterWide). CRD(사용자 정의 리소스 정의)가 클러스터에 설치되지 않은 경우에도 활성화할 수 있습니다.

중요

다중 테넌트 메시 배포를 위한 게이트웨이 API는 여전히 기술 프리뷰로 되어 있습니다.

사용 중인 OpenShift Service Mesh 버전으로 설치해야 하는 게이트웨이 API 버전을 확인하려면 다음 표를 참조하십시오.

Expand
서비스 메시 버전Istio 버전게이트웨이 API 버전참고

2.6

1.20.x

1.0.0

해당 없음

2.5.x

1.18.x

0.6.2

ReferenceGrand 가 v0.6.2에 없기 때문에 실험적 분기를 사용합니다.

2.4.x

1.16.x

0.5.1

다중 테넌트 메시 배포의 경우 모든 게이트웨이 API CRD가 있어야 합니다. 실험적인 브랜치를 사용합니다.

PILOT_ENABLE_GATEWAY_APIfalse 로 설정하여 이 기능을 비활성화할 수 있습니다.

apiVersion: maistra.io/v2
kind: ServiceMeshControlPlane
metadata:
  name: basic
spec:
  runtime:
    components:
      pilot:
        container:
          env:
            PILOT_ENABLE_GATEWAY_API: "false"
Copy to Clipboard Toggle word wrap
2.2.19.7. 해결된 문제
  • OSSM-6754 이전에 OpenShift Container Platform 4.15에서 사용자가 서비스 세부 정보 페이지로 이동하여 Service Mesh 탭을 클릭하고 페이지를 새로 고칠 때 활성 탭이 기본 세부 정보 탭인 경우에도 서비스 메시 세부 정보 페이지가 서비스 메시 콘텐츠 정보에 남아 있었습니다. 이제 새로 고침 후 사용자는 문제 없이 서비스 세부 정보 페이지의 다른 탭을 탐색할 수 있습니다.
  • OSSM-2101 이전에 Istio Operator는 더 이상 필요하지 않은 istio-cni-node DaemonSet 및 기타 CNI 리소스를 삭제하지 않았습니다. 이제 Operator를 업그레이드한 후 클러스터에 하나 이상의 SMCP가 설치되어 있는 경우 Operator는 이 SMCP를 조정한 다음 사용되지 않은 모든 CNI 설치(v2.0 이전 CNI 버전까지)를 삭제합니다.
2.2.19.8. Kiali의 확인된 문제
  • OSSM-6099 OpenShift Service Mesh Console(OSSMC) 플러그인 설치는 IPv6 클러스터에서 실패합니다.

    해결방법: IPv4 클러스터에 OSSMC 플러그인을 설치합니다.

2.2.20. Red Hat OpenShift Service Mesh 버전 2.5.3

이번 Red Hat OpenShift Service Mesh 릴리스는 Red Hat OpenShift Service Mesh Operator 2.6.0에 포함되어 있으며 CVE(Common Vulnerabilities and Exposures)를 사용하며 OpenShift Container Platform 4.12 이상에서 지원됩니다.

2.2.20.1. 구성 요소 업데이트
Expand
Component버전

Istio

1.18.7

Envoy 프록시

1.26.8

Kiali

1.73.9

2.2.21. Red Hat OpenShift Service Mesh 버전 2.4.9

이번 Red Hat OpenShift Service Mesh 릴리스는 Red Hat OpenShift Service Mesh Operator 2.6.0에 포함되어 있으며 CVE(Common Vulnerabilities and Exposures)를 사용하며 OpenShift Container Platform 4.12 이상에서 지원됩니다.

2.2.21.1. 구성 요소 업데이트
Expand
Component버전

Istio

1.16.7

Envoy 프록시

1.24.12

Kiali

1.65.11

2.2.22. Red Hat OpenShift Service Mesh 버전 2.5.2

이번 Red Hat OpenShift Service Mesh 릴리스는 Red Hat OpenShift Service Mesh Operator 버전을 2.5.2로 업데이트하고 다음 ServiceMeshControlPlane 리소스 버전 업데이트( 2.5.2, 2.4.8 및 2.3.12)를 포함합니다. 이 릴리스에서는 CVE(Common Vulnerabilities and Exposures)에 버그 수정이 포함되어 있으며 OpenShift Container Platform 4.12 이상에서 지원됩니다.

2.2.22.1. 구성 요소 업데이트
Expand
Component버전

Istio

1.18.7

Envoy 프록시

1.26.8

Kiali

1.73.8

2.2.22.2. 해결된 문제
  • OSSM-6331 이전에 smcp.general.logging.componentLevels 사양에서 잘못된 LogLevel 값을 허용했으며 ServiceMeshControlPlane 리소스가 계속 생성되었습니다. 이제 잘못된 값이 사용되고 컨트롤 플레인이 생성되지 않은 경우 터미널에 오류 메시지가 표시됩니다.
  • OSSM-6290 이전 버전에서는 Istio Config 목록 페이지의 프로젝트 필터 드롭다운이 제대로 작동하지 않았습니다. 드롭다운 메뉴에서 특정 프로젝트를 선택한 경우에도 모든 네임스페이스에서 모든 istio 구성 항목이 표시되었습니다. 이제 필터 드롭다운에서 선택한 프로젝트에 속하는 istio 구성 항목만 표시됩니다.
  • OSSM-6298 이전에 OSSM-6298 OpenShift Service Mesh Console(OSSMC) 플러그인 내에서 항목 참조를 클릭하면 원하는 페이지를 열기 전에 콘솔에서 여러 리디렉션을 수행하는 경우가 있습니다. 그 결과 콘솔에서 열려 있는 이전 페이지로 돌아가면 웹 브라우저가 잘못된 페이지를 열 수 있었습니다. 이제 이러한 리디렉션이 발생하지 않으며 웹 브라우저에서 Back 을 클릭하면 올바른 페이지가 열립니다.
  • OSSM-6299 이전에 OpenShift Container Platform 4.15에서 트래픽 그래프 내의 노드 그래프 메뉴 옵션을 클릭하면 노드 그래프가 표시되지 않았습니다. 대신 동일한 트래픽 그래프로 페이지를 새로 고칩니다. 이제 Node graph 메뉴 옵션을 클릭하면 노드 그래프가 올바르게 표시됩니다.
  • 이전에 OSSM-6267 Red Hat OpenShift Service Mesh 2.5 Grafana에서 데이터 소스를 구성하면 데이터 쿼리 인증 오류가 발생하여 사용자가 Istio 서비스 및 워크로드 대시보드의 데이터를 볼 수 없었습니다. 이제 기존 2.5 SMCP를 버전 2.5.2 이상으로 업그레이드하면 Grafana 오류가 해결됩니다.

2.2.23. Red Hat OpenShift Service Mesh 버전 2.4.8

이번 Red Hat OpenShift Service Mesh 릴리스는 Red Hat OpenShift Service Mesh Operator 2.5.2에 포함되어 있으며 CVE(Common Vulnerabilities and Exposures)에는 버그 수정이 포함되어 있으며 OpenShift Container Platform 4.12 이상에서 지원됩니다.

Red Hat OpenShift Service Mesh Operator의 최신 버전은 지원되는 모든 Service Mesh 버전에서 사용할 수 있습니다. Service Mesh 버전은 ServiceMeshControlPlane 을 사용하여 지정합니다.

2.2.23.1. 구성 요소 업데이트
Expand
Component버전

Istio

1.16.7

Envoy 프록시

1.24.12

Kiali

1.65.11

2.2.24. Red Hat OpenShift Service Mesh 버전 2.3.12

이번 Red Hat OpenShift Service Mesh 릴리스는 Red Hat OpenShift Service Mesh Operator 2.5.2에 포함되어 있으며 CVE(Common Vulnerabilities and Exposures)에는 버그 수정이 포함되어 있으며 OpenShift Container Platform 4.12 이상에서 지원됩니다.

Red Hat OpenShift Service Mesh Operator의 최신 버전은 지원되는 모든 Service Mesh 버전에서 사용할 수 있습니다. Service Mesh 버전은 ServiceMeshControlPlane 리소스를 사용하여 지정합니다.

2.2.24.1. 구성 요소 업데이트
Expand
Component버전

Istio

1.14.5

Envoy 프록시

1.22.11

Kiali

1.57.14

2.2.25. 이전 릴리스

이러한 이전 릴리스에는 기능 및 개선 사항이 추가되었습니다.

2.2.25.1. Red Hat OpenShift Service Mesh 버전 2.5.1 새 기능

이번 Red Hat OpenShift Service Mesh 릴리스는 Red Hat OpenShift Service Mesh Operator 버전을 2.5.1로 업데이트하고 다음 ServiceMeshControlPlane 리소스 버전 업데이트( 2.5.1, 2.4.7 및 2.3.11)를 포함합니다.

이 릴리스에서는 CVE(Common Vulnerabilities and Exposures)에 버그 수정이 포함되어 있으며 OpenShift Container Platform 4.12 이상에서 지원됩니다.

2.2.25.1.1. Red Hat OpenShift Service Mesh 버전 2.5.1의 구성 요소 버전
Expand
Component버전

Istio

1.18.7

Envoy 프록시

1.26.8

Kiali

1.73.7

2.2.25.2. Red Hat OpenShift Service Mesh 버전 2.5 새 기능

이번 Red Hat OpenShift Service Mesh 릴리스는 Red Hat OpenShift Service Mesh Operator 버전을 2.5.0으로 업데이트하고 다음 ServiceMeshControlPlane 리소스 버전 업데이트( 2.5.0, 2.4.6 및 2.3.10)를 포함합니다.

이번 릴리스에서는 새로운 기능이 추가되고, CVE(Common Vulnerabilities and Exposures)에 버그 수정이 포함되어 있으며 OpenShift Container Platform 4.12 이상에서 지원됩니다.

이번 릴리스에서는 OpenShift Service Mesh 버전 2.2에 대한 유지 관리 지원이 종료됩니다. OpenShift Service Mesh 버전 2.2를 사용하는 경우 지원되는 버전으로 업데이트해야 합니다.

2.2.25.2.1. Red Hat OpenShift Service Mesh 버전 2.5의 구성 요소 버전
Expand
Component버전

Istio

1.18.7

Envoy 프록시

1.26.8

Kiali

1.73.4

2.2.25.2.2. Istio 1.18 지원

서비스 메시 2.5는 Istio 1.18을 기반으로 하며 새로운 기능 및 제품 개선 사항을 제공합니다. Red Hat OpenShift Service Mesh는 많은 Istio 1.18 기능을 지원하지만 다음 예외 사항은 다음과 같습니다.

  • 앰비언트 메시는 지원되지 않습니다.
  • Istio의 QAT(QuickAssist Technology) PrivateKeyProvider는 지원되지 않습니다.
2.2.25.2.3. cluster-Wide 메시 마이그레이션

이번 릴리스에서는 다중 테넌트 메시에서 클러스터 전체 메시로 마이그레이션하기 위한 문서가 추가되었습니다. 자세한 내용은 다음 설명서를 참조하십시오.

  • "클러스터 전체 메시로 마이그레이션에 대한 정보"
  • "클러스터 전체 메시에서 네임스페이스 제외"
  • "클러스터 메시에서 사이드카 삽입을 수신하는 네임스페이스 정의"
  • "클러스터 전체 메시에서 개별 Pod 제외"
2.2.25.2.4. ARM 기반 클러스터의 Red Hat OpenShift Service Mesh Operator

이번 릴리스에서는 ARM 기반 클러스터의 Red Hat OpenShift Service Mesh Operator가 일반적으로 사용 가능한 기능으로 제공됩니다.

2.2.25.2.5. Red Hat OpenShift distributed tracing Platform (Tempo) Stack과의 통합

이 릴리스에서는 추적 확장 공급자의 일반적으로 사용 가능한 통합이 도입되었습니다. 이름이 지정된 요소 및 zipkin 공급자를 spec.meshConfig.extensionProviders 사양에 추가하여 Red Hat OpenShift distributed tracing platform(Tempo) 스택에 추적 데이터를 노출할 수 있습니다. 그런 다음 Telemetry 사용자 정의 리소스는 추적 범위를 수집하여 Tempo 배포자 서비스 엔드포인트로 전송하도록 Istio 프록시를 구성합니다.

참고

Red Hat OpenShift distributed tracing platform (Tempo) Stack은 IBM Z에서 지원되지 않습니다.

2.2.25.2.6. OpenShift Service Mesh 콘솔 플러그인

이번 릴리스에서는 일반적으로 사용 가능한 OpenShift Service Mesh Console(OSSMC) 플러그인이 도입되었습니다.

OSSMC 플러그인은 서비스 메시에 대한 가시성을 제공하는 OpenShift 콘솔의 확장입니다. OSSMC 플러그인이 설치된 경우 새 Service Mesh 메뉴 옵션은 웹 콘솔의 탐색 창과 기존 워크로드 및 서비스 콘솔 페이지를 개선하는 새 서비스 메시 탭에서 사용할 수 있습니다.

OSSMC 플러그인의 기능은 독립 실행형 Kiali 콘솔의 기능과 매우 유사합니다. OSSMC 플러그인은 Kiali 콘솔을 대체하지 않으며 OSSMC 플러그인을 설치한 후에도 독립 실행형 Kiali 콘솔에 계속 액세스할 수 있습니다.

2.2.25.2.7. Istio OpenShift Routing (IOR) 기본 설정 변경

Istio OpenShift Routing (IOR)의 기본 설정이 변경되었습니다. 이번 릴리스에서는 ServiceMeshControlPlane 리소스의 새 인스턴스에 대해 자동 경로가 기본적으로 비활성화되어 있습니다.

ServiceMeshControlPlane 리소스의 새 인스턴스의 경우 ServiceMeshControlPlane 리소스의 gateways.openshiftRoute 사양에서 enabled 필드를 true 로 설정하여 자동 경로를 사용할 수 있습니다.

ServiceMeshControlPlane 리소스 예

apiVersion: maistra.io/v2
kind: ServiceMeshControlPlane
spec:
  gateways:
    openshiftRoute:
      enabled: true
Copy to Clipboard Toggle word wrap

ServiceMeshControlPlane 리소스의 기존 인스턴스를 Red Hat OpenShift Service Mesh 버전 2.5로 업데이트할 때 자동 경로는 기본적으로 활성화되어 있습니다.

2.2.25.2.8. Istio 프록시 동시성 구성 개선 사항

networking.istio API의 concurrency 매개변수는 Istio 프록시가 실행되는 작업자 스레드 수를 구성합니다.

배포 간 일관성을 위해 이제 Istio는 프록시 컨테이너에 할당된 CPU 제한에 따라 동시성 매개변수를 구성합니다. 예를 들어, 2500m의 제한은 concurrency 매개변수를 3 으로 설정합니다. concurrency 매개변수를 다른 값으로 설정하면 Istio는 해당 값을 사용하여 CPU 제한을 사용하는 대신 프록시가 실행되는 스레드 수를 구성합니다.

이전에는 매개변수의 기본 설정은 2 입니다.

2.2.25.2.9. 게이트웨이 API CRD 버전
중요

OpenShift Container Platform Gateway API 지원은 기술 프리뷰 기능 전용입니다. 기술 프리뷰 기능은 Red Hat 프로덕션 서비스 수준 계약(SLA)에서 지원되지 않으며 기능적으로 완전하지 않을 수 있습니다. 따라서 프로덕션 환경에서 사용하는 것은 권장하지 않습니다. 이러한 기능을 사용하면 향후 제품 기능을 조기에 이용할 수 있어 개발 과정에서 고객이 기능을 테스트하고 피드백을 제공할 수 있습니다.

Red Hat 기술 프리뷰 기능의 지원 범위에 대한 자세한 내용은 기술 프리뷰 기능 지원 범위를 참조하십시오.

이제 Gateway API CRD(사용자 정의 리소스 정의)의 새 버전을 사용할 수 있습니다. 사용 중인 OpenShift Service Mesh 버전으로 설치해야 하는 게이트웨이 API 버전을 확인하려면 다음 표를 참조하십시오.

Expand
서비스 메시 버전Istio 버전게이트웨이 API 버전참고

2.5.x

1.18.x

0.6.2

ReferenceGrand 가 v0.6.2에 없기 때문에 실험적 분기 사용

2.4.x

1.16.x

0.5.1

다중 테넌트 메시 배포의 경우 모든 게이트웨이 API CRD가 있어야 합니다. 실험적인 브랜치를 사용합니다.

2.2.25.3. Red Hat OpenShift Service Mesh 버전 2.4.7 새 기능

이번 Red Hat OpenShift Service Mesh 릴리스는 Red Hat OpenShift Service Mesh Operator 2.5.1에 포함되어 있으며 CVE(Common Vulnerabilities and Exposures)에는 버그 수정이 포함되어 있으며 OpenShift Container Platform 4.12 이상에서 지원됩니다.

2.2.25.3.1. Red Hat OpenShift Service Mesh 버전 2.4.7의 구성 요소 버전
Expand
Component버전

Istio

1.16.7

Envoy 프록시

1.24.12

Kiali

1.65.11

2.2.25.4. Red Hat OpenShift Service Mesh 버전 2.4.6 새 기능

이번 Red Hat OpenShift Service Mesh 릴리스는 Red Hat OpenShift Service Mesh Operator 2.5.0에 포함되어 있으며 CVE(Common Vulnerabilities and Exposures)에는 버그 수정이 포함되어 있으며 OpenShift Container Platform 4.12 이상에서 지원됩니다.

2.2.25.4.1. Red Hat OpenShift Service Mesh 버전 2.4.6의 구성 요소 버전
Expand
Component버전

Istio

1.16.7

Envoy 프록시

1.24.12

Kiali

1.65.11

2.2.25.5. Red Hat OpenShift Service Mesh 버전 2.4.5 새 기능

이번 Red Hat OpenShift Service Mesh 릴리스는 Red Hat OpenShift Service Mesh Operator 버전을 2.4.5로 업데이트하고 다음 ServiceMeshControlPlane 리소스 버전 업데이트인 2.4.5, 2.3.9 및 2.2.12를 포함합니다.

이번 릴리스에서는 CVE(Common Vulnerabilities and Exposures)에 버그 수정이 포함되어 있으며 OpenShift Container Platform 4.11 이상에서 지원됩니다.

2.2.25.5.1. Red Hat OpenShift Service Mesh 버전 2.4.5에 포함된 구성 요소 버전
Expand
Component버전

Istio

1.16.7

Envoy 프록시

1.24.12

Kiali

1.65.11

2.2.25.6. Red Hat OpenShift Service Mesh 버전 2.4.4 새 기능

이번 Red Hat OpenShift Service Mesh 릴리스는 CVE(Common Vulnerabilities and Exposures)에 대한 버그 수정이 포함되어 있으며 OpenShift Container Platform 4.11 이상 버전에서 지원됩니다.

2.2.25.6.1. Red Hat OpenShift Service Mesh 버전 2.4.4에 포함된 구성 요소 버전
Expand
Component버전

Istio

1.16.7

Envoy 프록시

1.24.12

Jaeger

1.47.0

Kiali

1.65.10

2.2.25.7. Red Hat OpenShift Service Mesh 버전 2.4.3 새 기능
  • Red Hat OpenShift Service Mesh Operator는 이제 ARM 기반 클러스터에서 기술 프리뷰 기능으로 사용할 수 있습니다.
  • gRPC API를 사용하여 외부 인증 공급자를 구성하는 데 사용되는 envoyExtAuthzGrpc 필드가 추가되었습니다.
  • CVE(Common Vulnerabilities and Exposures)가 해결되었습니다.
  • 이 릴리스는 OpenShift Container Platform 4.10 및 최신 버전에서 지원됩니다.
2.2.25.7.1. Red Hat OpenShift Service Mesh 버전 2.4.3에 포함된 구성 요소 버전
Expand
Component버전

Istio

1.16.7

Envoy 프록시

1.24.10

Jaeger

1.42.0

Kiali

1.65.8

2.2.25.7.2. Red Hat OpenShift Service Mesh operator to ARM 기반 클러스터
중요

Red Hat OpenShift Service Mesh operator to ARM 기반 클러스터는 기술 프리뷰 기능 전용입니다. 기술 프리뷰 기능은 Red Hat 프로덕션 서비스 수준 계약(SLA)에서 지원되지 않으며 기능적으로 완전하지 않을 수 있습니다. 따라서 프로덕션 환경에서 사용하는 것은 권장하지 않습니다. 이러한 기능을 사용하면 향후 제품 기능을 조기에 이용할 수 있어 개발 과정에서 고객이 기능을 테스트하고 피드백을 제공할 수 있습니다.

Red Hat 기술 프리뷰 기능의 지원 범위에 대한 자세한 내용은 기술 프리뷰 기능 지원 범위를 참조하십시오.

이번 릴리스에서는 ARM 기반 클러스터에서 Red Hat OpenShift Service Mesh Operator를 기술 프리뷰 기능으로 사용할 수 있습니다. 이미지는 Istio, Envoy, Prometheus, Kiali, Grafana에서 사용할 수 있습니다. Jaeger에서 이미지를 사용할 수 없으므로 Jaeger를 서비스 메시 애드온으로 비활성화해야 합니다.

2.2.25.7.3. 외부 인증 구성에 대한 원격 프로시저 호출(gRPC) API 지원

이번 개선된 기능에는 gRPC API를 사용하여 외부 권한 부여 공급자를 구성하기 위해 envoyExtAuthzGrpc 필드가 추가되었습니다.

2.2.25.8. Red Hat OpenShift Service Mesh 버전 2.4.2 새 기능

이번 Red Hat OpenShift Service Mesh 릴리스는 CVE(Common Vulnerabilities and Exposures)에 대한 버그 수정이 포함되어 있으며 OpenShift Container Platform 4.10 이상 버전에서 지원됩니다.

2.2.25.8.1. Red Hat OpenShift Service Mesh 버전 2.4.2에 포함된 구성 요소 버전
Expand
Component버전

Istio

1.16.7

Envoy 프록시

1.24.10

Jaeger

1.42.0

Kiali

1.65.7

2.2.25.9. Red Hat OpenShift Service Mesh 버전 2.4.1 새 기능

이번 Red Hat OpenShift Service Mesh 릴리스는 CVE(Common Vulnerabilities and Exposures)에 대한 버그 수정이 포함되어 있으며 OpenShift Container Platform 4.10 이상 버전에서 지원됩니다.

2.2.25.9.1. Red Hat OpenShift Service Mesh 버전 2.4.1에 포함된 구성 요소 버전
Expand
Component버전

Istio

1.16.5

Envoy 프록시

1.24.8

Jaeger

1.42.0

Kiali

1.65.7

2.2.25.10. Red Hat OpenShift Service Mesh 버전 2.4 새 기능

이번 Red Hat OpenShift Service Mesh 릴리스는 CVE(Common Vulnerabilities and Exposures)에 대한 버그 수정이 포함되어 있으며 OpenShift Container Platform 4.10 이상 버전에서 지원됩니다.

2.2.25.10.1. Red Hat OpenShift Service Mesh 버전 2.4에 포함된 구성 요소 버전
Expand
Component버전

Istio

1.16.5

Envoy 프록시

1.24.8

Jaeger

1.42.0

Kiali

1.65.6

2.2.25.10.2. 클러스터 전체 배포

이번 개선된 기능에는 일반적으로 사용 가능한 클러스터 전체 배포 버전이 도입되었습니다. 클러스터 전체 배포에는 전체 클러스터의 리소스를 모니터링하는 서비스 메시 컨트롤 플레인이 포함되어 있습니다. 컨트롤 플레인은 모든 네임스페이스에서 단일 쿼리를 사용하여 메시 구성에 영향을 주는 각 Istio 또는 Kubernetes 리소스를 모니터링합니다. 컨트롤 플레인이 클러스터 전체 배포에서 수행하는 쿼리 수를 줄이면 성능이 향상됩니다.

2.2.25.10.3. 검색 선택기 지원

이번 개선된 기능에는 meshConfig.discoverySelectors 필드의 일반적으로 사용 가능한 버전이 도입되어 클러스터 전체 배포에서 서비스 메시 컨트롤 플레인에서 검색할 수 있는 서비스를 제한할 수 있습니다.

spec:
  meshConfig
    discoverySelectors:
    - matchLabels:
        env: prod
        region: us-east1
    - matchExpressions:
      - key: app
        operator: In
        values:
          - cassandra
          - spark
Copy to Clipboard Toggle word wrap
2.2.25.10.4. cert-manager istio-csr과의 통합

이번 업데이트를 통해 Red Hat OpenShift Service Mesh는 cert-manager 컨트롤러 및 istio-csr 에이전트와 통합됩니다. cert-manager 는 인증서 및 인증서 발행자를 Kubernetes 클러스터에서 리소스 유형으로 추가하고 해당 인증서를 획득, 갱신 및 사용하는 프로세스를 단순화합니다. cert-manager 는 Istio의 중간 CA 인증서를 제공하고 순환합니다. istio-csr 과의 통합을 통해 사용자는 Istio 프록시에서 인증서 요청을 cert-manager 에 위임할 수 있습니다. ServiceMeshControlPlane v2.4에서는 cert-manager 에서 cacerts 시크릿으로 제공하는 CA 인증서를 허용합니다.

참고

cert-manageristio-csr 과의 통합은 IBM Power®, IBM Z® 및 IBM® LinuxONE에서 지원되지 않습니다.

2.2.25.10.5. 외부 권한 부여 시스템과 통합

이번 개선된 기능에는 AuthorizationPolicy 리소스의 action: CUSTOM 필드를 사용하여 Red Hat OpenShift Service Mesh를 외부 권한 부여 시스템과 통합하는 데 일반적으로 사용 가능한 방법이 도입되었습니다. envoyExtAuthzHttp 필드를 사용하여 액세스 제어를 외부 권한 부여 시스템에 위임합니다.

2.2.25.10.6. 외부 Prometheus 설치와 통합

이번 개선된 기능에는 일반적으로 사용 가능한 Prometheus 확장 공급자 버전이 도입되었습니다. spec.meshConfig 사양에서 extensionProviders 필드의 값을 prometheus 로 설정하여 OpenShift Container Platform 모니터링 스택 또는 사용자 정의 Prometheus 설치에 지표를 노출할 수 있습니다. Telemetry 오브젝트는 트래픽 지표를 수집하도록 Istio 프록시를 구성합니다. 서비스 메시는 Prometheus 지표에 대한 Telemetry API만 지원합니다.

spec:
  meshConfig:
    extensionProviders:
    - name: prometheus
      prometheus: {}
---
apiVersion: telemetry.istio.io/v1alpha1
kind: Telemetry
metadata:
  name: enable-prometheus-metrics
spec:
  metrics:
  - providers:
    - name: prometheus
Copy to Clipboard Toggle word wrap
2.2.25.10.7. 단일 스택 IPv6 지원

이번 개선된 기능을 통해 단일 스택 IPv6 클러스터를 일반적으로 지원하여 광범위한 IP 주소에 대한 액세스를 제공합니다. 듀얼 스택 IPv4 또는 IPv6 클러스터는 지원되지 않습니다.

참고

IBM Power®, IBM Z® 및 IBM® LinuxONE에서는 단일 스택 IPv6 지원을 사용할 수 없습니다.

2.2.25.10.8. OpenShift Container Platform Gateway API 지원
중요

OpenShift Container Platform Gateway API 지원은 기술 프리뷰 기능 전용입니다. 기술 프리뷰 기능은 Red Hat 프로덕션 서비스 수준 계약(SLA)에서 지원되지 않으며 기능적으로 완전하지 않을 수 있습니다. 따라서 프로덕션 환경에서 사용하는 것은 권장하지 않습니다. 이러한 기능을 사용하면 향후 제품 기능을 조기에 이용할 수 있어 개발 과정에서 고객이 기능을 테스트하고 피드백을 제공할 수 있습니다.

Red Hat 기술 프리뷰 기능의 지원 범위에 대한 자세한 내용은 기술 프리뷰 기능 지원 범위를 참조하십시오.

이번 개선된 기능에는 OpenShift Container Platform Gateway API의 업데이트된 기술 프리뷰 버전이 도입되었습니다. 기본적으로 OpenShift Container Platform Gateway API는 비활성화되어 있습니다.

2.2.25.10.8.1. OpenShift Container Platform Gateway API 활성화

OpenShift Container Platform Gateway API를 활성화하려면 ServiceMeshControlPlane 리소스의 techPreview.gatewayAPI 사양에서 enabled 필드의 값을 true 로 설정합니다.

spec:
  techPreview:
    gatewayAPI:
      enabled: true
Copy to Clipboard Toggle word wrap

이전에는 환경 변수를 사용하여 Gateway API를 활성화했습니다.

spec:
  runtime:
    components:
      pilot:
        container:
          env:
            PILOT_ENABLE_GATEWAY_API: "true"
            PILOT_ENABLE_GATEWAY_API_STATUS: "true"
            PILOT_ENABLE_GATEWAY_API_DEPLOYMENT_CONTROLLER: "true"
Copy to Clipboard Toggle word wrap
2.2.25.10.9. 인프라 노드에 컨트롤 플레인 배포

OpenShift 인프라 노드에서 서비스 메시 컨트롤 플레인 배포가 지원 및 문서화됩니다. 자세한 내용은 다음 설명서를 참조하십시오.

  • 인프라 노드에서 실행되도록 모든 Service Mesh Control Plane 구성 요소 구성
  • 인프라 노드에서 실행되도록 개별 Service Mesh Control Plane 구성 요소 구성
2.2.25.10.10. Istio 1.16 지원

Service Mesh 2.4는 Istio 1.16을 기반으로 하며 새로운 기능 및 제품 개선 사항을 제공합니다. 많은 Istio 1.16 기능이 지원되지만 다음 예외가 표시되어야 합니다.

  • 사이드카의 HBONE 프로토콜은 지원되지 않는 실험 기능입니다.
  • ARM64 아키텍처의 서비스 메시는 지원되지 않습니다.
  • OpenTelemetry API는 기술 프리뷰 기능으로 유지됩니다.
2.2.25.11. Red Hat OpenShift Service Mesh 버전 2.3.11 새 기능

이번 Red Hat OpenShift Service Mesh 릴리스는 Red Hat OpenShift Service Mesh Operator 2.5.1에 포함되어 있으며 CVE(Common Vulnerabilities and Exposures)에는 버그 수정이 포함되어 있으며 OpenShift Container Platform 4.12 이상에서 지원됩니다.

2.2.25.11.1. Red Hat OpenShift Service Mesh 버전 2.3.11의 구성 요소 버전
Expand
Component버전

Istio

1.14.5

Envoy 프록시

1.22.11

Kiali

1.57.14

2.2.25.12. Red Hat OpenShift Service Mesh 버전 2.3.10 새 기능

이번 Red Hat OpenShift Service Mesh 릴리스는 Red Hat OpenShift Service Mesh Operator 2.5.0에 포함되어 있으며 CVE(Common Vulnerabilities and Exposures)에는 버그 수정이 포함되어 있으며 OpenShift Container Platform 4.12 이상에서 지원됩니다.

2.2.25.12.1. Red Hat OpenShift Service Mesh 버전 2.3.10의 구성 요소 버전
Expand
Component버전

Istio

1.14.5

Envoy 프록시

1.22.11

Kiali

1.57.14

2.2.25.13. Red Hat OpenShift Service Mesh 버전 2.3.9 새 기능

이번 Red Hat OpenShift Service Mesh 릴리스는 Red Hat OpenShift Service Mesh Operator 2.4.5에 포함되어 있으며 CVE(Common Vulnerabilities and Exposures)에 포함되어 있으며 버그 수정이 포함되어 있으며 OpenShift Container Platform 4.11 이상에서 지원됩니다.

2.2.25.13.1. Red Hat OpenShift Service Mesh 버전 2.3.9에 포함된 구성 요소 버전
Expand
Component버전

Istio

1.14.5

Envoy 프록시

1.22.11

Jaeger

1.47.0

Kiali

1.57.14

2.2.25.14. Red Hat OpenShift Service Mesh 버전 2.3.8 새 기능

이번 Red Hat OpenShift Service Mesh 릴리스는 CVE(Common Vulnerabilities and Exposures)에 대한 버그 수정이 포함되어 있으며 OpenShift Container Platform 4.11 이상 버전에서 지원됩니다.

2.2.25.14.1. Red Hat OpenShift Service Mesh 버전 2.3.8에 포함된 구성 요소 버전
Expand
Component버전

Istio

1.14.5

Envoy 프록시

1.22.11

Jaeger

1.47.0

Kiali

1.57.13

2.2.25.15. Red Hat OpenShift Service Mesh 버전 2.3.7 새 기능

이번 Red Hat OpenShift Service Mesh 릴리스는 CVE(Common Vulnerabilities and Exposures)에 대한 버그 수정이 포함되어 있으며 OpenShift Container Platform 4.10 이상 버전에서 지원됩니다.

2.2.25.15.1. Red Hat OpenShift Service Mesh 버전 2.3.7에 포함된 구성 요소 버전
Expand
Component버전

Istio

1.14.6

Envoy 프록시

1.22.11

Jaeger

1.42.0

Kiali

1.57.11

2.2.25.16. Red Hat OpenShift Service Mesh 버전 2.3.6 새 기능

이번 Red Hat OpenShift Service Mesh 릴리스는 CVE(Common Vulnerabilities and Exposures)에 대한 버그 수정이 포함되어 있으며 OpenShift Container Platform 4.10 이상 버전에서 지원됩니다.

2.2.25.16.1. Red Hat OpenShift Service Mesh 버전 2.3.6에 포함된 구성 요소 버전
Expand
Component버전

Istio

1.14.5

Envoy 프록시

1.22.11

Jaeger

1.42.0

Kiali

1.57.10

2.2.25.17. Red Hat OpenShift Service Mesh 버전 2.3.5 새 기능

이번 Red Hat OpenShift Service Mesh 릴리스는 CVE(Common Vulnerabilities and Exposures)에 대한 버그 수정이 포함되어 있으며 OpenShift Container Platform 4.10 이상 버전에서 지원됩니다.

2.2.25.17.1. Red Hat OpenShift Service Mesh 버전 2.3.5에 포함된 구성 요소 버전
Expand
Component버전

Istio

1.14.5

Envoy 프록시

1.22.9

Jaeger

1.42.0

Kiali

1.57.10

2.2.25.18. Red Hat OpenShift Service Mesh 버전 2.3.4 새 기능

이번 Red Hat OpenShift Service Mesh 릴리스는 CVE(Common Vulnerabilities and Exposures)에 대한 버그 수정이 포함되어 있으며 OpenShift Container Platform 4.10 이상 버전에서 지원됩니다.

2.2.25.18.1. Red Hat OpenShift Service Mesh 버전 2.3.4에 포함된 구성 요소 버전
Expand
Component버전

Istio

1.14.6

Envoy 프록시

1.22.9

Jaeger

1.42.0

Kiali

1.57.9

2.2.25.19. Red Hat OpenShift Service Mesh 버전 2.3.3 새 기능

이번 Red Hat OpenShift Service Mesh 릴리스는 CVE(Common Vulnerabilities and Exposures)에 버그 수정이 포함되어 있으며 OpenShift Container Platform 4.9 이상 버전에서 지원됩니다.

2.2.25.19.1. Red Hat OpenShift Service Mesh 버전 2.3.3에 포함된 구성 요소 버전
Expand
Component버전

Istio

1.14.5

Envoy 프록시

1.22.9

Jaeger

1.42.0

Kiali

1.57.7

2.2.25.20. Red Hat OpenShift Service Mesh 버전 2.3.2 새 기능

이번 Red Hat OpenShift Service Mesh 릴리스는 CVE(Common Vulnerabilities and Exposures)에 버그 수정이 포함되어 있으며 OpenShift Container Platform 4.9 이상 버전에서 지원됩니다.

2.2.25.20.1. Red Hat OpenShift Service Mesh 버전 2.3.2에 포함된 구성 요소 버전
Expand
Component버전

Istio

1.14.5

Envoy 프록시

1.22.7

Jaeger

1.39

Kiali

1.57.6

2.2.25.21. Red Hat OpenShift Service Mesh 버전 2.3.1 새 기능

이번 Red Hat OpenShift Service Mesh 릴리스에는 새로운 기능이 도입되고, CVE(Common Vulnerabilities and Exposures)에 버그 수정이 포함되어 있으며 OpenShift Container Platform 4.9 이상 버전에서 지원됩니다.

2.2.25.21.1. Red Hat OpenShift Service Mesh 버전 2.3.1에 포함된 구성 요소 버전
Expand
Component버전

Istio

1.14.5

Envoy 프록시

1.22.4

Jaeger

1.39

Kiali

1.57.5

2.2.25.22. Red Hat OpenShift Service Mesh 버전 2.3 새 기능

이번 Red Hat OpenShift Service Mesh 릴리스에는 새로운 기능이 도입되고, CVE(Common Vulnerabilities and Exposures)에 버그 수정이 포함되어 있으며 OpenShift Container Platform 4.9 이상 버전에서 지원됩니다.

2.2.25.22.1. Red Hat OpenShift Service Mesh 버전 2.3에 포함된 구성 요소 버전
Expand
Component버전

Istio

1.14.3

Envoy 프록시

1.22.4

Jaeger

1.38

Kiali

1.57.3

openshift-operators 네임스페이스에는 새 istio CNI DaemonSet istio-cni-node-v2-3 및 새 ConfigMap 리소스 istio-cni-config-v2-3 이 포함됩니다.

Service Mesh Control Plane 2.3으로 업그레이드할 때 기존 istio-cni-node DaemonSet은 변경되지 않으며 새 istio-cni-node-v2-3 DaemonSet이 생성됩니다.

이 이름 변경은 이전 릴리스 또는 이전 릴리스를 사용하여 배포된 Service Mesh Control Plane과 연결된 istio-cni-node CNI DaemonSet에는 영향을 미치지 않습니다.

2.2.25.22.3. 게이트웨이 삽입 지원

이 릴리스에서는 게이트웨이 삽입을 일반적으로 지원합니다. 게이트웨이 구성은 서비스 워크로드와 함께 실행되는 사이드카 Envoy 프록시 대신 메시의 에지에서 실행되는 독립 실행형 Envoy 프록시에 적용됩니다. 이를 통해 게이트웨이 옵션을 사용자 지정할 수 있습니다. 게이트웨이 삽입을 사용하는 경우 게이트웨이 프록시를 실행하려는 네임스페이스에 다음 리소스를 생성해야 합니다( Service,Deployment,Role, RoleBinding ).

2.2.25.22.4. Istio 1.14 지원

서비스 메시 2.3은 Istio 1.14를 기반으로 하며 새로운 기능과 제품 개선 사항을 제공합니다. 많은 Istio 1.14 기능이 지원되지만 다음 예외가 표시되어야 합니다.

  • ProxyConfig API는 image 필드를 제외하고 지원됩니다.
  • Telemetry API는 기술 프리뷰 기능입니다.
  • SPIRE 런타임은 지원되는 기능이 아닙니다.
2.2.25.22.5. OpenShift Service Mesh 콘솔
중요

OpenShift Service Mesh Console은 기술 프리뷰 기능 전용입니다. 기술 프리뷰 기능은 Red Hat 프로덕션 서비스 수준 계약(SLA)에서 지원되지 않으며 기능적으로 완전하지 않을 수 있습니다. 따라서 프로덕션 환경에서 사용하는 것은 권장하지 않습니다. 이러한 기능을 사용하면 향후 제품 기능을 조기에 이용할 수 있어 개발 과정에서 고객이 기능을 테스트하고 피드백을 제공할 수 있습니다.

Red Hat 기술 프리뷰 기능의 지원 범위에 대한 자세한 내용은 기술 프리뷰 기능 지원 범위를 참조하십시오.

이번 릴리스에서는 Kiali 인터페이스를 OpenShift 웹 콘솔에 직접 통합하는 OpenShift Container Platform Service Mesh 콘솔의 기술 프리뷰 버전이 도입되었습니다. 자세한 내용은 OpenShift Service Mesh 콘솔 소개 (기술 프리뷰)를 참조하십시오.

2.2.25.22.6. 클러스터 전체 배포
중요

클러스터 전체 배포는 기술 프리뷰 기능 전용입니다. 기술 프리뷰 기능은 Red Hat 프로덕션 서비스 수준 계약(SLA)에서 지원되지 않으며 기능적으로 완전하지 않을 수 있습니다. 따라서 프로덕션 환경에서 사용하는 것은 권장하지 않습니다. 이러한 기능을 사용하면 향후 제품 기능을 조기에 이용할 수 있어 개발 과정에서 고객이 기능을 테스트하고 피드백을 제공할 수 있습니다.

Red Hat 기술 프리뷰 기능의 지원 범위에 대한 자세한 내용은 기술 프리뷰 기능 지원 범위를 참조하십시오.

이번 릴리스에서는 클러스터 전체 배포가 기술 프리뷰 기능으로 도입되었습니다. 클러스터 전체 배포에는 전체 클러스터의 리소스를 모니터링하는 Service Mesh Control Plane이 포함되어 있습니다. 컨트롤 플레인은 모든 네임스페이스에서 단일 쿼리를 사용하여 메시 구성에 영향을 주는 각 Istio 또는 Kubernetes 리소스 유형을 모니터링합니다. 반대로 다중 테넌트 접근 방식은 각 리소스 유형에 대해 네임스페이스당 쿼리를 사용합니다. 컨트롤 플레인이 클러스터 전체 배포에서 수행하는 쿼리 수를 줄이면 성능이 향상됩니다.

참고

이 클러스터 전체 배포 문서는 SMCP v2.3을 사용하여 배포된 컨트롤 플레인에만 적용됩니다. SMCP v2.3을 사용하여 생성된 클러스터 전체 배포는 SMCP v2.4를 사용하여 생성된 클러스터 전체 배포와 호환되지 않습니다.

2.2.25.22.6.1. 클러스터 전체 배포 구성

다음 예제 ServiceMeshControlPlane 오브젝트는 클러스터 전체 배포를 구성합니다.

클러스터 전체 배포에 사용할 SMCP를 생성하려면 사용자가 cluster-admin ClusterRole에 속해야 합니다. SMCP가 클러스터 전체 배포에 대해 구성된 경우 클러스터에서 유일한 SMCP여야 합니다. 컨트롤 플레인 모드를 다중 테넌트에서 클러스터 전체(또는 클러스터 전체)에서 다중 테넌트로 변경할 수 없습니다. 다중 테넌트 컨트롤 플레인이 이미 있는 경우 이를 삭제하고 새 컨트롤 플레인을 생성합니다.

이 예제에서는 클러스터 전체 배포를 위해 SMCP를 구성합니다.

  apiVersion: maistra.io/v2
  kind: ServiceMeshControlPlane
  metadata:
    name: cluster-wide
    namespace: istio-system
  spec:
    version: v2.3
    techPreview:
      controlPlaneMode: ClusterScoped 
1
Copy to Clipboard Toggle word wrap
1
Istiod는 각 개별 네임스페이스를 모니터링하지 않고 클러스터 수준에서 리소스를 모니터링할 수 있습니다.

또한 클러스터 전체 배포를 위해 SMMR을 구성해야 합니다. 이 예에서는 클러스터 전체 배포를 위해 SMMR을 구성합니다.

  apiVersion: maistra.io/v1
  kind: ServiceMeshMemberRoll
  metadata:
    name: default
  spec:
    members:
    - '*' 
1
Copy to Clipboard Toggle word wrap
1
나중에 생성하는 네임스페이스를 포함하여 메시에 모든 네임스페이스를 추가합니다. 다음 네임스페이스는 mesh의 일부가 아닙니다( kube, openshift, kube-* 및 openshift-*).
2.2.25.23. Red Hat OpenShift Service Mesh 버전 2.2.12 새 기능

이번 Red Hat OpenShift Service Mesh 릴리스는 Red Hat OpenShift Service Mesh Operator 2.4.5에 포함되어 있으며 CVE(Common Vulnerabilities and Exposures)에 포함되어 있으며 버그 수정이 포함되어 있으며 OpenShift Container Platform 4.11 이상에서 지원됩니다.

2.2.25.23.1. Red Hat OpenShift Service Mesh 버전 2.2.12에 포함된 구성 요소 버전
Expand
Component버전

Istio

1.12.9

Envoy 프록시

1.20.8

Jaeger

1.47.0

Kiali

1.48.11

2.2.25.24. Red Hat OpenShift Service Mesh 버전 2.2.11 새 기능

이번 Red Hat OpenShift Service Mesh 릴리스는 CVE(Common Vulnerabilities and Exposures)에 대한 버그 수정이 포함되어 있으며 OpenShift Container Platform 4.11 이상 버전에서 지원됩니다.

2.2.25.24.1. Red Hat OpenShift Service Mesh 버전 2.2.11에 포함된 구성 요소 버전
Expand
Component버전

Istio

1.12.9

Envoy 프록시

1.20.8

Jaeger

1.47.0

Kiali

1.48.10

2.2.25.25. Red Hat OpenShift Service Mesh 버전 2.2.10 새 기능

이번 Red Hat OpenShift Service Mesh 릴리스는 CVE(Common Vulnerabilities and Exposures)에 대한 버그 수정이 포함되어 있으며 OpenShift Container Platform 4.10 이상 버전에서 지원됩니다.

2.2.25.25.1. Red Hat OpenShift Service Mesh 버전 2.2.10에 포함된 구성 요소 버전
Expand
Component버전

Istio

1.12.9

Envoy 프록시

1.20.8

Jaeger

1.42.0

Kiali

1.48.8

2.2.25.26. Red Hat OpenShift Service Mesh 버전 2.2.9 새 기능

이번 Red Hat OpenShift Service Mesh 릴리스는 CVE(Common Vulnerabilities and Exposures)에 대한 버그 수정이 포함되어 있으며 OpenShift Container Platform 4.10 이상 버전에서 지원됩니다.

2.2.25.26.1. Red Hat OpenShift Service Mesh 버전 2.2.9에 포함된 구성 요소 버전
Expand
Component버전

Istio

1.12.9

Envoy 프록시

1.20.8

Jaeger

1.42.0

Kiali

1.48.7

2.2.25.27. Red Hat OpenShift Service Mesh 버전 2.2.8 새 기능

이번 Red Hat OpenShift Service Mesh 릴리스는 CVE(Common Vulnerabilities and Exposures)에 대한 버그 수정이 포함되어 있으며 OpenShift Container Platform 4.10 이상 버전에서 지원됩니다.

2.2.25.27.1. Red Hat OpenShift Service Mesh 버전 2.2.8에 포함된 구성 요소 버전
Expand
Component버전

Istio

1.12.9

Envoy 프록시

1.20.8

Jaeger

1.42.0

Kiali

1.48.7

2.2.25.28. Red Hat OpenShift Service Mesh 버전 2.2.7 새 기능

이번 Red Hat OpenShift Service Mesh 릴리스는 CVE(Common Vulnerabilities and Exposures)에 대한 버그 수정이 포함되어 있으며 OpenShift Container Platform 4.10 이상 버전에서 지원됩니다.

2.2.25.28.1. Red Hat OpenShift Service Mesh 버전 2.2.7에 포함된 구성 요소 버전
Expand
Component버전

Istio

1.12.9

Envoy 프록시

1.20.8

Jaeger

1.42.0

Kiali

1.48.6

2.2.25.29. Red Hat OpenShift Service Mesh 버전 2.2.6 새 기능

이번 Red Hat OpenShift Service Mesh 릴리스는 CVE(Common Vulnerabilities and Exposures)에 버그 수정이 포함되어 있으며 OpenShift Container Platform 4.9 이상 버전에서 지원됩니다.

2.2.25.29.1. Red Hat OpenShift Service Mesh 버전 2.2.6에 포함된 구성 요소 버전
Expand
Component버전

Istio

1.12.9

Envoy 프록시

1.20.8

Jaeger

1.39

Kiali

1.48.5

2.2.25.30. Red Hat OpenShift Service Mesh 버전 2.2.5 새 기능

이번 Red Hat OpenShift Service Mesh 릴리스는 CVE(Common Vulnerabilities and Exposures)에 버그 수정이 포함되어 있으며 OpenShift Container Platform 4.9 이상 버전에서 지원됩니다.

2.2.25.30.1. Red Hat OpenShift Service Mesh 버전 2.2.5에 포함된 구성 요소 버전
Expand
Component버전

Istio

1.12.9

Envoy 프록시

1.20.8

Jaeger

1.39

Kiali

1.48.3

2.2.25.31. Red Hat OpenShift Service Mesh 버전 2.2.4 새 기능

이번 Red Hat OpenShift Service Mesh 릴리스는 CVE(Common Vulnerabilities and Exposures)에 버그 수정이 포함되어 있으며 OpenShift Container Platform 4.9 이상 버전에서 지원됩니다.

2.2.25.31.1. Red Hat OpenShift Service Mesh 버전 2.2.4에 포함된 구성 요소 버전
Expand
Component버전

Istio

1.12.9

Envoy 프록시

1.20.8

Jaeger

1.36.14

Kiali

1.48.3

2.2.25.32. Red Hat OpenShift Service Mesh 버전 2.2.3 새 기능

이번 Red Hat OpenShift Service Mesh 릴리스는 CVE(Common Vulnerabilities and Exposures), 버그 수정 및 OpenShift Container Platform 4.9 이상 버전에서 지원됩니다.

2.2.25.32.1. Red Hat OpenShift Service Mesh 버전 2.2.3에 포함된 구성 요소 버전
Expand
Component버전

Istio

1.12.9

Envoy 프록시

1.20.8

Jaeger

1.36

Kiali

1.48.3

2.2.25.33. Red Hat OpenShift Service Mesh 버전 2.2.2 새 기능

이번 Red Hat OpenShift Service Mesh 릴리스는 CVE(Common Vulnerabilities and Exposures), 버그 수정 및 OpenShift Container Platform 4.9 이상 버전에서 지원됩니다.

2.2.25.33.1. Red Hat OpenShift Service Mesh 버전 2.2.2에 포함된 구성 요소 버전
Expand
Component버전

Istio

1.12.7

Envoy 프록시

1.20.6

Jaeger

1.36

Kiali

1.48.2-1

2.2.25.33.2. 경로 레이블 복사

이 향상된 기능을 통해 주석을 복사하는 것 외에도 OpenShift 경로에 대한 특정 레이블을 복사할 수 있습니다. Red Hat OpenShift Service Mesh는 Istio Gateway 리소스에 있는 모든 레이블 및 주석( kubectl.kubernetes.io로 시작하는 주석을 제외) 관리 OpenShift Route 리소스에 복사합니다.

2.2.25.34. Red Hat OpenShift Service Mesh 버전 2.2.1 새 기능

이번 Red Hat OpenShift Service Mesh 릴리스는 CVE(Common Vulnerabilities and Exposures), 버그 수정 및 OpenShift Container Platform 4.9 이상 버전에서 지원됩니다.

2.2.25.34.1. Red Hat OpenShift Service Mesh 버전 2.2.1에 포함된 구성 요소 버전
Expand
Component버전

Istio

1.12.7

Envoy 프록시

1.20.6

Jaeger

1.34.1

Kiali

1.48.2-1

2.2.25.35. Red Hat OpenShift Service Mesh 2.2 새 기능

이번 Red Hat OpenShift Service Mesh 릴리스에는 새로운 기능 및 개선 사항이 추가되었으며 OpenShift Container Platform 4.9 이상 버전에서 지원됩니다.

2.2.25.35.1. Red Hat OpenShift Service Mesh 버전 2.2에 포함된 구성 요소 버전
Expand
Component버전

Istio

1.12.7

Envoy 프록시

1.20.4

Jaeger

1.34.1

Kiali

1.48.0.16

2.2.25.35.2. WasmPlugin API

이 릴리스에는 WasmPlugin API에 대한 지원이 추가되어 ServiceMeshExtension API를 더 이상 사용하지 않습니다.

2.2.25.35.3. ROSA 지원

이번 릴리스에서는 다중 클러스터 페더레이션을 포함하여 AWS(ROSA)의 Red Hat OpenShift에 대한 서비스 메시 지원이 도입되었습니다.

2.2.25.35.4. Istio-node DaemonSet의 이름 변경

이번 릴리스에서는 istio-node DaemonSet의 이름이 업스트림 Istio의 이름과 일치하도록 istio-cni-node 로 이름이 변경되었습니다.

2.2.25.35.5. Envoy 사이드카 네트워킹 변경

Istio 1.10은 기본적으로 lo 가 아닌 eth0 을 사용하여 트래픽을 애플리케이션 컨테이너로 전송하도록 Envoy를 업데이트했습니다.

2.2.25.35.6. 서비스 메시 컨트롤 플레인 1.1

이번 릴리스에서는 모든 플랫폼의 Service Mesh 1.1을 기반으로 Service Mesh Control Plane에 대한 지원이 종료됩니다.

2.2.25.35.7. Istio 1.12 지원

서비스 메시 2.2는 Istio 1.12를 기반으로 하며 새로운 기능 및 제품 개선 사항을 제공합니다. 많은 Istio 1.12 기능이 지원되지만 지원되지 않는 기능은 다음과 같습니다.

  • AuthPolicy Dry Run은 기술 프리뷰 기능입니다.
  • gRPC Proxyless Service Mesh는 기술 프리뷰 기능입니다.
  • Telemetry API는 기술 프리뷰 기능입니다.
  • 검색 선택기는 지원되는 기능이 아닙니다.
  • 외부 컨트롤 플레인은 지원되는 기능이 아닙니다.
  • 게이트웨이 삽입은 지원되는 기능이 아닙니다.
2.2.25.35.8. Kubernetes 게이트웨이 API
중요

Kubernetes Gateway API는 기술 프리뷰 기능 전용입니다. 기술 프리뷰 기능은 Red Hat 프로덕션 서비스 수준 계약(SLA)에서 지원되지 않으며 기능적으로 완전하지 않을 수 있습니다. 따라서 프로덕션 환경에서 사용하는 것은 권장하지 않습니다. 이러한 기능을 사용하면 향후 제품 기능을 조기에 이용할 수 있어 개발 과정에서 고객이 기능을 테스트하고 피드백을 제공할 수 있습니다.

Red Hat 기술 프리뷰 기능의 지원 범위에 대한 자세한 내용은 기술 프리뷰 기능 지원 범위를 참조하십시오.

Kubernetes Gateway API는 기본적으로 비활성화되어 있는 기술 프리뷰 기능입니다. Kubernetes API 배포 컨트롤러가 비활성화된 경우 수신 게이트웨이를 생성된 Gateway 오브젝트에 수동으로 배포하고 연결해야 합니다.

Kubernetes API 배포 컨트롤러가 활성화되면 수신 게이트웨이는 Gateway 오브젝트가 생성될 때 자동으로 배포됩니다.

2.2.25.35.8.1. 게이트웨이 API CRD 설치

게이트웨이 API CRD는 기본적으로 OpenShift 클러스터에 사전 설치되지 않습니다. SMCP에서 게이트웨이 API 지원을 활성화하기 전에 CRD를 설치합니다.

$ kubectl get crd gateways.gateway.networking.k8s.io || { kubectl kustomize "github.com/kubernetes-sigs/gateway-api/config/crd?ref=v0.4.0" | kubectl apply -f -; }
Copy to Clipboard Toggle word wrap
2.2.25.35.8.2. Kubernetes 게이트웨이 API 활성화

기능을 활성화하려면 ServiceMeshControlPlane 에서 Istiod 컨테이너에 대해 다음 환경 변수를 설정합니다.

spec:
  runtime:
    components:
      pilot:
        container:
          env:
            PILOT_ENABLE_GATEWAY_API: "true"
            PILOT_ENABLE_GATEWAY_API_STATUS: "true"
            # and optionally, for the deployment controller
            PILOT_ENABLE_GATEWAY_API_DEPLOYMENT_CONTROLLER: "true"
Copy to Clipboard Toggle word wrap

SameNamespace 또는 All 설정을 사용하여 게이트웨이 API 리스너에서 경로 연결을 제한할 수 있습니다. Istio는 listeners.allowedRoutes.namespaces 의 라벨 선택기 사용을 무시하고 기본 동작(SameNamespace)으로 되돌립니다.

2.2.25.35.8.3. 기존 게이트웨이를 게이트웨이 리소스에 수동으로 연결

Kubernetes API 배포 컨트롤러가 비활성화된 경우 수동으로 배포된 다음 수신 게이트웨이를 생성된 게이트웨이 리소스에 연결해야 합니다.

  apiVersion: gateway.networking.k8s.io/v1alpha2
  kind: Gateway
  metadata:
    name: gateway
  spec:
    addresses:
    - value: ingress.istio-gateways.svc.cluster.local
      type: Hostname
Copy to Clipboard Toggle word wrap
2.2.25.36. Red Hat OpenShift Service Mesh 2.1.6 새 기능

이번 Red Hat OpenShift Service Mesh 릴리스는 CVE(Common Vulnerabilities and Exposures)에 버그 수정이 포함되어 있으며 OpenShift Container Platform 4.9 이상 버전에서 지원됩니다.

2.2.25.36.1. Red Hat OpenShift Service Mesh 버전 2.1.6에 포함된 구성 요소 버전
Expand
Component버전

Istio

1.9.9

Envoy 프록시

1.17.5

Jaeger

1.36

Kiali

1.36.16

2.2.25.37. Red Hat OpenShift Service Mesh 2.1.5.2 새 기능

이번 Red Hat OpenShift Service Mesh 릴리스는 CVE(Common Vulnerabilities and Exposures)에 버그 수정이 포함되어 있으며 OpenShift Container Platform 4.9 이상 버전에서 지원됩니다.

Expand
Component버전

Istio

1.9.9

Envoy 프록시

1.17.5

Jaeger

1.36

Kiali

1.24.17

2.2.25.38. Red Hat OpenShift Service Mesh 2.1.5.1 새 기능

이번 Red Hat OpenShift Service Mesh 릴리스는 CVE(Common Vulnerabilities and Exposures), 버그 수정 및 OpenShift Container Platform 4.9 이상 버전에서 지원됩니다.

Expand
Component버전

Istio

1.9.9

Envoy 프록시

1.17.5

Jaeger

1.36

Kiali

1.36.13

2.2.25.39. Red Hat OpenShift Service Mesh 2.1.5 새 기능

이번 Red Hat OpenShift Service Mesh 릴리스는 CVE(Common Vulnerabilities and Exposures), 버그 수정 및 OpenShift Container Platform 4.9 이상 버전에서 지원됩니다.

2.2.25.39.1. Red Hat OpenShift Service Mesh 버전 2.1.5에 포함된 구성 요소 버전
Expand
Component버전

Istio

1.9.9

Envoy 프록시

1.17.1

Jaeger

1.36

Kiali

1.36.12-1

2.2.25.40. Red Hat OpenShift Service Mesh 2.1.4 새 기능

이번 Red Hat OpenShift Service Mesh 릴리스는 CVE(Common Vulnerabilities and Exposures) 및 버그 수정을 제공합니다.

2.2.25.40.1. Red Hat OpenShift Service Mesh 버전 2.1.4에 포함된 구성 요소 버전
Expand
Component버전

Istio

1.9.9

Envoy 프록시

1.17.1

Jaeger

1.30.2

Kiali

1.36.12-1

2.2.25.41. Red Hat OpenShift Service Mesh 2.1.3 새 기능

이번 Red Hat OpenShift Service Mesh 릴리스는 CVE(Common Vulnerabilities and Exposures) 및 버그 수정을 제공합니다.

2.2.25.41.1. Red Hat OpenShift Service Mesh 버전 2.1.3에 포함된 구성 요소 버전
Expand
Component버전

Istio

1.9.9

Envoy 프록시

1.17.1

Jaeger

1.30.2

Kiali

1.36.10-2

2.2.25.42. Red Hat OpenShift Service Mesh 2.1.2.1 새 기능

이번 Red Hat OpenShift Service Mesh 릴리스는 CVE(Common Vulnerabilities and Exposures) 및 버그 수정을 제공합니다.

Expand
Component버전

Istio

1.9.9

Envoy 프록시

1.17.1

Jaeger

1.30.2

Kiali

1.36.9

2.2.25.43. Red Hat OpenShift Service Mesh 2.1.2 새 기능

이번 Red Hat OpenShift Service Mesh 릴리스는 CVE(Common Vulnerabilities and Exposures) 및 버그 수정을 제공합니다.

이번 릴리스에서는 Red Hat OpenShift 분산 추적 플랫폼 (Jaeger) Operator가 기본적으로 openshift-distributed-tracing 네임스페이스에 설치됩니다. 이전에는 기본 설치가 openshift-operator 네임스페이스에 있었습니다.

2.2.25.43.1. Red Hat OpenShift Service Mesh 버전 2.1.2에 포함된 구성 요소 버전
Expand
Component버전

Istio

1.9.9

Envoy 프록시

1.17.1

Jaeger

1.30.1

Kiali

1.36.8

2.2.25.44. Red Hat OpenShift Service Mesh 2.1.1 새 기능

이번 Red Hat OpenShift Service Mesh 릴리스는 CVE(Common Vulnerabilities and Exposures) 및 버그 수정을 제공합니다.

이 릴리스에서는 네트워크 정책 자동 생성을 비활성화하는 기능도 추가되었습니다.

2.2.25.44.1. Red Hat OpenShift Service Mesh 버전 2.1.1에 포함된 구성 요소 버전
Expand
Component버전

Istio

1.9.9

Envoy 프록시

1.17.1

Jaeger

1.24.1

Kiali

1.36.7

2.2.25.44.2. 네트워크 정책 비활성화

Red Hat OpenShift Service Mesh는 Service Mesh Control Plane 및 애플리케이션 네임스페이스에서 여러 NetworkPolicies 리소스를 자동으로 생성하고 관리합니다. 이는 애플리케이션과 컨트롤 플레인이 서로 통신할 수 있도록 하기 위한 것입니다.

예를 들어 회사 보안 정책을 적용하기 위해 NetworkPolicies 리소스의 자동 생성 및 관리를 비활성화하려면 그렇게 할 수 있습니다. ServiceMeshControlPlane 을 편집하여 spec.security.manageNetworkPolicy 설정을 false로 설정할 수 있습니다.

참고

spec.security.manageNetworkPolicy Red Hat OpenShift Service Mesh를 비활성화하면 NetworkPolicy 오브젝트가 생성되지 않습니다. 시스템 관리자는 네트워크를 관리하고 이로 인해 발생할 수 있는 문제를 해결할 책임이 있습니다.

프로세스

  1. OpenShift Container Platform 웹 콘솔에서 Operator설치된 Operator를 클릭합니다.
  2. 프로젝트 메뉴에서 Service Mesh Control Plane을 설치한 프로젝트(예: istio-system )를 선택합니다.
  3. Red Hat OpenShift Service Mesh Operator를 클릭합니다. Istio Service Mesh Control Plane 열에서 ServiceMeshControlPlane의 이름을 클릭합니다(예: basic-install).
  4. ServiceMeshControlPlane 세부 정보 만들기 페이지에서 YAML을 클릭하여 구성을 수정합니다.
  5. 이 예와 같이 ServiceMeshControlPlane 필드 spec.security.manageNetworkPolicyfalse 로 설정합니다.

    apiVersion: maistra.io/v2
    kind: ServiceMeshControlPlane
    spec:
      security:
          trust:
          manageNetworkPolicy: false
    Copy to Clipboard Toggle word wrap
  6. 저장을 클릭합니다.
2.2.25.45. Red Hat OpenShift Service Mesh 2.1 새 기능 및 개선 사항

이번 Red Hat OpenShift Service Mesh 릴리스에는 새로운 기능 및 개선 사항과 함께 OpenShift Container Platform 4.6 EUS, 4.7, 4.8, 4.9의 Istio 1.9.8, Envoy Proxy 1.17.1, Jaeger 1.24.1, Kiali 1.36.5에 대한 지원이 추가되었습니다.

2.2.25.45.1. Red Hat OpenShift Service Mesh 버전 2.1에 포함된 구성 요소 버전
Expand
Component버전

Istio

1.9.6

Envoy 프록시

1.17.1

Jaeger

1.24.1

Kiali

1.36.5

2.2.25.45.2. 서비스 메시 페더레이션

서비스 메시 병합을 지원하기 위해 새로운 CRD(Custom Resource Definitions)가 추가되었습니다. 서비스 메시는 동일한 클러스터 또는 다른 OpenShift 클러스터 내에서 통합될 수 있습니다. 이러한 새로운 리소스에는 다음이 포함됩니다.

  • ServiceMeshPeer - 게이트웨이 구성, 루트 신뢰 인증서 구성 및 상태 필드를 포함하여 별도의 서비스 메시로 페더레이션을 정의합니다. 한 쌍의 페더레이션 메시에서 각 메시는 별도의 ServiceMeshPeer 리소스를 정의합니다.
  • ExportedServiceMeshSet - 피어 메시가 가져올 수 있는 지정된 ServiceMeshPeer 의 서비스를 정의합니다.
  • ImportedServiceSet - 지정된 ServiceMeshPeer 에 대한 서비스를 피어 메시에서 가져옵니다. 이러한 서비스는 피어의 ExportedServiceMeshSet 리소스에서 사용할 수도 있어야 합니다.

Service Mesh Federation은 AWS(ROSA), Azure Red Hat OpenShift(ARO) 또는 OpenShift Dedicated(OSD)의 Red Hat OpenShift Service의 클러스터 간에는 지원되지 않습니다.

OVN-Kubernetes CNI(Container Network Interface)는 이전에 Red Hat OpenShift Service Mesh 2.0.1에서 기술 프리뷰 기능으로 소개되었으며 현재 OpenShift Container Platform 4.7.32, OpenShift Container Platform 4.8.12 및 OpenShift Container Platform 4.9에서 사용하기 위해 Red Hat OpenShift Service Mesh 2.1 및 2.0.x에서 일반적으로 사용할 수 있습니다.

2.2.25.45.4. 서비스 메시 WebAssembly(WASM) 확장

이제 2.0에 기술 프리뷰로 처음 도입된 ServiceMeshExtensions CRD(Custom Resource Definitions)를 일반적으로 사용할 수 있습니다. CRD를 사용하여 자체 플러그인을 빌드할 수 있지만 Red Hat은 생성한 플러그인을 지원하지 않습니다.

Mixer는 Service Mesh 2.1에서 완전히 제거되었습니다. Mixer가 활성화된 경우 Service Mesh 2.0.x 릴리스에서 2.1으로 업그레이드가 차단됩니다. Mixer 플러그인은 WebAssembly Extensions로 이식해야 합니다.

2.2.25.45.5. 3scale WebAssembly 어댑터(WASM)

이제 Mixer가 공식적으로 제거되면 OpenShift Service Mesh 2.1에서 3scale mixer 어댑터를 지원하지 않습니다. Service Mesh 2.1으로 업그레이드하기 전에 Mixer 기반 3scale 어댑터 및 추가 Mixer 플러그인을 제거하십시오. 그런 다음 ServiceMeshExtension 리소스를 사용하여 Service Mesh 2.1+를 사용하여 새 3scale WebAssembly 어댑터를 수동으로 설치하고 구성합니다.

3scale 2.11은 WebAssembly 를 기반으로 업데이트된 서비스 메시 통합을 도입합니다.

2.2.25.45.6. Istio 1.9 지원

서비스 메시 2.1은 Istio 1.9를 기반으로 하며, 이는 많은 수의 새로운 기능 및 제품 개선 사항을 제공합니다. 대부분의 Istio 1.9 기능이 지원되지만 다음 예외가 표시되어야 합니다.

  • 가상 머신 통합은 아직 지원되지 않습니다.
  • Kubernetes Gateway API는 아직 지원되지 않음
  • WebAssembly HTTP 필터의 원격 가져오기 및 로드는 아직 지원되지 않습니다.
  • Kubernetes CSR API를 사용한 사용자 정의 CA 통합은 아직 지원되지 않습니다.
  • 트래픽 모니터링에 대한 요청 분류는 기술 프리뷰 기능입니다.
  • 인증 정책의 CUSTOM 작업을 통해 외부 인증 시스템과의 통합은 기술 프리뷰 기능입니다.
2.2.25.45.7. 서비스 메시 Operator 성능 개선

Red Hat OpenShift Service Mesh가 모든 ServiceMeshControlPlane 조정이 끝날 때 이전 리소스를 정리하는 데 사용하는 시간이 단축되었습니다. 이로 인해 ServiceMeshControlPlane 배포 속도가 빨라지고 기존 SMCP에 변경 사항이 적용되어 더 신속하게 적용할 수 있습니다.

2.2.25.45.8. Kiali 업데이트

Kiali 1.36에는 다음과 같은 기능 및 개선 사항이 포함되어 있습니다.

  • 서비스 메시 문제 해결 기능

    • 컨트롤 플레인 및 게이트웨이 모니터링
    • 프록시 동기화 상태
    • Envoy 구성 보기
    • Envoy 프록시 및 애플리케이션 로그를 함께 표시하는 통합 보기
  • 페더레이션 서비스 메시 뷰를 지원하는 네임스페이스 및 클러스터 boxing
  • 새로운 검증, 마법사 및 분산 추적 기능 개선
2.2.25.46. Red Hat OpenShift Service Mesh 2.0.11.1 새 기능

이번 Red Hat OpenShift Service Mesh 릴리스는 CVE(Common Vulnerabilities and Exposures), 버그 수정 및 OpenShift Container Platform 4.9 이상에서 지원됩니다.

Expand
Component버전

Istio

1.6.14

Envoy 프록시

1.14.5

Jaeger

1.36

Kiali

1.24.17

2.2.25.47. Red Hat OpenShift Service Mesh 2.0.11 새 기능

이번 Red Hat OpenShift Service Mesh 릴리스는 CVE(Common Vulnerabilities and Exposures), 버그 수정 및 OpenShift Container Platform 4.9 이상에서 지원됩니다.

2.2.25.47.1. Red Hat OpenShift Service Mesh 버전 2.0.11에 포함된 구성 요소 버전
Expand
Component버전

Istio

1.6.14

Envoy 프록시

1.14.5

Jaeger

1.36

Kiali

1.24.16-1

2.2.25.48. Red Hat OpenShift Service Mesh 2.0.10 새 기능

이번 Red Hat OpenShift Service Mesh 릴리스는 CVE(Common Vulnerabilities and Exposures) 및 버그 수정을 제공합니다.

2.2.25.48.1. Red Hat OpenShift Service Mesh 버전 2.0.10에 포함된 구성 요소 버전
Expand
Component버전

Istio

1.6.14

Envoy 프록시

1.14.5

Jaeger

1.28.0

Kiali

1.24.16-1

2.2.25.49. Red Hat OpenShift Service Mesh 2.0.9 새 기능

이번 Red Hat OpenShift Service Mesh 릴리스는 CVE(Common Vulnerabilities and Exposures) 및 버그 수정을 제공합니다.

2.2.25.49.1. Red Hat OpenShift Service Mesh 버전 2.0.9에 포함된 구성 요소 버전
Expand
Component버전

Istio

1.6.14

Envoy 프록시

1.14.5

Jaeger

1.24.1

Kiali

1.24.11

2.2.25.50. Red Hat OpenShift Service Mesh 2.0.8 새 기능

이번 Red Hat OpenShift Service Mesh 릴리스는 버그 수정을 해결합니다.

2.2.25.51. Red Hat OpenShift Service Mesh 2.0.7.1 새 기능

이번 Red Hat OpenShift Service Mesh 릴리스는 CVE(Common Vulnerabilities and Exposures)를 제공합니다.

2.2.25.51.1. Red Hat OpenShift Service Mesh가 URI 조각을 처리하는 방법 변경

Red Hat OpenShift Service Mesh에는 원격으로 악용 가능한 취약점 CVE-2021-39156 이 포함되어 있습니다. 여기서 URI 경로에 조각이 있는 HTTP 요청(# 문자로 시작하는 섹션)은 Istio URI 경로 기반 권한 부여 정책을 우회할 수 있습니다. 예를 들어 Istio 권한 부여 정책은 URI 경로 /user/profile 으로 전송된 요청을 거부합니다. 취약한 버전에서 URI 경로 /user/profile#section1 을 포함하는 요청은 거부 정책 및 경로(정규화된 URI path /user/profile%23section1사용)를 우회하여 보안 문제로 이어질 수 있습니다.

DENY 작업 및 operation.paths 또는 ALLOW 작업 및 operation.notPaths 와 함께 권한 부여 정책을 사용하는 경우 이 취약점의 영향을 받습니다.

완화 기능을 사용하면 요청 URI의 조각 부분이 권한 부여 및 라우팅 전에 제거됩니다. 이렇게 하면 URI에 조각이 있는 요청이 조각 부분 없이 URI를 기반으로 하는 권한 부여 정책을 바이패스하지 않습니다.

완화 방법의 새로운 동작에서 옵트아웃하려면 URI의 조각 섹션이 유지됩니다. URI 조각을 유지하도록 ServiceMeshControlPlane 을 구성할 수 있습니다.

주의

새 동작을 비활성화하면 위에서 설명한 대로 경로가 정규화되고 안전하지 않은 것으로 간주됩니다. URI 조각을 유지하기 전에 모든 보안 정책에서 이를 수용했는지 확인하십시오.

ServiceMeshControlPlane 수정 예

apiVersion: maistra.io/v2
kind: ServiceMeshControlPlane
metadata:
  name: basic
spec:
  techPreview:
    meshConfig:
      defaultConfig:
        proxyMetadata: HTTP_STRIP_FRAGMENT_FROM_PATH_UNSAFE_IF_DISABLED: "false"
Copy to Clipboard Toggle word wrap

2.2.25.51.2. 권한 부여 정책에 필요한 업데이트

Istio는 호스트 이름 자체와 일치하는 모든 포트에 대한 호스트 이름을 생성합니다. 예를 들어 "httpbin.foo"라는 호스트의 가상 서비스 또는 게이트웨이는 "httpbin.foo 및 httpbin.foo:*"와 일치하는 구성을 생성합니다. 그러나 권한 부여 정책과 정확히 일치하면 hosts 또는 notHosts 필드에 지정된 정확한 문자열만 일치합니다.

호스트 또는 notHosts를 결정하기 위해 규칙에 대해 정확한 문자열 비교를 사용하는 AuthorizationPolicy 리소스가 있는 경우 클러스터가 영향을 받습니다.

정확히 일치하는 대신 접두사 일치를 사용하도록 권한 부여 정책 규칙을 업데이트해야 합니다. 예를 들어 첫 번째 AuthorizationPolicy 예제에서 hosts: ["httpbin.com"]hosts: ["httpbin.com:*"] 로 바꿉니다.

접두사 일치를 사용한 AuthorizationPolicy의 첫 번째 예

apiVersion: security.istio.io/v1beta1
kind: AuthorizationPolicy
metadata:
  name: httpbin
  namespace: foo
spec:
  action: DENY
  rules:
  - from:
    - source:
        namespaces: ["dev"]
    to:
    - operation:
        hosts: [“httpbin.com”,"httpbin.com:*"]
Copy to Clipboard Toggle word wrap

접두사 일치를 사용한 AuthorizationPolicy의 두 번째 예

apiVersion: security.istio.io/v1beta1
kind: AuthorizationPolicy
metadata:
  name: httpbin
  namespace: default
spec:
  action: DENY
  rules:
  - to:
    - operation:
        hosts: ["httpbin.example.com:*"]
Copy to Clipboard Toggle word wrap

2.2.25.52. Red Hat OpenShift Service Mesh 2.0.7 새 기능

이번 Red Hat OpenShift Service Mesh 릴리스는 CVE(Common Vulnerabilities and Exposures) 및 버그 수정을 제공합니다.

Red Hat OpenShift Service Mesh는 이제 Red Hat OpenShift Dedicated 및 Microsoft Azure Red Hat OpenShift를 통해 지원됩니다.

2.2.25.54. Red Hat OpenShift Service Mesh 2.0.6 새 기능

이번 Red Hat OpenShift Service Mesh 릴리스는 CVE(Common Vulnerabilities and Exposures) 및 버그 수정을 제공합니다.

2.2.25.55. Red Hat OpenShift Service Mesh 2.0.5 새 기능

이번 Red Hat OpenShift Service Mesh 릴리스는 CVE(Common Vulnerabilities and Exposures) 및 버그 수정을 제공합니다.

2.2.25.56. Red Hat OpenShift Service Mesh 2.0.4 새 기능

이번 Red Hat OpenShift Service Mesh 릴리스는 CVE(Common Vulnerabilities and Exposures) 및 버그 수정을 제공합니다.

중요

CVE-2021-29492 및 CVE-2021-31920 문제를 해결하려면 수동 단계가 완료되어야 합니다.

2.2.25.56.1. CVE-2021-29492 및 CVE-2021-31920에서 필요한 수동 업데이트

Istio에는 경로 기반 권한 부여 규칙이 사용될 때 여러 슬래시 또는 이스케이프된 슬래시 문자(%2F 또는 %5C)가 있는 HTTP 요청 경로가 잠재적으로 Istio 권한 부여 정책을 우회할 수 있는 원격으로 악용 가능한 취약점이 포함되어 있습니다.

예를 들어 Istio 클러스터 관리자가 경로 /admin에 있는 요청을 거부하도록 권한 부여 DENY 정책을 정의한다고 가정합니다. //admin URL 경로에 전송된 요청이 권한 부여 정책에서 거부되지 않습니다.

RFC 3986에 따르면 여러 개의 슬래시가 있는 //admin 경로는 기술적으로 /admin과 다른 경로로 처리되어야 합니다. 그러나 일부 백엔드 서비스는 여러 슬래시를 단일 슬래시로 병합하여 URL 경로를 정규화하도록 선택합니다. 이로 인해 권한 부여 정책( //admin/admin과 일치하지 않음)을 우회할 수 있으며 사용자는 백엔드의 /admin 경로에 있는 리소스에 액세스할 수 있습니다. 결과적으로 이는 보안 문제로 나타날 수 있습니다.

ALLOW action + notPaths 필드 또는 DENY action + paths field 경로 필드 패턴을 사용하는 권한 부여 정책이 있는 경우 클러스터는 이 취약점의 영향을 받습니다. 이러한 패턴은 예기치 않은 정책 우회에 취약합니다.

다음과 같은 경우 클러스터는 이 취약점의 영향을 받지 않습니다.

  • 권한 부여 정책이 없습니다.
  • 권한 부여 정책은 paths 또는 notPaths 필드를 정의하지 않습니다.
  • 권한 부여 정책은 ALLOW action + paths 필드 또는 DENY action + notPaths 필드 패턴을 사용합니다. 이러한 패턴은 정책 우회 대신 예기치 않은 거부를 유발할 수 있습니다. 이러한 경우 업그레이드는 선택 사항입니다.
참고

경로 정규화를 위한 Red Hat OpenShift Service Mesh 구성 위치는 Istio 구성과 다릅니다.

2.2.25.56.2. 경로 정규화 구성 업데이트

Istio 권한 부여 정책은 HTTP 요청의 URL 경로를 기반으로 할 수 있습니다. URI 정규화라고도 하는 경로 정규화는 들어오는 요청의 경로를 수정 및 표준화하여 정규화된 경로를 표준 방식으로 처리할 수 있도록 합니다. 구문적으로 경로 정규화 후에는 다른 경로가 동일할 수 있습니다.

Istio는 권한 부여 정책에 대해 평가하고 요청을 라우팅하기 전에 요청 경로에서 다음 정규화 체계를 지원합니다.

Expand
표 2.1. 정규화 체계
옵션설명예제참고

NONE

정규화는 수행되지 않습니다. Envoy가 수신한 모든 항목은 정확히 그대로 모든 백엔드 서비스에 전달됩니다.

../%2FA../b는 권한 부여 정책에 의해 평가되고 서비스로 전송됩니다.

이 설정은 CVE-2021-31920에 취약합니다.

BASE

현재 이는 Istio의 기본 설치에 사용되는 옵션입니다. 이로 인해 Envoy 프록시에 normalize_path 옵션을 적용하며, RFC 3986에 따라 백슬래시를 슬래시로 변환하는 추가 정규화를 따릅니다.

/a/../b/b로 정규화됩니다. \da/da로 정규화됩니다.

이 설정은 CVE-2021-31920에 취약합니다.

MERGE_SLASHES

BASE 정규화 후 슬래시가 병합됩니다.

/a//b/a/b로 정규화됩니다.

CVE-2021-31920을 완화하려면 이 설정으로 업데이트합니다.

DECODE_AND_MERGE_SLASHES

기본적으로 모든 트래픽을 허용할 때 가장 엄격한 설정입니다. 이 설정은 권한 부여 정책 경로를 철저하게 테스트해야 한다는 경고와 함께 권장됩니다. 백분율로 인코딩된 슬래시 및 백슬래시 문자 (%2F, %2f, %5C%5c)는 MERGE_SLASHES 정규화 전에 / 또는 \로 디코딩됩니다.

/a%2fb/a/b로 정규화됩니다.

CVE-2021-31920을 완화하려면 이 설정으로 업데이트합니다. 이 설정은 더 안전하지만 애플리케이션이 중단될 수도 있습니다. 프로덕션에 배포하기 전에 애플리케이션을 테스트합니다.

정규화 알고리즘은 다음 순서로 수행됩니다.

  1. 백분율로 디코딩된 %2F, %2f, %5C%5c.
  2. Envoy의 normalize_path 옵션에 의해 구현된 RFC 3986 및 기타 정규화입니다.
  3. 슬래시를 병합합니다.
주의

이러한 정규화 옵션은 HTTP 표준 및 일반적인 업계 관행의 권장 사항을 나타내지만 애플리케이션은 원하는 방식으로 URL을 해석할 수 있습니다. 거부 정책을 사용할 때 애플리케이션이 작동하는 방식을 이해해야 합니다.

2.2.25.56.3. 경로 정규화 구성 예

Envoy는 백엔드 서비스의 기대치와 일치하도록 요청 경로를 표준화하여 시스템 보안에 매우 중요합니다. 다음 예제는 시스템을 구성하기 위한 참조로 사용할 수 있습니다. 정규화된 URL 경로 또는 NONE이 선택된 경우 원래 URL 경로는 다음과 같습니다.

  1. 권한 부여 정책을 확인하는 데 사용됩니다.
  2. 백엔드 애플리케이션으로 전달됩니다.
Expand
표 2.2. 구성 예
애플리케이션 조건선택…​

프록시를 사용하여 정규화를 수행합니다.

BASE,MERGE_SLASHES 또는 DECODE_AND_MERGE_SLASHES

RFC 3986을 기반으로 요청 경로를 정규화하고 슬래시를 병합하지 않습니다.

BASE

RFC 3986을 기반으로 요청 경로를 정규화하고 슬래시를 병합하지만 백분율로 인코딩된 슬래시를 디코딩하지는 않습니다.

MERGE_SLASHES

RFC 3986을 기반으로 요청 경로를 표준화하고, 백분율로 인코딩된 슬래시를 디코딩하고, 슬래시를 병합합니다.

DECODE_AND_MERGE_SLASHES

프로세스는 RFC 3986과 호환되지 않는 방식으로 요청 경로를 처리합니다.

NONE

2.2.25.56.4. 경로 정규화를 위해 SMCP 구성

Red Hat OpenShift Service Mesh에 대한 경로 정규화를 구성하려면 ServiceMeshControlPlane에서 다음을 지정합니다. 시스템 설정을 결정하는 데 도움이 되도록 구성 예제를 사용합니다.

SMCP v2 pathNormalization

spec:
  techPreview:
    global:
      pathNormalization: <option>
Copy to Clipboard Toggle word wrap

2.2.25.56.5. 케이스 정규화를 위한 설정

일부 환경에서는 대/소문자를 구분하지 않는 권한 부여 정책의 경로를 사용하는 것이 유용할 수 있습니다. 예를 들어 https://myurl/gethttps://myurl/GeT을 동일한 방법으로 처리합니다. 이 경우 아래에 표시된 EnvoyFilter를 사용할 수 있습니다. 이 필터는 비교에 사용되는 경로와 애플리케이션에 제공되는 경로를 모두 변경합니다. 이 예에서 istio-system 은 Service Mesh Control Plane 프로젝트의 이름입니다.

EnvoyFilter 를 파일에 저장하고 다음 명령을 실행합니다.

$ oc create -f <myEnvoyFilterFile>
Copy to Clipboard Toggle word wrap
apiVersion: networking.istio.io/v1alpha3
kind: EnvoyFilter
metadata:
  name: ingress-case-insensitive
  namespace: istio-system
spec:
  configPatches:
  - applyTo: HTTP_FILTER
    match:
      context: GATEWAY
      listener:
        filterChain:
          filter:
            name: "envoy.filters.network.http_connection_manager"
            subFilter:
              name: "envoy.filters.http.router"
    patch:
      operation: INSERT_BEFORE
      value:
        name: envoy.lua
        typed_config:
            "@type": "type.googleapis.com/envoy.extensions.filters.http.lua.v3.Lua"
            inlineCode: |
              function envoy_on_request(request_handle)
                local path = request_handle:headers():get(":path")
                request_handle:headers():replace(":path", string.lower(path))
              end
Copy to Clipboard Toggle word wrap
2.2.25.57. Red Hat OpenShift Service Mesh 2.0.3의 새 기능

이번 Red Hat OpenShift Service Mesh 릴리스는 CVE(Common Vulnerabilities and Exposures) 및 버그 수정을 제공합니다.

또한 이 릴리스에는 다음과 같은 새로운 기능이 있습니다.

  • 지정된 Service Mesh 컨트롤 플레인 네임스페이스에서 정보를 수집하는 must-gather 데이터 수집 툴에 옵션을 추가했습니다. 자세한 내용은 OSSM-351을 참조하십시오.
  • 수백 개의 네임스페이스를 사용하여 서비스 메시 컨트롤 플레인의 성능 개선
2.2.25.58. Red Hat OpenShift Service Mesh 2.0.2 새 기능

이번 Red Hat OpenShift Service Mesh 릴리스에는 IBM Z® 및 IBM Power® Systems에 대한 지원이 추가되었습니다. 또한 CVE(Common Vulnerabilities and Exposures) 및 버그 수정을 제공합니다.

2.2.25.59. Red Hat OpenShift Service Mesh 2.0.1 새 기능

이번 Red Hat OpenShift Service Mesh 릴리스는 CVE(Common Vulnerabilities and Exposures) 및 버그 수정을 제공합니다.

2.2.25.60. Red Hat OpenShift Service Mesh 2.0 새 기능

이번 Red Hat OpenShift Service Mesh 릴리스에는 Istio 1.6.5, Jaeger 1.20.0, Kiali 1.24.2, 3scale Istio Adapter 2.0 및 OpenShift Container Platform 4.6에 대한 지원이 추가되었습니다.

또한 이 릴리스에는 다음과 같은 새로운 기능이 있습니다.

  • Service Mesh Control Plane의 설치, 업그레이드 및 관리를 단순화합니다.
  • Service Mesh Control Plane의 리소스 사용량과 시작 시간을 줄입니다.
  • 네트워크를 통한 상호 컨트롤 플레인 통신을 줄임으로써 성능을 향상시킵니다.

    • Envoy의 SDS(Secret Discovery Service)에 대한 지원을 추가합니다. SDS는 Envoy 사이드 카 프록시에 시크릿을 전달하기 위한 보다 안전하고 효율적인 메커니즘입니다.
  • 잘 알려진 보안 위험이 있는 Kubernetes Secrets를 사용할 필요가 없습니다.
  • 새 인증서를 인식하기 위해 프록시를 다시 시작할 필요가 없으므로 인증서 순환 중에 성능이 향상됩니다.

    • WebAssembly 확장을 사용하여 구축된 Istio의 Telemetry v2 아키텍처에 대한 지원이 추가되었습니다. 이 새로운 아키텍처는 상당한 성능 향상을 가져왔습니다.
    • Service Mesh Control Plane을 더 쉽게 관리할 수 있도록 간소화된 구성으로 ServiceMeshControlPlane 리소스를 v2로 업데이트합니다.
    • WebAssembly 확장을 기술 프리뷰 기능으로 도입합니다.

2.2.26. 기술 프리뷰

이 릴리스의 일부 기능은 현재 기술 프리뷰 단계에 있습니다. 이러한 실험적 기능은 프로덕션용이 아닙니다.

중요

기술 프리뷰 기능은 Red Hat 프로덕션 서비스 수준 계약(SLA)에서 지원되지 않으며 기능적으로 완전하지 않을 수 있습니다. 따라서 프로덕션 환경에서 사용하는 것은 권장하지 않습니다. 이러한 기능을 사용하면 향후 제품 기능을 조기에 이용할 수 있어 개발 과정에서 고객이 기능을 테스트하고 피드백을 제공할 수 있습니다.

Red Hat 기술 프리뷰 기능의 지원 범위에 대한 자세한 내용은 기술 프리뷰 기능 지원 범위를 참조하십시오.

2.2.27. 사용되지 않거나 삭제된 기능

이전 릴리스에서 사용 가능하던 일부 기능이 더 이상 사용되지 않거나 삭제되었습니다.

더 이상 사용되지 않는 기능은 여전히 OpenShift Container Platform에 포함되어 있으며 계속 지원됩니다. 그러나 이 기능은 향후 릴리스에서 제거될 예정이므로 새로운 배포에는 사용하지 않는 것이 좋습니다.

제거된 기능은 더 이상 제품에 존재하지 않습니다.

v2.2 ServiceMeshControlPlane 리소스는 더 이상 지원되지 않습니다. 고객은 ServiceMeshControlPlane 리소스의 이후 버전을 사용하도록 메시 배포를 업데이트해야 합니다.

Red Hat OpenShift distributed tracing Platform (Jaeger) Operator에 대한 지원은 더 이상 사용되지 않습니다. 추적 범위를 수집하려면 Red Hat OpenShift distributed tracing Platform (Tempo) Stack을 사용합니다.

OpenShift Elasticsearch Operator 지원은 더 이상 사용되지 않습니다.

Istio는 타사 JSON 웹 토큰(JWT)에 대한 지원을 제거합니다. Istio는 여전히 타사 JWT를 지원합니다.

v2.1 ServiceMeshControlPlane 리소스는 더 이상 지원되지 않습니다. 고객은 ServiceMeshControlPlane 리소스의 이후 버전을 사용하도록 메시 배포를 업그레이드해야 합니다.

Istio OpenShift Routing (IOR)에 대한 지원은 더 이상 사용되지 않으며 향후 릴리스에서 제거됩니다.

Grafana에 대한 지원은 더 이상 사용되지 않으며 향후 릴리스에서 제거됩니다.

Red Hat OpenShift Service Mesh 2.3에서 더 이상 사용되지 않는 다음 암호화 제품군에 대한 지원은 클라이언트와 서버 측의 TLS 협상에 사용되는 기본 암호 목록에서 제거되었습니다. 이러한 암호화 제품군 중 하나가 필요한 서비스에 액세스해야 하는 애플리케이션은 프록시에서 TLS 연결을 시작할 때 연결할 수 없습니다.

  • ECDHE-ECDSA-AES128-SHA
  • ECDHE-RSA-AES128-SHA
  • AES128-GCM-SHA256
  • AES128-SHA
  • ECDHE-ECDSA-AES256-SHA
  • ECDHE-RSA-AES256-SHA
  • AES256-GCM-SHA384
  • AES256-SHA

다음 암호화 제품군에 대한 지원은 더 이상 사용되지 않습니다. 향후 릴리스에서는 클라이언트와 서버 측의 TLS 협상에 사용되는 기본 암호 목록에서 제거됩니다.

  • ECDHE-ECDSA-AES128-SHA
  • ECDHE-RSA-AES128-SHA
  • AES128-GCM-SHA256
  • AES128-SHA
  • ECDHE-ECDSA-AES256-SHA
  • ECDHE-RSA-AES256-SHA
  • AES256-GCM-SHA384
  • AES256-SHA

Red Hat OpenShift Service Mesh 버전 2.2에서 더 이상 사용되지 않는 ServiceMeshExtension API가 Red Hat OpenShift Service Mesh 버전 2.3에서 제거되었습니다. ServiceMeshExtension API를 사용하는 경우 WebAssembly 확장을 계속 사용하려면 WasmPlugin API로 마이그레이션해야 합니다.

2.2.27.4. Red Hat OpenShift Service Mesh 2.2에서 더 이상 사용되지 않는 기능

ServiceMeshExtension API는 릴리스 2.2에서 더 이상 사용되지 않으며 향후 릴리스에서 제거될 예정입니다. ServiceMeshExtension API는 릴리스 2.2에서 계속 지원되지만 고객은 새로운 WasmPlugin API로 전환해야 합니다.

2.2.27.5. Red Hat OpenShift Service Mesh 2.2에서 제거된 기능

이번 릴리스에서는 모든 플랫폼의 Service Mesh 1.1을 기반으로 Service Mesh Control Plane에 대한 지원 종료가 표시됩니다.

2.2.27.6. Red Hat OpenShift Service Mesh 2.1에서 제거된 기능

Service Mesh 2.1에서는 Mixer 구성 요소가 제거됩니다. 버그 수정 및 지원은 Service Mesh 2.0 라이프 사이클 종료를 통해 제공됩니다.

Mixer 플러그인이 활성화된 경우 Service Mesh 2.0.x 릴리스에서 2.1으로 업그레이드되지 않습니다. Mixer 플러그인은 WebAssembly 확장으로 이식해야 합니다.

2.2.27.7. Red Hat OpenShift Service Mesh 2.0에서 더 이상 사용되지 않는 기능

Mixer 구성 요소는 릴리스 2.0에서 더 이상 사용되지 않으며 릴리스 2.1에서 제거될 예정입니다. Mixer를 사용한 확장 구현은 릴리스 2.0에서 계속 지원되지만, 확장은 새로운 WebAssembly 메커니즘으로 마이그레이션되어야 합니다.

다음 리소스 유형은 Red Hat OpenShift Service Mesh 2.0에서 더 이상 지원되지 않습니다.

  • Policy(authentication.istio.io/v1alpha1)은 더 이상 지원되지 않습니다. 정책 리소스의 특정 구성에 따라 동일한 효과를 달성하기 위해 여러 리소스를 구성해야 할 수 있습니다.

    • RequestAuthentication(security.istio.io/v1beta1) 사용
    • PeerAuthentication(security.istio.io/v1beta1) 사용
  • ServiceMeshPolicy(maistra.io/v1)는 더 이상 지원되지 않습니다.

    • 위에서 언급한 대로 RequestAuthentication 또는 PeerAuthentication 을 사용하지만 Service Mesh Control Plane 네임스페이스에 배치합니다.
  • RbacConfig(rbac.istio.io/v1alpha1)는 더 이상 지원되지 않습니다.

    • RbacConfig, ServiceRole, 및 ServiceRoleBinding을 포함하는 AuthorizationPolicy(security.istio.io/v1beta1)로 대체됩니다.
  • ServiceMeshRbacConfig(maistra.io/v1)는 더 이상 지원되지 않습니다.

    • 위처럼 AuthorizationPolicy 를 사용하지만 Service Mesh Control Plane 네임스페이스에 배치합니다.
  • ServiceRole(rbac.istio.io/v1alpha1)은 더 이상 지원되지 않습니다.
  • ServiceRoleBinding(rbac.istio.io/v1alpha1)은 더 이상 지원되지 않습니다.
  • Kiali에서는 loginLDAP 전략이 더 이상 사용되지 않습니다. 향후 버전에서는 OpenID 공급자를 사용한 인증을 도입할 예정입니다.

2.2.28. 확인된 문제

이러한 제한 사항은 Red Hat OpenShift Service Mesh에 있습니다.

  • Red Hat OpenShift Service Mesh는 아직 IPv6 를 완전히 지원하지 않습니다. 결과적으로 Red Hat OpenShift Service Mesh는 듀얼 스택 클러스터를 지원하지 않습니다.
  • 그래프 레이아웃 - 애플리케이션 아키텍처 및 표시할 데이터(그래프 노드 및 상호 작용 수)에 따라 Kiali 그래프의 레이아웃이 다르게 렌더링됩니다. 모든 상황에 적합하게 렌더링되는 단일 레이아웃을 만드는 것이 불가능하지는 않지만 어렵기 때문에 Kiali는 다양한 레이아웃 옵션을 제공합니다. 다른 레이아웃을 선택하려면 그래프 설정 메뉴에서 다른 레이아웃 스키마를 선택할 수 있습니다.
  • Kiali 콘솔에서 분산 추적 플랫폼(Jaeger) 및 Grafana와 같은 관련 서비스에 처음 액세스하는 경우 인증서를 수락하고 OpenShift Container Platform 로그인 인증 정보를 사용하여 다시 인증해야 합니다. 이것은 프레임워크가 콘솔에 포함된 페이지를 표시하는 방법에 문제가 있기 때문입니다.
  • Bookinfo 샘플 애플리케이션은 IBM Power®, IBM Z® 및 IBM® LinuxONE에 설치할 수 없습니다.
  • WebAssembly 확장은 IBM Power®, IBM Z® 및 IBM® LinuxONE에서 지원되지 않습니다.
  • LuaJIT는 IBM Power®, IBM Z® 및 IBM® LinuxONE에서 지원되지 않습니다.
  • IBM Power®, IBM Z® 및 IBM® LinuxONE에서는 단일 스택 IPv6 지원을 사용할 수 없습니다.
2.2.28.1. 서비스 메시의 알려진 문제

istio-system 레이블이 검색 선택기와 일치하지 않으면 Red Hat OpenShift Service Mesh: * OSSM-5556 게이트웨이에서 알려진 문제입니다.

+ 해결방법: 게이트웨이 구성을 건너뛰지 않도록 검색 선택기와 일치하도록 컨트롤 플레인 네임스페이스에 레이블을 지정합니다.

+ .example ServiceMeshControlPlane 리소스

apiVersion: maistra.io/v2
kind: ServiceMeshControlPlane
metadata:
  name: basic
  namespace: istio-system
spec:
  mode: ClusterWide
  meshConfig:
    discoverySelectors:
    - matchLabels:
        istio-discovery: enabled
  gateways:
    ingress:
      enabled: true
Copy to Clipboard Toggle word wrap

+ 다음 명령줄에서 다음 명령을 실행합니다.

+

oc label namespace istio-system istio-discovery=enabled
Copy to Clipboard Toggle word wrap
  • OSSM-3890 다중 테넌트 메시 배포에서 Gateway API를 사용하도록 시도하면 다음과 유사한 오류 메시지가 생성됩니다.

    2023-05-02T15:20:42.541034Z	error	watch error in cluster Kubernetes: failed to list *v1alpha2.TLSRoute: the server could not find the requested resource (get tlsroutes.gateway.networking.k8s.io)
    2023-05-02T15:20:42.616450Z	info	kube	controller "gateway.networking.k8s.io/v1alpha2/TCPRoute" is syncing...
    Copy to Clipboard Toggle word wrap

    다중 테넌트 메시 배포에서 게이트웨이 API를 지원하려면 모든 게이트웨이 API CRD(Custom Resource Definition) 파일이 클러스터에 있어야 합니다.

    다중 테넌트 메시 배포에서 CRD 검사가 비활성화되고 Istio는 클러스터에 있는 CRD를 검색할 수 없습니다. 결과적으로 Istio는 지원되는 모든 게이트웨이 API CRD를 확인하려고 하지만 일부 CRD가 없는 경우 오류가 생성됩니다.

    서비스 메시 2.3.1 이상 버전은 v1alpha2v1beta1 CRD를 모두 지원합니다. 따라서 게이트웨이 API를 지원하기 위해 다중 테넌트 메시 배포에 두 CRD 버전이 모두 있어야 합니다.

    해결방법: 다음 예에서 kubectl get 작업은 v1alpha2v1beta1 CRD를 설치합니다. URL에는 추가 experimental 세그먼트가 포함되어 있으며 그에 따라 기존 스크립트를 업데이트합니다.

    $ kubectl get crd gateways.gateway.networking.k8s.io ||   { kubectl kustomize "github.com/kubernetes-sigs/gateway-api/config/crd/experimental?ref=v0.5.1" | kubectl apply -f -; }
    Copy to Clipboard Toggle word wrap
  • OSSM-2042 default 라는 SMCP 배포가 실패합니다. SMCP 오브젝트를 생성하고 버전 필드를 v2.3으로 설정하는 경우 오브젝트 이름은 default 일 수 없습니다. 이름이 default 인 경우 컨트롤 플레인이 배포되지 않고 OpenShift에서 다음 메시지와 함께 Warning 이벤트를 생성합니다.

    Error processing component mesh-config: error: [mesh-config/templates/telemetryv2_1.6.yaml: Internal error occurred: failed calling webhook "rev.validation.istio.io": Post "https://istiod-default.istio-system.svc:443/validate?timeout=10s": x509: certificate is valid for istiod.istio-system.svc, istiod-remote.istio-system.svc, istio-pilot.istio-system.svc, not istiod-default.istio-system.svc, mesh-config/templates/enable-mesh-permissive.yaml

  • OSSM-1655 Kiali 대시보드는 SMCP 에서 mTLS를 활성화한 후 오류를 표시합니다.

    SMCP에서 spec.security.controlPlane.mtls 설정을 활성화한 후 Kiali 콘솔에 No subsets defined라는 오류 메시지가 표시됩니다.

  • OSSM-1505 이 문제는 OpenShift Container Platform 4.11에서 ServiceMeshExtension 리소스를 사용하는 경우에만 발생합니다. OpenShift Container Platform 4.11에서 ServiceMeshExtension 을 사용하면 리소스가 준비되지 않습니다. oc describe ServiceMeshExtension 을 사용하여 문제를 검사하는 경우 stderr: Error creating mount namespace before pivot: function not implemented라는 오류가 표시됩니다.

    해결방법: ServiceMeshExtension 이 서비스 메시 2.2에서 더 이상 사용되지 않습니다. ServiceMeshExtension 에서 WasmPlugin 리소스로 마이그레이션합니다. 자세한 내용은 ServiceMeshExtension 에서 WasmPlugin 리소스로 마이그레이션을 참조하십시오.

  • OSSM-1396 ServiceMeshControlPlane 을 업데이트할 때 게이트웨이 리소스에 spec.externalIPs 설정이 포함된 경우 게이트웨이가 제거되고 다시 생성되지 않습니다.
  • OSSM-1168 서비스 메시 리소스가 단일 YAML 파일로 생성되면 Envoy 프록시 사이드카가 Pod에 안정적으로 삽입되지 않습니다. SMCP, SMMR 및 Deployment 리소스가 개별적으로 생성되면 배포가 예상대로 작동합니다.
  • OSSM-1115 spec.proxy API의 concurrency 필드가 istio-proxy로 전달되지 않았습니다. ProxyConfig 로 설정할 때 concurrency 필드가 작동합니다. concurrency 필드는 실행할 작업자 스레드 수를 지정합니다. 필드가 0 으로 설정된 경우 사용 가능한 작업자 스레드 수는 CPU 코어 수와 동일합니다. 필드가 설정되지 않은 경우 사용 가능한 작업자 스레드 수는 기본적으로 2 입니다.

    다음 예에서 concurrency 필드는 0 으로 설정됩니다.

    apiVersion: networking.istio.io/v1beta1
    kind: ProxyConfig
    metadata:
      name: mesh-wide-concurrency
      namespace: <istiod-namespace>
    spec:
      concurrency: 0
    Copy to Clipboard Toggle word wrap
  • OSSM-1052 Service Mesh Control Plane에서 ingressgateway에 대한 서비스 ExternalIP 를 구성할 때 서비스가 생성되지 않습니다. SMCP의 스키마에 서비스에 대한 매개변수가 누락되어 있습니다.

    해결방법: SMCP 사양에서 게이트웨이 생성을 비활성화하고 게이트웨이 배포를 완전히 수동으로 관리합니다(서비스, 역할 및 RoleBinding 포함).

  • OSSM-882 이는 서비스 메시 2.1 및 이전 버전에 적용됩니다. namespace는 accessible_namespace 목록에 있지만 Kiali UI에는 표시되지 않습니다. 기본적으로 Kiali는 일반적으로 메시의 일부가 아닌 내부 용도로만 사용되므로 "kube"로 시작하는 네임스페이스를 표시하지 않습니다.

    예를 들어 'akube-a'라는 네임스페이스를 생성하여 Service Mesh 멤버 롤에 추가하는 경우 Kiali UI에서 네임스페이스를 표시하지 않습니다. 정의된 제외 패턴의 경우 소프트웨어는 패턴으로 시작하거나 패턴을 포함하는 네임스페이스를 제외합니다.

    해결방법: 설정 접두사(^)를 사용하도록 Kiali 사용자 정의 리소스 설정을 변경합니다. 예를 들면 다음과 같습니다.

    api:
      namespaces:
        exclude:
        - "^istio-operator"
        - "^kube-.*"
        - "^openshift.*"
        - "^ibm.*"
        - "^kiali-operator"
    Copy to Clipboard Toggle word wrap
  • MAISTRA-2692 Mixer를 제거하면 Service Mesh 2.0.x에 정의된 사용자 정의 메트릭은 2.1에서 사용할 수 없습니다. 사용자 정의 메트릭은 EnvoyFilter 를 사용하여 구성할 수 있습니다. Red Hat은 명시적으로 문서화된 경우를 제외하고 EnvoyFilter 구성을 지원할 수 없습니다. 이는 기본 Envoy API와 밀접하게 결합되므로 이전 버전과의 호환성을 유지할 수 없습니다.
  • MAISTRA-2648 서비스 메시 확장은 현재 IBM Z®에 배포된 메시와 호환되지 않습니다.
  • MAISTRA-1959 2.0으로 마이그레이션 mTLS가 활성화된 경우 Prometheus 스크래핑(spec.addons.prometheus.scrapetrue로 설정)이 작동하지 않습니다. 또한 Kiali는 mTLS가 비활성화되면 관련 없는 그래프 데이터를 표시합니다.

    이 문제는 프록시 구성에서 포트 15020을 제외하여 해결할 수 있습니다. 예를 들면 다음과 같습니다.

    spec:
      proxy:
        networking:
          trafficControl:
            inbound:
              excludedPorts:
              - 15020
    Copy to Clipboard Toggle word wrap
  • MAISTRA-453 새 프로젝트를 생성하고 즉시 pod를 배포하면 사이드카 삽입이 발생하지 않습니다. pod가 생성되기 전에 Operator에서 maistra.io/member-of를 추가하지 못하므로 사이드카 삽입을 수행하려면 pod를 삭제하고 다시 생성해야 합니다.
  • MAISTRA-158 동일한 호스트 이름을 참조하는 여러 게이트웨이를 적용하면 모든 게이트웨이가 작동을 중지합니다.
2.2.28.2. Kiali의 확인된 문제
참고

Kiali의 새로운 문제는 OpenShift Service Mesh 프로젝트에서 생성되어야 하며 ComponentKiali로 설정되어야 합니다.

다음은 Kiali에서 알려진 문제입니다.

  • OSSM-6299 OpenShift Container Platform 4.15에서 트래픽 그래프 내의 모든 노드 메뉴의 노드 그래프 메뉴 옵션을 클릭하면 노드 그래프가 표시되지 않습니다. 대신 동일한 트래픽 그래프로 페이지를 새로 고칩니다. 현재 이 문제에 대한 해결방법이 없습니다.
  • OSSM-6298 특정 서비스와 관련된 워크로드 링크와 같은 OpenShift Service Mesh Console(OSSMC) 플러그인 내에서 항목 참조를 클릭하면 콘솔에서 원하는 페이지를 열기 전에 여러 리디렉션을 수행하는 경우가 있습니다. 웹 브라우저에서 Back 을 클릭하면 이전 페이지 대신 다른 콘솔 페이지가 열립니다. 해결 방법으로 뒤로 두 번 클릭하여 이전 페이지로 이동합니다.
  • OSSM-6290 OpenShift Container Platform 4.15의 경우 Istio Config 목록 페이지의 프로젝트 필터가 제대로 작동하지 않습니다. 드롭다운에서 특정 프로젝트를 선택하더라도 모든 istio 항목이 표시됩니다. 현재 이 문제에 대한 해결방법이 없습니다.
  • KIALI-2206 처음으로 Kiali 콘솔에 액세스했을 때 Kiali에 대해 캐시된 브라우저 데이터가 없는 경우 Kiali 서비스 상세 정보 페이지의 Metrics 탭에 있는 ‘Grafana에서 보기’ 링크가 잘못된 위치로 리디렉션됩니다. 이 문제가 발생하는 유일한 상황은 Kiali에 처음 액세스하는 경우입니다.
  • KIALI-507 Kiali는 Internet Explorer 11을 지원하지 않습니다. 기본 프레임워크가 Internet Explorer를 지원하지 않기 때문입니다. Kiali 콘솔에 액세스하려면 Chrome, Edge, Firefox 또는 Safari 브라우저의 두 가지 최신 버전 중 하나를 사용하십시오.

2.2.29. 해결된 문제

이전 릴리스에서 다음 문제가 해결되었습니다.

2.2.29.1. 서비스 메시의 수정된 문제
  • OSSM-6177 이전에 ServiceMeshControlPlane (SMCP)에서 검증 메시지가 활성화되면 GatewayAPI 지원이 활성화되지 않은 경우 istiod 가 지속적으로 충돌했습니다. 이제 검증 메시지가 활성화되었지만 GatewayAPI 지원이 아닌 경우 istiod 가 지속적으로 충돌하지 않습니다.
  • OSSM-6163 다음 문제를 해결합니다.

    • 이전에는 불안정한 Prometheus 이미지가 SMCP(Service Mesh Control Plane) v2.5에 포함되었으며 사용자가 Prometheus 대시보드에 액세스할 수 없었습니다. 이제 Service Mesh operator 2.5.1에서 Prometheus 이미지가 업데이트되었습니다.
    • 이전에는 SMCP(Service Mesh Control Plane)에서 Grafana 데이터 소스에서 기본 인증 암호를 자동으로 설정할 수 없어 사용자가 Grafana 메시 대시보드의 Prometheus에서 메트릭을 볼 수 없었습니다. 이제 Grafana 데이터 소스 암호가 secureJsonData 필드에 구성됩니다. 대시보드에 메트릭이 올바르게 표시됩니다.
  • 이전에 OSSM-6148 은 사용자가 트래픽 그래프 페이지의 모든 노드 메뉴에서 옵션을 클릭했을 때 OSSM-6148 (OSSMC) 플러그인이 응답하지 않았습니다. 이제 플러그인은 해당 세부 정보 페이지로 리디렉션하여 메뉴에서 선택한 옵션에 응답합니다.
  • OSSM-6099 이전에는 OpenShift Service Mesh Console(OSSMC) 플러그인이 IPv6 클러스터에서 올바르게 로드되지 않았습니다. 이제 OSSMC 플러그인 구성이 수정되어 IPv6 클러스터에서 올바르게 로드됩니다.
  • OSSM-5960 이전 버전에서는 OSMC(OpenShift Service Mesh Console) 플러그인은 백엔드 오류 또는 Istio 검증과 같은 알림 메시지를 표시하지 않았습니다. 이제 이러한 알림이 플러그인 페이지 상단에 올바르게 표시됩니다.
  • OSSM-5959 이전에는 OpenShift Service Mesh Console(OSSMC) 플러그인에서 개요 페이지에 TLS 및 Istio 인증 정보를 표시하지 않았습니다. 이제 이 정보가 올바르게 표시됩니다.
  • OSSM-5902 이전에 OpenShift Service Mesh Console(OSSMC) 플러그인이 개요 페이지에서 Istio 구성 상태 기호를 클릭했을 때 "검색되지 않음" 오류로 리디렉션되었습니다. 이제 플러그인이 올바른 Istio 구성 세부 정보 페이지로 리디렉션됩니다.
  • 이전에는 Istio Operator Pod가 일부 재시작 조건에서 리더 리스를 기다릴 수 있습니다. 이제 이 문제를 방지하기 위해 리더 선택 구현이 개선되었습니다.
  • OSSM-1397 이전에 네임스페이스에서 maistra.io/member-of 레이블을 제거한 경우 Service Mesh Operator가 네임스페이스에 레이블을 자동으로 다시 적용하지 않았습니다. 그 결과 네임스페이스에서 사이드카 삽입이 작동하지 않았습니다.

    ServiceMeshMember 오브젝트를 변경할 때 Operator가 네임스페이스에 레이블을 다시 적용하여 이 멤버 오브젝트의 조정을 트리거했습니다.

    이제 네임스페이스를 변경하면 멤버 오브젝트 조정도 트리거됩니다.

  • OSSM-3647 이전에 SMCP(Service Mesh Control Plane) v2.2(Istio 1.12)에서 WasmPlugins는 인바운드 리스너에만 적용되었습니다. SMCP v2.3 (Istio 1.14)부터 WasmPlugins는 기본적으로 인바운드 및 아웃 바운드 리스너에 적용되어 3scale WasmPlugin 사용자에게 회귀 문제가 도입되었습니다. 이제 환경 변수 APPLY_WASM_PLUGINS_TO_INBOUND_ONLY 가 추가되어 SMCP v2.2에서 v2.3 및 v2.4로 안전하게 마이그레이션할 수 있습니다.

    SMCP 구성에 다음 설정을 추가해야 합니다.

    spec:
      runtime:
        components:
          pilot:
            container:
              env:
                APPLY_WASM_PLUGINS_TO_INBOUND_ONLY: "true"
    Copy to Clipboard Toggle word wrap

    안전한 마이그레이션을 위해 다음 단계를 수행합니다.

    1. Set APPLY_WASM_PLUGINS_TO_INBOUND_ONLY in SMCP v2.2.
    2. 2.4로 업그레이드합니다.
    3. WasmPlugins에서 spec.match[].mode: SERVER 를 설정합니다.
    4. 이전에 추가한 환경 변수를 제거합니다.
  • OSSM-4851 이전 버전에서는 runAsGroup,runAsUser 또는 fsGroup 매개변수가 nil 였을 때 메시 내부의 네임스페이스에 새 Pod를 배포하는 Operator에서 오류가 발생했습니다. 이제 nil 값을 방지하기 위해 yaml 검증이 추가되었습니다.
  • OSSM-3771 이전에는 SMCP(Service Mesh Control Plane)에 정의된 추가 수신 게이트웨이에 대해 OpenShift 경로를 비활성화할 수 없었습니다. 이제 각 additionalIngress 게이트웨이에 routeConfig 블록을 추가할 수 있으므로 각 게이트웨이에 대해 OpenShift 경로 생성을 활성화하거나 비활성화할 수 있습니다.
  • OSSM-4197 이전에 'ServiceMeshControlPlane' 리소스의 v2.2 또는 v2.1을 배포한 경우 /etc/cni/multus/net.d/ 디렉터리가 생성되지 않았습니다. 결과적으로 istio-cni Pod가 준비되지 않았으며 istio-cni pod 로그에 다음 메시지가 포함되었습니다.

    $ error   Installer exits with open /host/etc/cni/multus/net.d/v2-2-istio-cni.kubeconfig.tmp.841118073: no such file or directory
    Copy to Clipboard Toggle word wrap

    이제 'ServiceMeshControlPlane' 리소스의 v2.2 또는 v2.1을 배포하면 /etc/cni/multus/net.d/ 디렉터리가 생성되고 istio-cni Pod가 준비됩니다.

  • OSSM-3993 이전 버전에서는 Kiali는 443 의 표준 HTTPS 포트에서 프록시를 통해 OpenShift OAuth만 지원했습니다. 이제 Kiali는 비표준 HTTPS 포트를 통해 OpenShift OAuth를 지원합니다. 포트를 활성화하려면 spec.server.web_port 필드를 Kiali CR에서 프록시의 비표준 HTTPS 포트로 설정해야 합니다.
  • OSSM-3936 이전에는 injection_label_revinjection_label_name 속성의 값이 하드 코딩되었습니다. 이로 인해 Kiali CRD(Custom Resource Definition)에서 사용자 정의 구성이 적용되지 않았습니다. 이제 속성 값이 하드 코딩되지 않습니다. spec.istio_labels 사양에서 injection_label_revinjection_label_name 속성 값을 사용자 지정할 수 있습니다.
  • OSSM-3644 이전에 페더레이션 egress-gateway가 네트워크 게이트웨이 끝점의 잘못된 업데이트를 수신하여 추가 엔드포인트 항목을 생성했습니다. 이제 페더레이션 회귀 게이트웨이가 서버 측에서 업데이트되어 올바른 네트워크 게이트웨이 끝점을 수신합니다.
  • OSSM-3595 이전 버전에서는 SELinux에서 유틸리티 iptables-restore/tmp 디렉토리에서 파일을 열 수 없기 때문에 RHEL에서 istio-cni 플러그인이 실패하는 경우가 있습니다. 이제 SELinux는 파일을 통해 대신 stdin 입력 스트림을 통해 iptables-restore 를 전달합니다.
  • OSSM-3586 이전 버전에서는 GCP(Google Cloud Platform) 메타데이터 서버를 사용할 수 없는 경우 Istio 프록시가 시작 속도가 느렸습니다. Istio 1.14.6으로 업그레이드할 때 메타데이터 서버를 사용할 수 없는 경우에도 Istio 프록시는 GCP에서 예상대로 시작됩니다.
  • OSSM-3025 Istiod가 준비되지 않는 경우가 있습니다. 메시에 멤버 네임스페이스가 포함된 경우 Istiod Pod가 Istiod 내의 교착 상태로 인해 준비되지 않은 경우가 있었습니다.
  • $ oc label namespace istio-system maistra.io/ignore-namespace-
    Copy to Clipboard Toggle word wrap

  • MAISTRA-2411 Operator가 ServiceMeshControlPlane에서 spec.gateways.additionaIngress를 사용하여 새 수신 게이트웨이를 생성하면 Operator는 기본 istio-ingressgateway에 대한 추가 수신 게이트웨이에 대한 NetworkPolicy를 생성하지 않습니다. 이로 인해 새 게이트웨이 경로에서 503 응답이 발생합니다.

    해결방법: istio-system 네임스페이스에서 NetworkPolicy 를 수동으로 생성합니다.

  • MAISTRA-2401 CVE-2021-3586 servicemesh-operator: NetworkPolicy 리소스가 인그레스 리소스에 대해 포트를 잘못 지정했습니다. Red Hat OpenShift Service Mesh에 설치된 NetworkPolicy 리소스가 액세스할 수 있는 포트를 올바르게 지정하지 않았습니다. 이로 인해 모든 pod에서 이러한 리소스의 모든 포트에 액세스할 수 있었습니다. 다음 리소스에 적용되는 네트워크 정책은 영향을 받습니다.

    • Galley

2.3.

2.3.1.

2.3.1.1.

2.3.1.2.

  • 중요

2.3.2.

주의

2.3.2.1.

2.3.3.

중요

Expand
표 2.3.
   

2.3.4.

2.3.4.1.
2.3.4.1.1.

2.3.4.1.2.

2.3.4.2.
2.3.4.2.1.

apiVersion: maistra.io/v2
kind: ServiceMeshControlPlane
spec:
  gateways:
    openshiftRoute:
      enabled: true
Copy to Clipboard Toggle word wrap
2.3.4.2.2.

2.3.4.3.

2.3.4.4.

2.3.4.5.

2.3.4.6.

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]”
Copy to Clipboard Toggle word wrap

apiVersion: maistra.io/v2
kind: ServiceMeshControlPlane
spec:
  policy:
    type: Istiod
  telemetry:
    type: Istiod
  version: v2.6
Copy to Clipboard Toggle word wrap

2.3.4.7.

  1. $ oc project istio-system
    Copy to Clipboard Toggle word wrap
    1. $ oc get smcp -o yaml
      Copy to Clipboard Toggle word wrap
      작은 정보

  2. apiVersion: maistra.io/v2
    kind: ServiceMeshControlPlane
    metadata:
      name: basic
    spec:
      version: v2.6
    Copy to Clipboard Toggle word wrap

2.3.4.8.

2.3.4.8.1.

    1. $ oc get smcp -o yaml
      Copy to Clipboard Toggle word wrap
    2. $ oc get smcp.v1.maistra.io <smcp_name> > smcp-resource.yaml
      #Edit the smcp-resource.yaml file.
      $ oc replace -f smcp-resource.yaml
      Copy to Clipboard Toggle word wrap
    3. $ oc patch smcp.v1.maistra.io <smcp_name> --type json --patch '[{"op": "replace","path":"/spec/path/to/bad/setting","value":"corrected-value"}]'
      Copy to Clipboard Toggle word wrap
    4. $ oc edit smcp.v1.maistra.io <smcp_name>
      Copy to Clipboard Toggle word wrap
  1. $ oc project istio-system
    Copy to Clipboard Toggle word wrap
  2. $ oc get servicemeshcontrolplanes.v1.maistra.io <smcp_name> -o yaml > <smcp_name>.v1.yaml
    Copy to Clipboard Toggle word wrap
  3. $ oc get smcp <smcp_name> -o yaml > <smcp_name>.v2.yaml
    Copy to Clipboard Toggle word wrap
  4. $ oc new-project istio-system-upgrade
    Copy to Clipboard Toggle word wrap
  5. $ oc create -n istio-system-upgrade -f <smcp_name>.v2.yaml
    Copy to Clipboard Toggle word wrap

2.3.4.8.2.

2.3.4.8.2.1.

2.3.4.8.2.2.

2.3.4.8.2.3.

2.3.4.8.2.4.

2.3.4.8.2.5.

spec:
  policy:
    type: Mixer
Copy to Clipboard Toggle word wrap

spec:
  telemetry:
    type: Mixer
Copy to Clipboard Toggle word wrap

2.3.4.8.2.6.

2.3.4.8.2.6.1.

apiVersion: authentication.istio.io/v1alpha1
kind: Policy
metadata:
  name: productpage-mTLS-disable
  namespace: <namespace>
spec:
  targets:
  - name: productpage
Copy to Clipboard Toggle word wrap

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
Copy to Clipboard Toggle word wrap

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
Copy to Clipboard Toggle word wrap

#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
Copy to Clipboard Toggle word wrap

2.3.4.8.3.

2.3.4.8.3.1.

2.3.4.8.3.2.

2.3.4.8.3.3.

spec:
  tracing:
    sampling: 100 # 1%
    type: Jaeger
Copy to Clipboard Toggle word wrap

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"
Copy to Clipboard Toggle word wrap

2.3.4.8.3.4.

spec:
  addons:
    grafana:
      enabled: true
      install: {} # customize install
    kiali:
      enabled: true
      name: kiali
      install: {} # customize install
Copy to Clipboard Toggle word wrap

2.3.4.8.3.5.

Expand
   

2.3.4.8.4.

2.3.5.

2.3.5.1.

$ oc rollout restart <deployment>
Copy to Clipboard Toggle word wrap

2.4.

2.4.1.

2.4.2.

2.4.3.

2.4.3.1.

2.4.3.2.

2.4.3.3.

2.4.4.

2.4.4.1.

2.4.4.2.

  • 중요

2.4.4.3.

2.4.5.

2.5.

2.5.1.

2.5.2.

2.5.2.1.

참고

2.5.2.1.1.

참고

  1. 참고

    apiVersion: maistra.io/v2
    kind: ServiceMeshControlPlane
    metadata:
      name: basic
    spec:
      mode: ClusterWide
      meshConfig:
        discoverySelectors:
        - matchLabels:
            istio-discovery: enabled 
    1
    
        - matchExpressions:
          - key: kubernetes.io/metadata.name 
    2
    
            operator: In
            values:
            - info
            - httpbin
            - istio-system
    Copy to Clipboard Toggle word wrap
    1
    2

2.5.2.1.2.

참고

  1. $ oc -n istio-system edit smcp <name> 
    1
    Copy to Clipboard Toggle word wrap
    1
  2. 참고

    apiVersion: maistra.io/v2
    kind: ServiceMeshControlPlane
    metadata:
      name: basic
    spec:
      mode: ClusterWide
      meshConfig:
        discoverySelectors:
        - matchLabels:
            istio-discovery: enabled 
    1
    
        - matchExpressions:
          - key: kubernetes.io/metadata.name 
    2
    
            operator: In
            values:
            - info
            - httpbin
            - istio-system
    Copy to Clipboard Toggle word wrap
    1
    2

2.5.2.1.3.

참고

  1. apiVersion: maistra.io/v1
    kind: ServiceMeshMemberRoll
    metadata:
      name: default
    spec:
      memberSelectors:
      - matchLabels:
          istio-injection: enabled 
    1
    Copy to Clipboard Toggle word wrap
    1
2.5.2.1.4.

참고

  1. $ oc edit smmr -n <controlplane-namespace>
    Copy to Clipboard Toggle word wrap
  2. apiVersion: maistra.io/v1
    kind: ServiceMeshMemberRoll
    metadata:
      name: default
    spec:
      memberSelectors:
      - matchLabels:
          istio-injection: enabled 
    1
    Copy to Clipboard Toggle word wrap
    1
2.5.2.1.5.

  1. apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: nginx
    spec:
      selector:
        matchLabels:
          app: nginx
      template:
        metadata:
          annotations:
            sidecar.istio.io/inject: 'true' 
    1
    
          labels:
            app: nginx
        spec:
          containers:
          - name: nginx
            image: nginx:1.14.2
            ports:
            - containerPort: 80
    ---
    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: nginx-without-sidecar
    spec:
      selector:
        matchLabels:
          app: nginx-without-sidecar
      template:
        metadata:
          labels:
            app: nginx-without-sidecar 
    2
    
        spec:
          containers:
          - name: nginx
            image: nginx:1.14.2
            ports:
            - containerPort: 80
    Copy to Clipboard Toggle word wrap
    1
    2
2.5.2.1.6.

  1. $ oc edit deployment -n <namespace> <deploymentName>
    Copy to Clipboard Toggle word wrap
  2. apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: nginx
    spec:
      selector:
        matchLabels:
          app: nginx
      template:
        metadata:
          annotations:
            sidecar.istio.io/inject: 'true' 
    1
    
          labels:
            app: nginx
        spec:
          containers:
          - name: nginx
            image: nginx:1.14.2
            ports:
            - containerPort: 80
    ---
    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: nginx-without-sidecar
    spec:
      selector:
        matchLabels:
          app: nginx-without-sidecar
      template:
        metadata:
          labels:
            app: nginx-without-sidecar 
    2
    
        spec:
          containers:
          - name: nginx
            image: nginx:1.14.2
            ports:
            - containerPort: 80
    Copy to Clipboard Toggle word wrap
    1
    2

2.5.3.

2.6.

2.6.1.

2.6.1.1.

 

2.6.1.2.

2.6.1.3.

Expand
표 2.4.
   

2.6.1.4.

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
Copy to Clipboard Toggle word wrap

2.6.1.5.

2.6.1.6.

2.6.1.7.

2.6.1.8.
2.6.1.9.

2.6.1.10.

2.6.1.11.

참고

2.6.1.12.

2.6.1.13.

참고

2.6.1.14.

2.6.1.15.

2.6.1.16.

2.6.1.16.1.

2.6.1.16.2.

2.6.1.16.3.

2.6.2.

2.6.2.1.

참고

2.6.2.2.

2.6.3.

2.6.4.

2.7.

2.7.1.

2.7.2.

2.7.2.1.

2.7.2.2.

2.7.2.3.

2.7.2.4.
2.7.2.5.
2.7.2.6.
2.7.2.7.

2.7.3.

2.8.

참고

 

중요

2.8.1.

주의

중요

2.8.2.

중요

참고

    • 중요

    • 중요

2.8.3.

  1. $ oc -n openshift-operators get subscriptions
    Copy to Clipboard Toggle word wrap
  2. $ oc -n openshift-operators edit subscription <name> 
    1
    Copy to Clipboard Toggle word wrap
    1
  3. apiVersion: operators.coreos.com/v1alpha1
    kind: Subscription
    metadata:
      labels:
        operators.coreos.com/servicemeshoperator.openshift-operators: ""
      name: servicemeshoperator
      namespace: openshift-operators
    # ...
    spec:
      config:
        nodeSelector: 
    1
    
          node-role.kubernetes.io/infra: ""
        tolerations: 
    2
    
        - effect: NoSchedule
          key: node-role.kubernetes.io/infra
          value: reserved
        - effect: NoExecute
          key: node-role.kubernetes.io/infra
          value: reserved
    Copy to Clipboard Toggle word wrap
    1
    2

2.8.4.

  • $ oc -n openshift-operators get po -l name=istio-operator -owide
    Copy to Clipboard Toggle word wrap

2.8.5.

2.9.

2.9.1.

참고

참고

2.9.1.1.

2.9.1.2.

  1. $ oc new-project istio-system
    Copy to Clipboard Toggle word wrap
  2. apiVersion: maistra.io/v2
    kind: ServiceMeshControlPlane
    metadata:
      name: basic
      namespace: istio-system
    spec:
      version: v2.6
      tracing:
        type: None
        sampling: 10000
      addons:
        kiali:
          enabled: true
          name: kiali
        grafana:
          enabled: true
    Copy to Clipboard Toggle word wrap

  3. $ oc create -n istio-system -f <istio_installation.yaml>
    Copy to Clipboard Toggle word wrap
  4. $ oc get pods -n istio-system -w
    Copy to Clipboard Toggle word wrap

    NAME                                   READY   STATUS    RESTARTS   AGE
    grafana-b4d59bd7-mrgbr                 2/2     Running   0          65m
    istio-egressgateway-678dc97b4c-wrjkp   1/1     Running   0          108s
    istio-ingressgateway-b45c9d54d-4qg6n   1/1     Running   0          108s
    istiod-basic-55d78bbbcd-j5556          1/1     Running   0          108s
    kiali-6476c7656c-x5msp                 1/1     Running   0          43m
    prometheus-58954b8d6b-m5std            2/2     Running   0          66m
    Copy to Clipboard Toggle word wrap
2.9.1.3.

  1. $ oc get smcp -n istio-system
    Copy to Clipboard Toggle word wrap

    NAME    READY   STATUS            PROFILES      VERSION   AGE
    basic   10/10   ComponentsReady   ["default"]   2.6.7     66m
    Copy to Clipboard Toggle word wrap

2.9.2.

2.9.2.1.

  1. spec:
      runtime:
        defaults:
          pod:
            nodeSelector: 
    1
    
              node-role.kubernetes.io/infra: ""
            tolerations: 
    2
    
            - effect: NoSchedule
              key: node-role.kubernetes.io/infra
              value: reserved
            - effect: NoExecute
              key: node-role.kubernetes.io/infra
              value: reserved
    Copy to Clipboard Toggle word wrap
    1
    2
2.9.2.2.

  1. spec:
      runtime:
        components:
          pilot:
            pod:
              nodeSelector: 
    1
    
                node-role.kubernetes.io/infra: ""
              tolerations: 
    2
    
              - effect: NoSchedule
                key: node-role.kubernetes.io/infra
                value: reserved
              - effect: NoExecute
                key: node-role.kubernetes.io/infra
                value: reserved
    Copy to Clipboard Toggle word wrap
    1
    2
  2. spec:
      gateways:
        ingress:
          runtime:
            pod:
              nodeSelector: 
    1
    
                node-role.kubernetes.io/infra: ""
              tolerations: 
    2
    
              - effect: NoSchedule
                key: node-role.kubernetes.io/infra
                value: reserved
              - effect: NoExecute
                key: node-role.kubernetes.io/infra
                value: reserved
        egress:
          runtime:
            pod:
              nodeSelector: 
    3
    
                node-role.kubernetes.io/infra: ""
              tolerations: 
    4
    
              - effect: NoSchedule
                key: node-role.kubernetes.io/infra
                value: reserved
              - effect: NoExecute
                key: node-role.kubernetes.io/infra
                value: reserved
    Copy to Clipboard Toggle word wrap
    1 3
    2 4
2.9.2.3.

  1. $ oc -n istio-system edit smcp <name> 
    1
    Copy to Clipboard Toggle word wrap
    1
  2. spec:
      runtime:
        defaults:
          pod:
            nodeSelector: 
    1
    
              node-role.kubernetes.io/infra: ""
            tolerations: 
    2
    
            - effect: NoSchedule
              key: node-role.kubernetes.io/infra
              value: reserved
            - effect: NoExecute
              key: node-role.kubernetes.io/infra
              value: reserved
    Copy to Clipboard Toggle word wrap
    1
    2
2.9.2.4.

  1. $ oc -n istio-system edit smcp <name> 
    1
    Copy to Clipboard Toggle word wrap
    1
  2. spec:
      runtime:
        components:
          pilot:
            pod:
              nodeSelector: 
    1
    
                node-role.kubernetes.io/infra: ""
              tolerations: 
    2
    
              - effect: NoSchedule
                key: node-role.kubernetes.io/infra
                value: reserved
              - effect: NoExecute
                key: node-role.kubernetes.io/infra
                value: reserved
    Copy to Clipboard Toggle word wrap
    1
    2
  3. spec:
      gateways:
        ingress:
          runtime:
            pod:
              nodeSelector: 
    1
    
                node-role.kubernetes.io/infra: ""
              tolerations: 
    2
    
              - effect: NoSchedule
                key: node-role.kubernetes.io/infra
                value: reserved
              - effect: NoExecute
                key: node-role.kubernetes.io/infra
                value: reserved
        egress:
          runtime:
            pod:
              nodeSelector: 
    3
    
                node-role.kubernetes.io/infra: ""
              tolerations: 
    4
    
              - effect: NoSchedule
                key: node-role.kubernetes.io/infra
                value: reserved
              - effect: NoExecute
                key: node-role.kubernetes.io/infra
                value: reserved
    Copy to Clipboard Toggle word wrap
    1 3
    2 4
2.9.2.5.

  • $ oc -n istio-system get pods -owide
    Copy to Clipboard Toggle word wrap

2.9.3.

2.9.3.1.

  1. apiVersion: maistra.io/v2
    kind: ServiceMeshControlPlane
    metadata:
      name: basic
      namespace: istio-system
    spec:
      version: v2.6
      mode: ClusterWide
    Copy to Clipboard Toggle word wrap

2.9.3.2.

  1. $ oc new-project istio-system
    Copy to Clipboard Toggle word wrap
  2. apiVersion: maistra.io/v2
    kind: ServiceMeshControlPlane
    metadata:
      name: basic
      namespace: istio-system
    spec:
      version: v2.6
      mode: ClusterWide
    Copy to Clipboard Toggle word wrap

  3. $ oc create -n istio-system -f <istio_installation.yaml>
    Copy to Clipboard Toggle word wrap

  1. $ oc get pods -n istio-system -w
    Copy to Clipboard Toggle word wrap

    NAME                                   READY   STATUS    RESTARTS   AGE
    grafana-b4d59bd7-mrgbr                 2/2     Running   0          65m
    istio-egressgateway-678dc97b4c-wrjkp   1/1     Running   0          108s
    istio-ingressgateway-b45c9d54d-4qg6n   1/1     Running   0          108s
    istiod-basic-55d78bbbcd-j5556          1/1     Running   0          108s
    jaeger-67c75bd6dc-jv6k6                2/2     Running   0          65m
    kiali-6476c7656c-x5msp                 1/1     Running   0          43m
    prometheus-58954b8d6b-m5std            2/2     Running   0          66m
    Copy to Clipboard Toggle word wrap

2.9.3.3.

참고

참고

2.9.4.

  1. 그림 2.1.

2.9.6.

2.10.

2.10.1.

참고

2.10.2.

2.10.2.1.

2.10.2.2.

  1. $ oc login --username=<NAMEOFUSER> https://<HOSTNAME>:6443
    Copy to Clipboard Toggle word wrap
  2. $ oc new-project <your-project>
    Copy to Clipboard Toggle word wrap
  3. apiVersion: maistra.io/v1
    kind: ServiceMeshMemberRoll
    metadata:
      name: default
      namespace: istio-system
    spec:
      members:
        # a list of projects joined into the service mesh
        - your-project-name
        - another-project-name
    Copy to Clipboard Toggle word wrap

  4. $ oc create -n istio-system -f servicemeshmemberroll-default.yaml
    Copy to Clipboard Toggle word wrap
  5. $ oc get smmr -n istio-system default
    Copy to Clipboard Toggle word wrap

2.10.3.

참고

2.10.3.1.

  1. apiVersion: maistra.io/v1
    kind: ServiceMeshMemberRoll
    metadata:
      name: default
      namespace: istio-system #control plane project
    spec:
      members:
        # a list of projects joined into the service mesh
        - your-project-name
        - another-project-name
    Copy to Clipboard Toggle word wrap

2.10.3.2.

  1. $ oc edit smmr -n <controlplane-namespace>
    Copy to Clipboard Toggle word wrap
  2. apiVersion: maistra.io/v1
    kind: ServiceMeshMemberRoll
    metadata:
      name: default
      namespace: istio-system #control plane project
    spec:
      members:
        # a list of projects joined into the service mesh
        - your-project-name
        - another-project-name
    Copy to Clipboard Toggle word wrap

2.10.4.

2.10.4.1.

2.10.4.2.

  1. apiVersion: maistra.io/v1
    kind: ServiceMeshMember
    metadata:
      name: default
      namespace: my-application
    spec:
      controlPlaneRef:
        namespace: istio-system
        name: basic
    Copy to Clipboard Toggle word wrap
  2. $ oc apply -f <file-name>
    Copy to Clipboard Toggle word wrap

  • $ oc get smm default -n my-application
    Copy to Clipboard Toggle word wrap

    NAME      CONTROL PLANE        READY   AGE
    default   istio-system/basic   True    2m11s
    Copy to Clipboard Toggle word wrap

  • $ oc describe smmr default -n istio-system
    Copy to Clipboard Toggle word wrap

    Name:         default
    Namespace:    istio-system
    Labels:       <none>
    # ...
    Status:
    # ...
      Configured Members:
        default
        my-application
    # ...
      Members:
        default
        my-application
    Copy to Clipboard Toggle word wrap

2.10.5.

참고

2.10.5.1.

2.10.5.2.

  1. $ oc edit smmr default -n istio-system
    Copy to Clipboard Toggle word wrap

  2. 참고

    apiVersion: maistra.io/v1
    kind: ServiceMeshMemberRoll
    metadata:
      name: default
      namespace: istio-system
    spec:
      memberSelectors: 
    1
    
      - matchLabels: 
    2
    
          mykey: myvalue 
    3
    
      - matchLabels: 
    4
    
          myotherkey: myothervalue 
    5
    Copy to Clipboard Toggle word wrap
    1
    2 3
    4 5

2.10.6.

2.10.6.1.

참고

참고

    • $ oc new-project info
      Copy to Clipboard Toggle word wrap
    1. apiVersion: maistra.io/v1
      kind: ServiceMeshMemberRoll
      metadata:
        name: default
      spec:
        members:
        - info
      Copy to Clipboard Toggle word wrap

    2. $ oc create -n istio-system -f servicemeshmemberroll-default.yaml
      Copy to Clipboard Toggle word wrap
  1. $ oc get smmr -n istio-system -o wide
    Copy to Clipboard Toggle word wrap

    NAME      READY   STATUS       AGE   MEMBERS
    default   1/1     Configured   70s   ["info"]
    Copy to Clipboard Toggle word wrap
  2. $ oc apply -n info -f https://raw.githubusercontent.com/Maistra/istio/maistra-2.6/samples/bookinfo/platform/kube/bookinfo.yaml
    Copy to Clipboard Toggle word wrap

    service/details created
    serviceaccount/info-details created
    deployment.apps/details-v1 created
    service/ratings created
    serviceaccount/info-ratings created
    deployment.apps/ratings-v1 created
    service/reviews created
    serviceaccount/info-reviews created
    deployment.apps/reviews-v1 created
    deployment.apps/reviews-v2 created
    deployment.apps/reviews-v3 created
    service/productpage created
    serviceaccount/info-productpage created
    deployment.apps/productpage-v1 created
    Copy to Clipboard Toggle word wrap
  3. $ oc apply -n info -f https://raw.githubusercontent.com/Maistra/istio/maistra-2.6/samples/bookinfo/networking/bookinfo-gateway.yaml
    Copy to Clipboard Toggle word wrap

    gateway.networking.istio.io/info-gateway created
    virtualservice.networking.istio.io/info created
    Copy to Clipboard Toggle word wrap
  4. $ export GATEWAY_URL=$(oc -n istio-system get route istio-ingressgateway -o jsonpath='{.spec.host}')
    Copy to Clipboard Toggle word wrap
2.10.6.2.

    • $ oc apply -n info -f https://raw.githubusercontent.com/Maistra/istio/maistra-2.6/samples/bookinfo/networking/destination-rule-all.yaml
      Copy to Clipboard Toggle word wrap
    • $ oc apply -n info -f https://raw.githubusercontent.com/Maistra/istio/maistra-2.6/samples/bookinfo/networking/destination-rule-all-mtls.yaml
      Copy to Clipboard Toggle word wrap

      destinationrule.networking.istio.io/productpage created
      destinationrule.networking.istio.io/reviews created
      destinationrule.networking.istio.io/ratings created
      destinationrule.networking.istio.io/details created
      Copy to Clipboard Toggle word wrap
2.10.6.3.

  1. $ oc get pods -n info
    Copy to Clipboard Toggle word wrap

    NAME                              READY   STATUS    RESTARTS   AGE
    details-v1-55b869668-jh7hb        2/2     Running   0          12m
    productpage-v1-6fc77ff794-nsl8r   2/2     Running   0          12m
    ratings-v1-7d7d8d8b56-55scn       2/2     Running   0          12m
    reviews-v1-868597db96-bdxgq       2/2     Running   0          12m
    reviews-v2-5b64f47978-cvssp       2/2     Running   0          12m
    reviews-v3-6dfd49b55b-vcwpf       2/2     Running   0          12m
    Copy to Clipboard Toggle word wrap
  2. echo "http://$GATEWAY_URL/productpage"
    Copy to Clipboard Toggle word wrap
2.10.6.4.

2.10.6.4.1.

    • $ oc delete project info
      Copy to Clipboard Toggle word wrap
2.10.6.4.2.

    • $ oc -n istio-system patch --type='json' smmr default -p '[{"op": "remove", "path": "/spec/members", "value":["'"info"'"]}]'
      Copy to Clipboard Toggle word wrap

2.10.7.

2.11.

참고

2.11.1.

2.11.2.

  1. $ oc get deployment -n <namespace>
    Copy to Clipboard Toggle word wrap

    oc get deployment -n info ratings-v1 -o yaml
    Copy to Clipboard Toggle word wrap
  2. apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: ratings-v1
      namespace: info
      labels:
        app: ratings
        version: v1
    spec:
      template:
        metadata:
          labels:
            sidecar.istio.io/inject: 'true'
    Copy to Clipboard Toggle word wrap

    참고

  3. $ oc apply -n <namespace> -f deployment.yaml
    Copy to Clipboard Toggle word wrap

    $ oc apply -n info -f deployment-ratings-v1.yaml
    Copy to Clipboard Toggle word wrap
  4. $ oc get deployment -n <namespace> <deploymentName> -o yaml
    Copy to Clipboard Toggle word wrap

    $ oc get deployment -n info ratings-v1 -o yaml
    Copy to Clipboard Toggle word wrap

2.11.3.

그림 2.3.

그림 2.4.

2.11.4.

apiVersion: apps/v1
kind: Deployment
metadata:
  name: resource
spec:
  replicas: 7
  selector:
    matchLabels:
      app: resource
  template:
    metadata:
      annotations:
        sidecar.maistra.io/proxyEnv: "{ \"maistra_test_env\": \"env_value\", \"maistra_test_env_2\": \"env_value_2\" }"
Copy to Clipboard Toggle word wrap

주의

2.11.5.

$ oc patch deployment/<deployment> -p '{"spec":{"template":{"metadata":{"annotations":{"kubectl.kubernetes.io/restartedAt": "'`date -Iseconds`'"}}}}}'
Copy to Clipboard Toggle word wrap

2.11.6.

2.12.

2.12.1.

$ oc policy add-role-to-user -n istio-system --role-namespace istio-system mesh-user <user_name>
Copy to Clipboard Toggle word wrap

apiVersion: maistra.io/v1
kind: ServiceMeshMember
metadata:
  name: default
spec:
  controlPlaneRef:
    namespace: istio-system
    name: basic
Copy to Clipboard Toggle word wrap

$ oc policy add-role-to-user
Copy to Clipboard Toggle word wrap

apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
  namespace: istio-system
  name: mesh-users
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: Role
  name: mesh-user
subjects:
- apiGroup: rbac.authorization.k8s.io
  kind: User
  name: alice
Copy to Clipboard Toggle word wrap

2.12.2.

2.12.2.1.

  1. $ oc create configmap --from-file=<profiles-directory> smcp-templates -n openshift-operators
    Copy to Clipboard Toggle word wrap
  2.   apiVersion: maistra.io/v2
      kind: ServiceMeshControlPlane
      metadata:
        name: basic
      spec:
        profiles:
        - default
    Copy to Clipboard Toggle word wrap
2.12.2.2.

2.13.

2.13.1.

2.13.1.1.

apiVersion: maistra.io/v2
kind: ServiceMeshControlPlane
spec:
  version: v2.6
  security:
    dataPlane:
      mtls: true
Copy to Clipboard Toggle word wrap

2.13.1.1.1.

  1. apiVersion: security.istio.io/v1beta1
    kind: PeerAuthentication
    metadata:
      name: default
      namespace: <namespace>
    spec:
      mtls:
        mode: STRICT
    Copy to Clipboard Toggle word wrap

  2. $ oc create -n <namespace> -f <policy.yaml>
    Copy to Clipboard Toggle word wrap
참고

2.13.1.1.2.

  1. apiVersion: networking.istio.io/v1alpha3
    kind: DestinationRule
    metadata:
      name: default
      namespace: <namespace>
    spec:
      host: "*.<namespace>.svc.cluster.local"
      trafficPolicy:
       tls:
        mode: ISTIO_MUTUAL
    Copy to Clipboard Toggle word wrap

  2. $ oc create -n <namespace> -f <destination-rule.yaml>
    Copy to Clipboard Toggle word wrap
2.13.1.1.3.

Expand
표 2.5.
  

  1. kind: ServiceMeshControlPlane
    spec:
      security:
        controlPlane:
          tls:
            minProtocolVersion: TLSv1_2
    Copy to Clipboard Toggle word wrap

2.13.1.2.

그림 2.5.

그림 2.6.

그림 2.7.

2.13.2.

  1. apiVersion: security.istio.io/v1beta1
    kind: AuthorizationPolicy
    metadata:
      name: ingress-policy
      namespace: istio-system
    spec:
      selector:
        matchLabels:
          app: istio-ingressgateway
      action: DENY
      rules:
      - from:
        - source:
            ipBlocks: ["1.2.3.4"]
    Copy to Clipboard Toggle word wrap
  2. $ oc create -n istio-system -f <filename>
    Copy to Clipboard Toggle word wrap

2.13.2.1.

2.13.2.1.1.

apiVersion: security.istio.io/v1beta1
kind: AuthorizationPolicy
metadata:
 name: httpbin-deny
 namespace: info
spec:
 selector:
   matchLabels:
     app: httpbin
     version: v1
 action: DENY
 rules:
 - from:
   - source:
       notNamespaces: ["info"]
Copy to Clipboard Toggle word wrap
2.13.2.1.2.

apiVersion: security.istio.io/v1beta1
kind: AuthorizationPolicy
metadata:
  name: allow-all
  namespace: info
spec:
  action: ALLOW
  rules:
  - {}
Copy to Clipboard Toggle word wrap

apiVersion: security.istio.io/v1beta1
kind: AuthorizationPolicy
metadata:
  name: deny-all
  namespace: info
spec:
  {}
Copy to Clipboard Toggle word wrap
2.13.2.2.

apiVersion: security.istio.io/v1beta1
kind: AuthorizationPolicy
metadata:
  name: ingress-policy
  namespace: istio-system
spec:
  selector:
    matchLabels:
      app: istio-ingressgateway
  action: ALLOW
  rules:
  - from:
    - source:
       ipBlocks: ["1.2.3.4", "5.6.7.0/24"]
Copy to Clipboard Toggle word wrap
2.13.2.3.

apiVersion: "security.istio.io/v1beta1"
kind: "RequestAuthentication"
metadata:
  name: "jwt-example"
  namespace: info
spec:
  selector:
    matchLabels:
      app: httpbin
  jwtRules:
  - issuer: "http://localhost:8080/auth/realms/master"
    jwksUri: "http://keycloak.default.svc:8080/auth/realms/master/protocol/openid-connect/certs"
Copy to Clipboard Toggle word wrap

apiVersion: "security.istio.io/v1beta1"
kind: "AuthorizationPolicy"
metadata:
  name: "frontend-ingress"
  namespace: info
spec:
  selector:
    matchLabels:
      app: httpbin
  action: DENY
  rules:
  - from:
    - source:
        notRequestPrincipals: ["*"]
Copy to Clipboard Toggle word wrap

2.13.3.

참고

2.13.4.

  1. $ oc edit smcp <smcp-name>
    Copy to Clipboard Toggle word wrap
  2. spec:
      security:
        dataPlane:
            mtls: true # enable mtls for data plane
        # JWKSResolver extra CA
        # PEM-encoded certificate content to trust an additional CA
        jwksResolverCA: |
            -----BEGIN CERTIFICATE-----
            [...]
            [...]
            -----END CERTIFICATE-----
    ...
    Copy to Clipboard Toggle word wrap

kind: ConfigMap
apiVersion: v1
data:
  extra.pem: |
      -----BEGIN CERTIFICATE-----
      [...]
      [...]
      -----END CERTIFICATE-----
Copy to Clipboard Toggle word wrap

2.13.5.

2.13.5.1.

  1. $ oc create secret generic cacerts -n istio-system --from-file=<path>/ca-cert.pem \
        --from-file=<path>/ca-key.pem --from-file=<path>/root-cert.pem \
        --from-file=<path>/cert-chain.pem
    Copy to Clipboard Toggle word wrap
  2. apiVersion: maistra.io/v2
    kind: ServiceMeshControlPlane
    spec:
      security:
        dataPlane:
          mtls: true
        certificateAuthority:
          type: Istiod
          istiod:
            type: PrivateKey
            privateKey:
              rootCADir: /etc/cacerts
    Copy to Clipboard Toggle word wrap
  3. $ oc -n istio-system delete pods -l 'app in (istiod,istio-ingressgateway, istio-egressgateway)'
    Copy to Clipboard Toggle word wrap

  4. $ oc -n info delete pods --all
    Copy to Clipboard Toggle word wrap

    pod "details-v1-6cd699df8c-j54nh" deleted
    pod "productpage-v1-5ddcb4b84f-mtmf2" deleted
    pod "ratings-v1-bdbcc68bc-kmng4" deleted
    pod "reviews-v1-754ddd7b6f-lqhsv" deleted
    pod "reviews-v2-675679877f-q67r2" deleted
    pod "reviews-v3-79d7549c7-c2gjs" deleted
    Copy to Clipboard Toggle word wrap
  5. $ oc get pods -n info
    Copy to Clipboard Toggle word wrap
2.13.5.2.

  1. $ sleep 60
    $ oc -n info exec "$(oc -n bookinfo get pod -l app=productpage -o jsonpath={.items..metadata.name})" -c istio-proxy -- openssl s_client -showcerts -connect details:9080 > bookinfo-proxy-cert.txt
    $ sed -n '/-----BEGIN CERTIFICATE-----/{:start /-----END CERTIFICATE-----/!{N;b start};/.*/p}' info-proxy-cert.txt > certs.pem
    $ awk 'BEGIN {counter=0;} /BEGIN CERT/{counter++} { print > "proxy-cert-" counter ".pem"}' < certs.pem
    Copy to Clipboard Toggle word wrap

  2. $ openssl x509 -in <path>/root-cert.pem -text -noout > /tmp/root-cert.crt.txt
    Copy to Clipboard Toggle word wrap

    $ openssl x509 -in ./proxy-cert-3.pem -text -noout > /tmp/pod-root-cert.crt.txt
    Copy to Clipboard Toggle word wrap

    $ diff -s /tmp/root-cert.crt.txt /tmp/pod-root-cert.crt.txt
    Copy to Clipboard Toggle word wrap

  3. $ openssl x509 -in <path>/ca-cert.pem -text -noout > /tmp/ca-cert.crt.txt
    Copy to Clipboard Toggle word wrap

    $ openssl x509 -in ./proxy-cert-2.pem -text -noout > /tmp/pod-cert-chain-ca.crt.txt
    Copy to Clipboard Toggle word wrap

    $ diff -s /tmp/ca-cert.crt.txt /tmp/pod-cert-chain-ca.crt.txt
    Copy to Clipboard Toggle word wrap

  4. $ openssl verify -CAfile <(cat <path>/ca-cert.pem <path>/root-cert.pem) ./proxy-cert-1.pem
    Copy to Clipboard Toggle word wrap

2.13.5.3.

  1. $ oc delete secret cacerts -n istio-system
    Copy to Clipboard Toggle word wrap
  2. apiVersion: maistra.io/v2
    kind: ServiceMeshControlPlane
    spec:
      security:
        dataPlane:
          mtls: true
    Copy to Clipboard Toggle word wrap

2.13.6.

참고

참고

2.13.6.1.

    1. apiVersion: cert-manager.io/v1
      kind: Issuer
      metadata:
        name: selfsigned-root-issuer
        namespace: cert-manager
      spec:
        selfSigned: {}
      ---
      apiVersion: cert-manager.io/v1
      kind: Certificate
      metadata:
        name: root-ca
        namespace: cert-manager
      spec:
        isCA: true
        duration: 21600h # 900d
        secretName: root-ca
        commonName: root-ca.my-company.net
        subject:
          organizations:
          - my-company.net
        issuerRef:
          name: selfsigned-root-issuer
          kind: Issuer
          group: cert-manager.io
      ---
      apiVersion: cert-manager.io/v1
      kind: ClusterIssuer
      metadata:
        name: root-ca
      spec:
        ca:
          secretName: root-ca
      Copy to Clipboard Toggle word wrap

      참고

    2. $ oc apply -f cluster-issuer.yaml
      Copy to Clipboard Toggle word wrap
    3. apiVersion: cert-manager.io/v1
      kind: Certificate
      metadata:
        name: istio-ca
        namespace: istio-system
      spec:
        isCA: true
        duration: 21600h
        secretName: istio-ca
        commonName: istio-ca.my-company.net
        subject:
          organizations:
          - my-company.net
        issuerRef:
          name: root-ca
          kind: ClusterIssuer
          group: cert-manager.io
      ---
      apiVersion: cert-manager.io/v1
      kind: Issuer
      metadata:
        name: istio-ca
        namespace: istio-system
      spec:
        ca:
          secretName: istio-ca
      Copy to Clipboard Toggle word wrap

    4. $ oc apply -n istio-system -f istio-ca.yaml
      Copy to Clipboard Toggle word wrap
  1. $ helm install istio-csr jetstack/cert-manager-istio-csr \
        -n istio-system \
        -f deploy/examples/cert-manager/istio-csr/istio-csr.yaml
    Copy to Clipboard Toggle word wrap

    replicaCount: 2
    
    image:
      repository: quay.io/jetstack/cert-manager-istio-csr
      tag: v0.6.0
      pullSecretName: ""
    
    app:
      certmanager:
        namespace: istio-system
        issuer:
          group: cert-manager.io
          kind: Issuer
          name: istio-ca
    
      controller:
        configmapNamespaceSelector: "maistra.io/member-of=istio-system"
        leaderElectionNamespace: istio-system
    
      istio:
        namespace: istio-system
        revisions: ["basic"]
    
      server:
        maxCertificateDuration: 5m
    
      tls:
        certificateDNSNames:
        # This DNS name must be set in the SMCP spec.security.certificateAuthority.cert-manager.address
        - cert-manager-istio-csr.istio-system.svc
    Copy to Clipboard Toggle word wrap

  2. $ oc apply -f mesh.yaml -n istio-system
    Copy to Clipboard Toggle word wrap

    apiVersion: maistra.io/v2
    kind: ServiceMeshControlPlane
    metadata:
      name: basic
    spec:
      addons:
        grafana:
          enabled: false
        kiali:
          enabled: false
        prometheus:
          enabled: false
      proxy:
        accessLogging:
          file:
            name: /dev/stdout
      security:
        certificateAuthority:
          cert-manager:
            address: cert-manager-istio-csr.istio-system.svc:443
          type: cert-manager
        dataPlane:
          mtls: true
        identity:
          type: ThirdParty
      tracing:
        type: None
    ---
    apiVersion: maistra.io/v1
    kind: ServiceMeshMemberRoll
    metadata:
      name: default
    spec:
      members:
      - httpbin
      - sleep
    Copy to Clipboard Toggle word wrap

참고

  1. $ oc new-project <namespace>
    Copy to Clipboard Toggle word wrap
    $ oc apply -f https://raw.githubusercontent.com/maistra/istio/maistra-2.4/samples/httpbin/httpbin.yaml
    Copy to Clipboard Toggle word wrap
    $ oc apply -f https://raw.githubusercontent.com/maistra/istio/maistra-2.4/samples/sleep/sleep.yaml
    Copy to Clipboard Toggle word wrap
  2. $ oc exec "$(oc get pod -l app=sleep -n <namespace> \
       -o jsonpath={.items..metadata.name})" -c sleep -n <namespace> -- \
       curl http://httpbin.<namespace>:8000/ip -s -o /dev/null \
       -w "%{http_code}\n"
    Copy to Clipboard Toggle word wrap

    200
    Copy to Clipboard Toggle word wrap

  3. $ oc apply -n <namespace> -f https://raw.githubusercontent.com/maistra/istio/maistra-2.4/samples/httpbin/httpbin-gateway.yaml
    Copy to Clipboard Toggle word wrap
  4. INGRESS_HOST=$(oc -n istio-system get routes istio-ingressgateway -o jsonpath='{.spec.host}')
    Copy to Clipboard Toggle word wrap
  5. $ curl -s -I http://$INGRESS_HOST/headers -o /dev/null -w "%{http_code}" -s
    Copy to Clipboard Toggle word wrap

2.14.

2.14.1.

apiVersion: networking.istio.io/v1alpha3
kind: Gateway
metadata:
  name: ext-host-gwy
spec:
  selector:
    istio: ingressgateway # use istio default controller
  servers:
  - port:
      number: 443
      name: https
      protocol: HTTPS
    hosts:
    - ext-host.example.com
    tls:
      mode: SIMPLE
      serverCertificate: /tmp/tls.crt
      privateKey: /tmp/tls.key
Copy to Clipboard Toggle word wrap

apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
  name: virtual-svc
spec:
  hosts:
  - ext-host.example.com
  gateways:
    - ext-host-gwy
Copy to Clipboard Toggle word wrap

2.14.1.1.

참고

2.14.1.2.

  1. apiVersion: v1
    kind: Service
    metadata:
      name: istio-ingressgateway
      namespace: istio-ingress
    spec:
      type: ClusterIP
      selector:
        istio: ingressgateway
      ports:
      - name: http2
        port: 80
        targetPort: 8080
      - name: https
        port: 443
        targetPort: 8443
    ---
    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: istio-ingressgateway
      namespace: istio-ingress
    spec:
      selector:
        matchLabels:
          istio: ingressgateway
      template:
        metadata:
          annotations:
            inject.istio.io/templates: gateway
          labels:
            istio: ingressgateway
            sidecar.istio.io/inject: "true" 
    1
    
        spec:
          containers:
          - name: istio-proxy
            image: auto 
    2
    Copy to Clipboard Toggle word wrap
    1
    2
  2. apiVersion: rbac.authorization.k8s.io/v1
    kind: Role
    metadata:
      name: istio-ingressgateway-sds
      namespace: istio-ingress
    rules:
      - apiGroups: [""]
        resources: ["secrets"]
        verbs: ["get", "watch", "list"]
    ---
    apiVersion: rbac.authorization.k8s.io/v1
    kind: RoleBinding
    metadata:
      name: istio-ingressgateway-sds
      namespace: istio-ingress
    roleRef:
      apiGroup: rbac.authorization.k8s.io
      kind: Role
      name: istio-ingressgateway-sds
    subjects:
    - kind: ServiceAccount
      name: default
    Copy to Clipboard Toggle word wrap
  3. apiVersion: networking.k8s.io/v1
    kind: NetworkPolicy
    metadata:
      name: gatewayingress
      namespace: istio-ingress
    spec:
      podSelector:
        matchLabels:
          istio: ingressgateway
      ingress:
        - {}
      policyTypes:
      - Ingress
    Copy to Clipboard Toggle word wrap
  4. apiVersion: autoscaling/v2
    kind: HorizontalPodAutoscaler
    metadata:
      labels:
        istio: ingressgateway
        release: istio
      name: ingressgatewayhpa
      namespace: istio-ingress
    spec:
      maxReplicas: 5
      metrics:
      - resource:
          name: cpu
          target:
            averageUtilization: 80
            type: Utilization
        type: Resource
      minReplicas: 2
      scaleTargetRef:
        apiVersion: apps/v1
        kind: Deployment
        name: istio-ingressgateway
    Copy to Clipboard Toggle word wrap
  5. apiVersion: policy/v1
    kind: PodDisruptionBudget
    metadata:
      labels:
        istio: ingressgateway
        release: istio
      name: ingressgatewaypdb
      namespace: istio-ingress
    spec:
      minAvailable: 1
      selector:
        matchLabels:
          istio: ingressgateway
    Copy to Clipboard Toggle word wrap
2.14.1.3.

2.14.1.3.1.

$ oc get svc istio-ingressgateway -n istio-system
Copy to Clipboard Toggle word wrap

2.14.1.3.1.1.

  1. $ export INGRESS_HOST=$(oc -n istio-system get service istio-ingressgateway -o jsonpath='{.status.loadBalancer.ingress[0].ip}')
    Copy to Clipboard Toggle word wrap
  2. $ export INGRESS_PORT=$(oc -n istio-system get service istio-ingressgateway -o jsonpath='{.spec.ports[?(@.name=="http2")].port}')
    Copy to Clipboard Toggle word wrap
  3. $ export SECURE_INGRESS_PORT=$(oc -n istio-system get service istio-ingressgateway -o jsonpath='{.spec.ports[?(@.name=="https")].port}')
    Copy to Clipboard Toggle word wrap
  4. $ export TCP_INGRESS_PORT=$(kubectl -n istio-system get service istio-ingressgateway -o jsonpath='{.spec.ports[?(@.name=="tcp")].port}')
    Copy to Clipboard Toggle word wrap
참고

$ export INGRESS_HOST=$(oc -n istio-system get service istio-ingressgateway -o jsonpath='{.status.loadBalancer.ingress[0].hostname}')
Copy to Clipboard Toggle word wrap
2.14.1.3.1.2.

  1. $ export INGRESS_PORT=$(oc -n istio-system get service istio-ingressgateway -o jsonpath='{.spec.ports[?(@.name=="http2")].nodePort}')
    Copy to Clipboard Toggle word wrap
  2. $ export SECURE_INGRESS_PORT=$(oc -n istio-system get service istio-ingressgateway -o jsonpath='{.spec.ports[?(@.name=="https")].nodePort}')
    Copy to Clipboard Toggle word wrap
  3. $ export TCP_INGRESS_PORT=$(kubectl -n istio-system get service istio-ingressgateway -o jsonpath='{.spec.ports[?(@.name=="tcp")].nodePort}')
    Copy to Clipboard Toggle word wrap
2.14.1.4.

    1. apiVersion: networking.istio.io/v1alpha3
      kind: Gateway
      metadata:
        name: info-gateway
      spec:
        selector:
          istio: ingressgateway
        servers:
        - port:
            number: 80
            name: http
            protocol: HTTP
          hosts:
          - "*"
      Copy to Clipboard Toggle word wrap

    2. $ oc apply -f gateway.yaml
      Copy to Clipboard Toggle word wrap
    1. apiVersion: networking.istio.io/v1alpha3
      kind: VirtualService
      metadata:
        name: info
      spec:
        hosts:
        - "*"
        gateways:
        - info-gateway
        http:
        - match:
          - uri:
              exact: /productpage
          - uri:
              prefix: /static
          - uri:
              exact: /login
          - uri:
              exact: /logout
          - uri:
              prefix: /api/v1/products
          route:
          - destination:
              host: productpage
              port:
                number: 9080
      Copy to Clipboard Toggle word wrap

    2. $ oc apply -f vs.yaml
      Copy to Clipboard Toggle word wrap
    1. export GATEWAY_URL=$(oc -n istio-system get route istio-ingressgateway -o jsonpath='{.spec.host}')
      Copy to Clipboard Toggle word wrap
    2. export TARGET_PORT=$(oc -n istio-system get route istio-ingressgateway -o jsonpath='{.spec.port.targetPort}')
      Copy to Clipboard Toggle word wrap
    3. curl -s -I "$GATEWAY_URL/productpage"
      Copy to Clipboard Toggle word wrap

2.14.2.

중요

참고

2.14.2.1.

2.14.2.2.

apiVersion: networking.istio.io/v1alpha3
kind: Gateway
metadata:
  name: gateway1
spec:
  selector:
    istio: ingressgateway
  servers:
  - port:
      number: 80
      name: http
      protocol: HTTP
    hosts:
    - www.info.com
    - info.example.com
Copy to Clipboard Toggle word wrap

$ oc -n istio-system get routes
Copy to Clipboard Toggle word wrap

NAME           HOST/PORT             PATH  SERVICES               PORT  TERMINATION   WILDCARD
gateway1-lvlfn info.example.com        istio-ingressgateway   <all>               None
gateway1-scqhv www.info.com            istio-ingressgateway   <all>               None
Copy to Clipboard Toggle word wrap

2.14.2.3.

2.14.2.4.

2.14.2.4.1.

2.14.2.4.2.

apiVersion: maistra.io/v1alpha1
kind: ServiceMeshControlPlane
metadata:
  namespace: istio-system
spec:
  gateways:
    openshiftRoute:
      enabled: false
Copy to Clipboard Toggle word wrap

2.14.3.

참고

apiVersion: networking.istio.io/v1alpha3
kind: ServiceEntry
metadata:
  name: svc-entry
spec:
  hosts:
  - ext-svc.example.com
  ports:
  - number: 443
    name: https
    protocol: HTTPS
  location: MESH_EXTERNAL
  resolution: DNS
Copy to Clipboard Toggle word wrap

apiVersion: networking.istio.io/v1alpha3
kind: DestinationRule
metadata:
  name: ext-res-dr
spec:
  host: ext-svc.example.com
  trafficPolicy:
    tls:
      mode: MUTUAL
      clientCertificate: /etc/certs/myclientcert.pem
      privateKey: /etc/certs/client_private_key.pem
      caCertificates: /etc/certs/rootcacerts.pem
Copy to Clipboard Toggle word wrap

2.14.4.

2.14.4.1.

  1. apiVersion: networking.istio.io/v1alpha3
    kind: VirtualService
    metadata:
      name: reviews
    spec:
      hosts:
      - reviews
      http:
      - match:
        - headers:
            end-user:
              exact: jason
        route:
        - destination:
            host: reviews
            subset: v2
      - route:
        - destination:
            host: reviews
            subset: v3
    Copy to Clipboard Toggle word wrap

  2. $ oc apply -f <VirtualService.yaml>
    Copy to Clipboard Toggle word wrap
2.14.4.2.
Expand
  
spec:
  hosts:
Copy to Clipboard Toggle word wrap

spec:
  http:
  - match:
Copy to Clipboard Toggle word wrap

spec:
  http:
  - match:
    - destination:
Copy to Clipboard Toggle word wrap

2.14.5.

apiVersion: networking.istio.io/v1alpha3
kind: DestinationRule
metadata:
  name: my-destination-rule
spec:
  host: my-svc
  trafficPolicy:
    loadBalancer:
      simple: RANDOM
  subsets:
  - name: v1
    labels:
      version: v1
  - name: v2
    labels:
      version: v2
    trafficPolicy:
      loadBalancer:
        simple: ROUND_ROBIN
  - name: v3
    labels:
      version: v3
Copy to Clipboard Toggle word wrap

2.14.6.

2.14.6.1.

참고

  1. apiVersion: maistra.io/v2
    kind: ServiceMeshControlPlane
    spec:
      security:
          manageNetworkPolicy: false
    Copy to Clipboard Toggle word wrap

2.14.7.

참고

  1. apiVersion: networking.istio.io/v1alpha3
    kind: Sidecar
    metadata:
      name: default
      namespace: info
    spec:
      egress:
      - hosts:
        - "./*"
        - "istio-system/*"
    Copy to Clipboard Toggle word wrap

  2. $ oc apply -f sidecar.yaml
    Copy to Clipboard Toggle word wrap
  3. $ oc get sidecar
    Copy to Clipboard Toggle word wrap

2.14.8.

2.14.8.1.

2.14.8.2.

  1. $ oc apply -f https://raw.githubusercontent.com/Maistra/istio/maistra-2.6/samples/info/networking/virtual-service-all-v1.yaml
    Copy to Clipboard Toggle word wrap
  2. $ oc get virtualservices -o yaml
    Copy to Clipboard Toggle word wrap

2.14.8.3.

  1. export GATEWAY_URL=$(oc -n istio-system get route istio-ingressgateway -o jsonpath='{.spec.host}')
    Copy to Clipboard Toggle word wrap
  2. echo "http://$GATEWAY_URL/productpage"
    Copy to Clipboard Toggle word wrap

2.14.8.4.

  1. $ oc apply -f https://raw.githubusercontent.com/Maistra/istio/maistra-2.6/samples/info/networking/virtual-service-reviews-test-v2.yaml
    Copy to Clipboard Toggle word wrap
  2. $ oc get virtualservice reviews -o yaml
    Copy to Clipboard Toggle word wrap

2.15.

2.15.1.

2.15.2.

  1. 참고

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: istio-ingressgateway-canary
      namespace: istio-system 
    1
    
    spec:
      selector:
        matchLabels:
          app: istio-ingressgateway
          istio: ingressgateway
      template:
        metadata:
          annotations:
            inject.istio.io/templates: gateway
          labels: 
    2
    
            app: istio-ingressgateway
            istio: ingressgateway
            sidecar.istio.io/inject: "true"
        spec:
          containers:
            - name: istio-proxy
              image: auto
          serviceAccountName: istio-ingressgateway
    ---
    apiVersion: v1
    kind: ServiceAccount
    metadata:
      name: istio-ingressgateway
      namespace: istio-system
    ---
    apiVersion: rbac.authorization.k8s.io/v1
    kind: Role
    metadata:
      name: secret-reader
      namespace: istio-system
    rules:
      - apiGroups: [""]
        resources: ["secrets"]
        verbs: ["get", "watch", "list"]
    ---
    apiVersion: rbac.authorization.k8s.io/v1
    kind: RoleBinding
    metadata:
      name: istio-ingressgateway-secret-reader
      namespace: istio-system
    roleRef:
      apiGroup: rbac.authorization.k8s.io
      kind: Role
      name: secret-reader
    subjects:
      - kind: ServiceAccount
        name: istio-ingressgateway
    ---
    apiVersion: networking.k8s.io/v1
    kind: NetworkPolicy 
    3
    
    metadata:
      name: gatewayingress
      namespace: istio-system
    spec:
      podSelector:
        matchLabels:
          istio: ingressgateway
      ingress:
        - {}
      policyTypes:
        - Ingress
    Copy to Clipboard Toggle word wrap

    1
    2
    3
    1. $ oc scale -n istio-system deployment/<new_gateway_deployment> --replicas <new_number_of_replicas>
      Copy to Clipboard Toggle word wrap
    2. $ oc scale -n istio-system deployment/<old_gateway_deployment> --replicas <new_number_of_replicas>
      Copy to Clipboard Toggle word wrap
  2. $ oc label service -n istio-system istio-ingressgateway app.kubernetes.io/managed-by-
    Copy to Clipboard Toggle word wrap

  3. $ oc patch service -n istio-system istio-ingressgateway --type='json' -p='[{"op": "remove", "path": "/metadata/ownerReferences"}]'
    Copy to Clipboard Toggle word wrap

  4. $ oc patch smcp -n istio-system <smcp_name> --type='json' -p='[{"op": "replace", "path": "/spec/gateways/ingress/enabled", "value": false}]'
    Copy to Clipboard Toggle word wrap
    참고

2.16.

2.16.1.

  • apiVersion: maistra.io/v2
    kind: ServiceMeshControlPlane
    spec:
      gateways:
        openshiftRoute:
          enabled: false
    Copy to Clipboard Toggle word wrap

    kind: Route
    apiVersion: route.openshift.io/v1
    metadata:
      name: example-gateway
      namespace: istio-system 
    1
    
    spec:
      host: www.example.com
      to:
        kind: Service
        name: istio-ingressgateway 
    2
    
        weight: 100
      port:
        targetPort: http2
      wildcardPolicy: None
    Copy to Clipboard Toggle word wrap
    1
    2

2.17.

2.17.1.

  1. $ oc login --username=<NAMEOFUSER> https://<HOSTNAME>:6443
    Copy to Clipboard Toggle word wrap
  2. $ oc project istio-system
    Copy to Clipboard Toggle word wrap
  3. $ oc get routes
    Copy to Clipboard Toggle word wrap

    NAME                    HOST/PORT                         SERVICES              PORT    TERMINATION
    info-gateway        bookinfo-gateway-yourcompany.com  istio-ingressgateway          http2
    grafana                 grafana-yourcompany.com           grafana               <all>   reencrypt/Redirect
    istio-ingressgateway    istio-ingress-yourcompany.com     istio-ingressgateway  8080
    jaeger                  jaeger-yourcompany.com            jaeger-query          <all>   reencrypt
    kiali                   kiali-yourcompany.com             kiali                 20001   reencrypt/Redirect
    prometheus              prometheus-yourcompany.com        prometheus            <all>   reencrypt/Redirect
    Copy to Clipboard Toggle word wrap

2.17.2.

2.17.3.

2.17.3.1.

  • $ curl "http://$GATEWAY_URL/productpage"
    Copy to Clipboard Toggle word wrap

2.17.3.2.

작은 정보

2.17.3.3.

2.17.4.

2.17.4.1.

  1. apiVersion: opentelemetry.io/v1alpha1
    kind: OpenTelemetryCollector
    metadata:
      name: otel
      namespace: info  
    1
    
    spec:
      mode: deployment
      config: |
        receivers:
          otlp:
            protocols:
              grpc:
                endpoint: 0.0.0.0:4317
        exporters:
          otlp:
            endpoint: "tempo-sample-distributor.tracing-system.svc.cluster.local:4317" 
    2
    
            tls:
              insecure: true
        service:
          pipelines:
            traces:
              receivers: [otlp]
              processors: []
              exporters: [otlp]
    Copy to Clipboard Toggle word wrap

    1
    2
    참고
  2. $ oc logs -n info  -l app.kubernetes.io/name=otel-collector
    Copy to Clipboard Toggle word wrap

  3. kind: ServiceMeshControlPlane
    apiVersion: maistra.io/v2
    metadata:
      name: basic
      namespace: istio-system
    spec:
      addons:
        grafana:
          enabled: false
        kiali:
          enabled: true
        prometheus:
          enabled: true
      meshConfig:
        extensionProviders:
          - name: otel
            opentelemetry:
              port: 4317
              service: otel-collector.info.svc.cluster.local
      policy:
        type: Istiod
      telemetry:
        type: Istiod
      version: v2.6
    Copy to Clipboard Toggle word wrap

    참고

    spec:
      tracing:
        type: None
    Copy to Clipboard Toggle word wrap

  4. apiVersion: telemetry.istio.io/v1alpha1
    kind: Telemetry
    metadata:
      name: mesh-default
      namespace: istio-system
    spec:
      tracing:
      - providers:
        - name: otel
        randomSamplingPercentage: 100
    Copy to Clipboard Toggle word wrap

  5. apiVersion: kiali.io/v1alpha1
    kind: Kiali
    # ...
    spec:
      external_services:
        tracing:
          query_timeout: 30 
    1
    
          enabled: true
          in_cluster_url: 'http://tempo-sample-query-frontend.tracing-system.svc.cluster.local:16685'
          url: '[Tempo query frontend Route url]'
          use_grpc: true 
    2
    Copy to Clipboard Toggle word wrap

    1
    2
    참고

2.17.4.1.1.

apiVersion: networking.istio.io/v1alpha3
kind: DestinationRule
metadata:
  name: otel-disable-tls
spec:
  host: "otel-collector.info.svc.cluster.local"
  trafficPolicy:
    tls:
      mode: DISABLE
Copy to Clipboard Toggle word wrap

2.17.4.1.2.
참고

apiVersion: networking.istio.io/v1alpha3
kind: DestinationRule
metadata:
  name: tempo
  namespace: tracing-system-mtls
spec:
  host: "*.tracing-system-mtls.svc.cluster.local"
  trafficPolicy:
    tls:
      mode: DISABLE
Copy to Clipboard Toggle word wrap

apiVersion: networking.istio.io/v1alpha3
kind: DestinationRule
metadata:
  name: kiali
  namespace: istio-system
spec:
  host: kiali.istio-system.svc.cluster.local
  trafficPolicy:
    tls:
      mode: DISABLE
Copy to Clipboard Toggle word wrap

2.17.4.2.

중요

    1. spec:
        addons:
          jaeger:
            name: distr-tracing-production
      Copy to Clipboard Toggle word wrap

2.17.4.3.

참고

    1. spec:
        tracing:
          sampling: 100
      Copy to Clipboard Toggle word wrap

2.17.5.

중요

  1. $ oc login --username=<NAMEOFUSER> https://<HOSTNAME>:6443
    Copy to Clipboard Toggle word wrap
  2. $ oc get route -n istio-system jaeger -o jsonpath='{.spec.host}'
    Copy to Clipboard Toggle word wrap

2.17.6.

2.17.7.

2.17.8.

  1. apiVersion: rbac.authorization.k8s.io/v1
    kind: ClusterRoleBinding
    metadata:
      name: kiali-monitoring-rbac
    roleRef:
      apiGroup: rbac.authorization.k8s.io
      kind: ClusterRole
      name: cluster-monitoring-view
    subjects:
    - kind: ServiceAccount
      name: kiali-service-account
      namespace: istio-system
    Copy to Clipboard Toggle word wrap
  2. apiVersion: kiali.io/v1alpha1
    kind: Kiali
    metadata:
      name: kiali-user-workload-monitoring
      namespace: istio-system
    spec:
      external_services:
        prometheus:
          auth:
            type: bearer
            use_kiali_token: true
          query_scope:
            mesh_id: "basic-istio-system"
          thanos_proxy:
            enabled: true
          url: https://thanos-querier.openshift-monitoring.svc.cluster.local:9091
    Copy to Clipboard Toggle word wrap
    • apiVersion: kiali.io/v1alpha1
      kind: Kiali
      metadata:
        name: kiali-user-workload-monitoring
        namespace: istio-system
      spec:
        external_services:
          istio:
            config_map_name: istio-<smcp-name>
            istio_sidecar_injector_config_map_name: istio-sidecar-injector-<smcp-name>
            istiod_deployment_name: istiod-<smcp-name>
            url_service_version: 'http://istiod-<smcp-name>.istio-system:15014/version'
          prometheus:
            auth:
              token: secret:thanos-querier-web-token:token
              type: bearer
              use_kiali_token: false
            query_scope:
              mesh_id: "basic-istio-system"
            thanos_proxy:
              enabled: true
            url: https://thanos-querier.openshift-monitoring.svc.cluster.local:9091
        version: v1.65
      Copy to Clipboard Toggle word wrap
  3. apiVersion: maistra.io/v2
    kind: ServiceMeshControlPlane
    metadata:
      name: basic
      namespace: istio-system
    spec:
      addons:
        prometheus:
          enabled: false 
    1
    
        grafana:
          enabled: false 
    2
    
        kiali:
          name: kiali-user-workload-monitoring
      meshConfig:
        extensionProviders:
        - name: prometheus
          prometheus: {}
    Copy to Clipboard Toggle word wrap
    1
    2
  4. apiVersion: networking.k8s.io/v1
    kind: NetworkPolicy
    metadata:
      name: user-workload-access
      namespace: istio-system 
    1
    
    spec:
      ingress:
      - from:
        - namespaceSelector:
            matchLabels:
              network.openshift.io/policy-group: monitoring
      podSelector: {}
      policyTypes:
      - Ingress
    Copy to Clipboard Toggle word wrap
    1
  5. apiVersion: telemetry.istio.io/v1alpha1
    kind: Telemetry
    metadata:
      name: enable-prometheus-metrics
      namespace: istio-system 
    1
    
    spec:
      selector: 
    2
    
        matchLabels:
          app: info
      metrics:
      - providers:
        - name: prometheus
    Copy to Clipboard Toggle word wrap
    1
    2
  6. apiVersion: monitoring.coreos.com/v1
    kind: ServiceMonitor
    metadata:
      name: istiod-monitor
      namespace: istio-system 
    1
    
    spec:
      targetLabels:
      - app
      selector:
        matchLabels:
          istio: pilot
      endpoints:
      - port: http-monitoring
        interval: 30s
        relabelings:
        - action: replace
          replacement: "basic-istio-system" 
    2
    
          targetLabel: mesh_id
    Copy to Clipboard Toggle word wrap
    1
    2
    참고

  7. apiVersion: monitoring.coreos.com/v1
    kind: PodMonitor
    metadata:
      name: istio-proxies-monitor
      namespace: istio-system 
    1
    
    spec:
      selector:
        matchExpressions:
        - key: istio-prometheus-ignore
          operator: DoesNotExist
      podMetricsEndpoints:
      - path: /stats/prometheus
        interval: 30s
        relabelings:
        - action: keep
          sourceLabels: [__meta_kubernetes_pod_container_name]
          regex: "istio-proxy"
        - action: keep
          sourceLabels: [__meta_kubernetes_pod_annotationpresent_prometheus_io_scrape]
        - action: replace
          regex: (\d+);(([A-Fa-f0-9]{1,4}::?){1,7}[A-Fa-f0-9]{1,4})
          replacement: '[$2]:$1'
          sourceLabels: [__meta_kubernetes_pod_annotation_prometheus_io_port,
          __meta_kubernetes_pod_ip]
          targetLabel: __address__
        - action: replace
          regex: (\d+);((([0-9]+?)(\.|$)){4})
          replacement: $2:$1
          sourceLabels: [__meta_kubernetes_pod_annotation_prometheus_io_port,
          __meta_kubernetes_pod_ip]
          targetLabel: __address__
        - action: labeldrop
          regex: "__meta_kubernetes_pod_label_(.+)"
        - sourceLabels: [__meta_kubernetes_namespace]
          action: replace
          targetLabel: namespace
        - sourceLabels: [__meta_kubernetes_pod_name]
          action: replace
          targetLabel: pod_name
        - action: replace
          replacement: "basic-istio-system" 
    2
    
          targetLabel: mesh_id
    Copy to Clipboard Toggle word wrap
    1
    2
    참고

2.18.

2.18.2.

2.18.2.1.

2.18.2.2.

2.18.2.2.1.

2.18.2.2.2.

2.19.

2.19.1.

    1. apiVersion: maistra.io/v2
      kind: ServiceMeshControlPlane
      metadata:
        name: basic
      spec:
        version: v2.6
        tracing:
          sampling: 100
          type: Jaeger
        addons:
          jaeger:
            name: MyJaeger
            install:
              storage:
                type: Elasticsearch
              ingress:
                enabled: true
        runtime:
          components:
            tracing.jaeger.elasticsearch: # only supports resources and image name
              container:
                resources: {}
      Copy to Clipboard Toggle word wrap

  1. $ oc get smcp basic -o yaml
    Copy to Clipboard Toggle word wrap

2.20.

2.20.1.

2.20.2.

2.20.3.

2.20.4.

2.20.5.

2.20.6.

    • 참고

2.20.7.

2.20.7.1.

2.20.7.2.

2.20.7.3.

2.20.7.4.

2.20.7.5.

2.20.8.

2.20.9.

apiVersion: maistra.io/v2
kind: ServiceMeshControlPlane
metadata:
  name: red-mesh
  namespace: red-mesh-system
spec:
  version: v2.6
  runtime:
    defaults:
      container:
        imagePullPolicy: Always
  gateways:
    additionalEgress:
      egress-green-mesh:
        enabled: true
        requestedNetworkView:
        - green-network
        service:
          metadata:
            labels:
              federation.maistra.io/egress-for: egress-green-mesh
          ports:
          - port: 15443
            name: tls
          - port: 8188
            name: http-discovery  #note HTTP here
      egress-blue-mesh:
        enabled: true
        requestedNetworkView:
        - blue-network
        service:
          metadata:
            labels:
              federation.maistra.io/egress-for: egress-blue-mesh
          ports:
          - port: 15443
            name: tls
          - port: 8188
            name: http-discovery  #note HTTP here
    additionalIngress:
      ingress-green-mesh:
        enabled: true
        service:
          type: LoadBalancer
          metadata:
            labels:
              federation.maistra.io/ingress-for: ingress-green-mesh
          ports:
          - port: 15443
            name: tls
          - port: 8188
            name: https-discovery  #note HTTPS here
      ingress-blue-mesh:
        enabled: true
        service:
          type: LoadBalancer
          metadata:
            labels:
              federation.maistra.io/ingress-for: ingress-blue-mesh
          ports:
          - port: 15443
            name: tls
          - port: 8188
            name: https-discovery  #note HTTPS here
  security:
    trust:
      domain: red-mesh.local
Copy to Clipboard Toggle word wrap

Expand
표 2.6.
    
spec:
  cluster:
    name:
Copy to Clipboard Toggle word wrap

spec:
  cluster:
    network:
Copy to Clipboard Toggle word wrap

2.20.9.1.

Expand
표 2.7.
    
spec:
  gateways:
    additionalEgress:
      <egress_name>:
Copy to Clipboard Toggle word wrap

  
spec:
  gateways:
    additionalEgress:
      <egress_name>:
        enabled:
Copy to Clipboard Toggle word wrap

spec:
  gateways:
    additionalEgress:
      <egress_name>:
        requestedNetworkView:
Copy to Clipboard Toggle word wrap

 
spec:
  gateways:
    additionalEgress:
      <egress_name>:
        service:
          metadata:
            labels:
              federation.maistra.io/egress-for:
Copy to Clipboard Toggle word wrap

  
spec:
  gateways:
    additionalEgress:
      <egress_name>:
        service:
          ports:
Copy to Clipboard Toggle word wrap

 
spec:
  gateways:
    additionalIngress:
Copy to Clipboard Toggle word wrap

  
spec:
  gateways:
    additionalIgress:
      <ingress_name>:
        enabled:
Copy to Clipboard Toggle word wrap

spec:
  gateways:
    additionalIngress:
      <ingress_name>:
        service:
          type:
Copy to Clipboard Toggle word wrap

 
spec:
  gateways:
    additionalIngress:
      <ingress_name>:
        service:
          type:
Copy to Clipboard Toggle word wrap

 
spec:
  gateways:
    additionalIngress:
      <ingress_name>:
        service:
          metadata:
            labels:
              federation.maistra.io/ingress-for:
Copy to Clipboard Toggle word wrap

  
spec:
  gateways:
    additionalIngress:
      <ingress_name>:
        service:
          ports:
Copy to Clipboard Toggle word wrap

 
spec:
  gateways:
    additionalIngress:
      <ingress_name>:
        service:
          ports:
            nodePort:
Copy to Clipboard Toggle word wrap

 

apiVersion: maistra.io/v2
kind: ServiceMeshControlPlane
metadata:
  name: green-mesh
  namespace: green-mesh-system
spec:
# ...
  gateways:
     additionalIngress:
      ingress-green-mesh:
        enabled: true
        service:
          type: NodePort
          metadata:
            labels:
              federation.maistra.io/ingress-for: ingress-green-mesh
          ports:
          - port: 15443
            nodePort: 30510
            name: tls
          - port: 8188
            nodePort: 32359
            name: https-discovery
Copy to Clipboard Toggle word wrap

2.20.9.2.

kind: ServiceMeshControlPlane
metadata:
  name: red-mesh
  namespace: red-mesh-system
spec:
  security:
    trust:
      domain: red-mesh.local
Copy to Clipboard Toggle word wrap
Expand
표 2.8.
    
spec:
  security:
    trust:
      domain:
Copy to Clipboard Toggle word wrap

  1. $ oc login --username=<NAMEOFUSER> https://<HOSTNAME>:6443
    Copy to Clipboard Toggle word wrap
  2. $ oc project red-mesh-system
    Copy to Clipboard Toggle word wrap
  3. $ oc edit -n red-mesh-system smcp red-mesh
    Copy to Clipboard Toggle word wrap
  4. $ oc get smcp -n red-mesh-system
    Copy to Clipboard Toggle word wrap

    NAME       READY   STATUS            PROFILES      VERSION   AGE
    red-mesh   10/10   ComponentsReady   ["default"]   2.1.0     4m25s
    Copy to Clipboard Toggle word wrap

2.20.10.

kind: ServiceMeshPeer
apiVersion: federation.maistra.io/v1
metadata:
  name: green-mesh
  namespace: red-mesh-system
spec:
  remote:
    addresses:
    - ingress-red-mesh.green-mesh-system.apps.domain.com
  gateways:
    ingress:
      name: ingress-green-mesh
    egress:
      name: egress-green-mesh
  security:
    trustDomain: green-mesh.local
    clientID: green-mesh.local/ns/green-mesh-system/sa/egress-red-mesh-service-account
    certificateChain:
      kind: ConfigMap
      name: green-mesh-ca-root-cert
Copy to Clipboard Toggle word wrap

Expand
표 2.9.
   
metadata:
  name:
Copy to Clipboard Toggle word wrap

metadata:
  namespace:
Copy to Clipboard Toggle word wrap

spec:
  remote:
    addresses:
Copy to Clipboard Toggle word wrap

 
spec:
  remote:
    discoveryPort:
Copy to Clipboard Toggle word wrap

spec:
  remote:
    servicePort:
Copy to Clipboard Toggle word wrap

spec:
  gateways:
    ingress:
      name:
Copy to Clipboard Toggle word wrap

 
spec:
  gateways:
    egress:
      name:
Copy to Clipboard Toggle word wrap

 
spec:
  security:
    trustDomain:
Copy to Clipboard Toggle word wrap

spec:
  security:
    clientID:
Copy to Clipboard Toggle word wrap

spec:
  security:
    certificateChain:
      kind: ConfigMap
      name:
Copy to Clipboard Toggle word wrap

2.20.10.1.

  1. $ oc login --username=<NAMEOFUSER> <API token> https://<HOSTNAME>:6443
    Copy to Clipboard Toggle word wrap
  2. $ oc project red-mesh-system
    Copy to Clipboard Toggle word wrap
  3. kind: ServiceMeshPeer
    apiVersion: federation.maistra.io/v1
    metadata:
      name: green-mesh
      namespace: red-mesh-system
    spec:
      remote:
        addresses:
        - ingress-red-mesh.green-mesh-system.apps.domain.com
      gateways:
        ingress:
          name: ingress-green-mesh
        egress:
          name: egress-green-mesh
      security:
        trustDomain: green-mesh.local
        clientID: green-mesh.local/ns/green-mesh-system/sa/egress-red-mesh-service-account
        certificateChain:
          kind: ConfigMap
          name: green-mesh-ca-root-cert
    Copy to Clipboard Toggle word wrap

  4. $ oc create -n red-mesh-system -f servicemeshpeer.yaml
    Copy to Clipboard Toggle word wrap
  5. $ oc -n red-mesh-system get servicemeshpeer green-mesh -o yaml
    Copy to Clipboard Toggle word wrap

    status:
      discoveryStatus:
        active:
        - pod: istiod-red-mesh-b65457658-9wq5j
          remotes:
          - connected: true
            lastConnected: "2021-10-05T13:02:25Z"
            lastFullSync: "2021-10-05T13:02:25Z"
            source: 10.128.2.149
          watch:
            connected: true
            lastConnected: "2021-10-05T13:02:55Z"
            lastDisconnectStatus: 503 Service Unavailable
            lastFullSync: "2021-10-05T13:05:43Z"
    Copy to Clipboard Toggle word wrap

2.20.11.

kind: ExportedServiceSet
apiVersion: federation.maistra.io/v1
metadata:
  name: green-mesh
  namespace: red-mesh-system
spec:
  exportRules:
  # export ratings.mesh-x-info as ratings.bookinfo
  - type: NameSelector
    nameSelector:
      namespace: red-mesh-info
      name: red-ratings
      alias:
        namespace: info
        name: ratings
  # export any service in red-mesh-info namespace with label export-service=true
  - type: LabelSelector
    labelSelector:
      namespace: red-mesh-info
      selector:
        matchLabels:
          export-service: "true"
      aliases: # export all matching services as if they were in the info namespace
      - namespace: "*"
        name: "*"
        alias:
          namespace: info
Copy to Clipboard Toggle word wrap

Expand
표 2.10.
   
metadata:
  name:
Copy to Clipboard Toggle word wrap

metadata:
  namespace:
Copy to Clipboard Toggle word wrap

 
spec:
  exportRules:
  - type:
Copy to Clipboard Toggle word wrap

spec:
  exportRules:
  - type: NameSelector
    nameSelector:
      namespace:
      name:
Copy to Clipboard Toggle word wrap

 
spec:
  exportRules:
  - type: NameSelector
    nameSelector:
      alias:
        namespace:
        name:
Copy to Clipboard Toggle word wrap

 
spec:
  exportRules:
  - type: LabelSelector
    labelSelector:
      namespace: <exportingMesh>
      selector:
        matchLabels:
          <labelKey>: <labelValue>
Copy to Clipboard Toggle word wrap

 
spec:
  exportRules:
  - type: LabelSelector
    labelSelector:
      namespace: <exportingMesh>
      selector:
        matchLabels:
          <labelKey>: <labelValue>
      aliases:
      - namespace:
        name:
        alias:
          namespace:
          name:
Copy to Clipboard Toggle word wrap

 

kind: ExportedServiceSet
apiVersion: federation.maistra.io/v1
metadata:
  name: blue-mesh
  namespace: red-mesh-system
spec:
  exportRules:
  - type: NameSelector
    nameSelector:
      namespace: "*"
      name: ratings
Copy to Clipboard Toggle word wrap

kind: ExportedServiceSet
apiVersion: federation.maistra.io/v1
metadata:
  name: green-mesh
  namespace: red-mesh-system
spec:
  exportRules:
  - type: NameSelector
    nameSelector:
      namespace: west-data-center
      name: "*"
Copy to Clipboard Toggle word wrap

2.20.11.1.

참고

참고

  1. $ oc login --username=<NAMEOFUSER> <API token> https://<HOSTNAME>:6443
    Copy to Clipboard Toggle word wrap
  2. $ oc project red-mesh-system
    Copy to Clipboard Toggle word wrap
  3. apiVersion: federation.maistra.io/v1
    kind: ExportedServiceSet
    metadata:
      name: green-mesh
      namespace: red-mesh-system
    spec:
      exportRules:
      - type: NameSelector
        nameSelector:
          namespace: red-mesh-info
          name: ratings
          alias:
            namespace: info
            name: red-ratings
      - type: NameSelector
        nameSelector:
          namespace: red-mesh-info
          name: reviews
    Copy to Clipboard Toggle word wrap

  4. $ oc create -n <ControlPlaneNamespace> -f <ExportedServiceSet.yaml>
    Copy to Clipboard Toggle word wrap

    $ oc create -n red-mesh-system -f export-to-green-mesh.yaml
    Copy to Clipboard Toggle word wrap

  • $ oc get exportedserviceset <PeerMeshExportedTo> -o yaml
    Copy to Clipboard Toggle word wrap

    $ oc -n red-mesh-system get exportedserviceset green-mesh -o yaml
    Copy to Clipboard Toggle word wrap

      status:
        exportedServices:
        - exportedName: red-ratings.info.svc.green-mesh-exports.local
          localService:
            hostname: ratings.red-mesh-info.svc.cluster.local
            name: ratings
            namespace: red-mesh-info
        - exportedName: reviews.red-mesh-info.svc.green-mesh-exports.local
          localService:
            hostname: reviews.red-mesh-info.svc.cluster.local
            name: reviews
            namespace: red-mesh-info
    Copy to Clipboard Toggle word wrap

2.20.12.

kind: ImportedServiceSet
apiVersion: federation.maistra.io/v1
metadata:
  name: red-mesh #name of mesh that exported the service
  namespace: green-mesh-system #mesh namespace that service is being imported into
spec:
  importRules: # first matching rule is used
  # import ratings.info as ratings.bookinfo
  - type: NameSelector
    importAsLocal: false
    nameSelector:
      namespace: info
      name: ratings
      alias:
        # service will be imported as ratings.info.svc.red-mesh-imports.local
        namespace: info
        name: ratings
Copy to Clipboard Toggle word wrap

Expand
표 2.11.
   
metadata:
  name:
Copy to Clipboard Toggle word wrap

 
metadata:
  namespace:
Copy to Clipboard Toggle word wrap

 
spec:
  importRules:
  - type:
Copy to Clipboard Toggle word wrap

spec:
  importRules:
  - type: NameSelector
    nameSelector:
      namespace:
      name:
Copy to Clipboard Toggle word wrap

 
spec:
  importRules:
  - type: NameSelector
    importAsLocal:
Copy to Clipboard Toggle word wrap

spec:
  importRules:
  - type: NameSelector
    nameSelector:
      namespace:
      name:
      alias:
        namespace:
        name:
Copy to Clipboard Toggle word wrap

 

kind: ImportedServiceSet
apiVersion: federation.maistra.io/v1
metadata:
  name: red-mesh
  namespace: blue-mesh-system
spec:
  importRules:
  - type: NameSelector
    importAsLocal: false
    nameSelector:
      namespace: info
      name: ratings
Copy to Clipboard Toggle word wrap

kind: ImportedServiceSet
apiVersion: federation.maistra.io/v1
metadata:
  name: red-mesh
  namespace: green-mesh-system
spec:
  importRules:
  - type: NameSelector
    importAsLocal: false
    nameSelector:
      namespace: west-data-center
      name: "*"
Copy to Clipboard Toggle word wrap

2.20.12.1.

참고

  1. $ oc login --username=<NAMEOFUSER> <API token> https://<HOSTNAME>:6443
    Copy to Clipboard Toggle word wrap
  2. $ oc project green-mesh-system
    Copy to Clipboard Toggle word wrap
  3. kind: ImportedServiceSet
    apiVersion: federation.maistra.io/v1
    metadata:
      name: red-mesh
      namespace: green-mesh-system
    spec:
      importRules:
      - type: NameSelector
        importAsLocal: false
        nameSelector:
          namespace: info
          name: red-ratings
          alias:
            namespace: info
            name: ratings
    Copy to Clipboard Toggle word wrap

  4. $ oc create -n <ControlPlaneNamespace> -f <ImportedServiceSet.yaml>
    Copy to Clipboard Toggle word wrap

    $ oc create -n green-mesh-system -f import-from-red-mesh.yaml
    Copy to Clipboard Toggle word wrap

  • $ oc get importedserviceset <PeerMeshImportedInto> -o yaml
    Copy to Clipboard Toggle word wrap

    $ oc -n green-mesh-system get importedserviceset/red-mesh -o yaml
    Copy to Clipboard Toggle word wrap

    status:
      importedServices:
      - exportedName: red-ratings.info.svc.green-mesh-exports.local
        localService:
          hostname: ratings.info.svc.red-mesh-imports.local
          name: ratings
          namespace: info
      - exportedName: reviews.red-mesh-info.svc.green-mesh-exports.local
        localService:
          hostname: ""
          name: ""
          namespace: ""
    Copy to Clipboard Toggle word wrap

2.20.13.

2.20.13.1.

kind: ImportedServiceSet
apiVersion: federation.maistra.io/v1
metadata:
  name: red-mesh #name of mesh that exported the service
  namespace: green-mesh-system #mesh namespace that service is being imported into
spec:
  importRules: # first matching rule is used
  # import ratings.info as ratings.bookinfo
  - type: NameSelector
    importAsLocal: true
    nameSelector:
      namespace: info
      name: ratings
      alias:
        # service will be imported as ratings.info.svc.red-mesh-imports.local
        namespace: info
        name: ratings
  #Locality within which imported services should be associated.
  locality:
    region: us-west
Copy to Clipboard Toggle word wrap

Expand
표 2.12.
   

  1. $ oc login --username=<NAMEOFUSER> <API token> https://<HOSTNAME>:6443
    Copy to Clipboard Toggle word wrap
  2. $ oc project <smcp-system>
    Copy to Clipboard Toggle word wrap

    $ oc project green-mesh-system
    Copy to Clipboard Toggle word wrap
  3. $ oc edit -n <smcp-system> -f <ImportedServiceSet.yaml>
    Copy to Clipboard Toggle word wrap

    $ oc edit -n green-mesh-system -f import-from-red-mesh.yaml
    Copy to Clipboard Toggle word wrap
2.20.13.2.

  1. $ oc login --username=<NAMEOFUSER> <API token> https://<HOSTNAME>:6443
    Copy to Clipboard Toggle word wrap
  2. $ oc project <smcp-system>
    Copy to Clipboard Toggle word wrap

    $ oc project green-mesh-system
    Copy to Clipboard Toggle word wrap
  3. apiVersion: networking.istio.io/v1beta1
    kind: DestinationRule
    metadata:
      name: default-failover
      namespace: info
    spec:
      host: "ratings.info.svc.cluster.local"
      trafficPolicy:
        loadBalancer:
          localityLbSetting:
            enabled: true
            failover:
              - from: us-east
                to: us-west
        outlierDetection:
          consecutive5xxErrors: 3
          interval: 10s
          baseEjectionTime: 1m
    Copy to Clipboard Toggle word wrap

  4. $ oc create -n <application namespace> -f <DestinationRule.yaml>
    Copy to Clipboard Toggle word wrap

    $ oc create -n info -f green-mesh-us-west-DestinationRule.yaml
    Copy to Clipboard Toggle word wrap

2.20.14.

2.20.14.1.

2.20.14.2.

2.20.15.

2.21.

참고

2.21.1.

참고

Expand
표 2.13.
   

2.21.2.

2.21.3.

apiVersion: extensions.istio.io/v1alpha1
kind: WasmPlugin
metadata:
  name: openid-connect
  namespace: istio-ingress
spec:
  selector:
    matchLabels:
      istio: ingressgateway
  url: file:///opt/filters/openid.wasm
  sha256: 1ef0c9a92b0420cf25f7fe5d481b231464bc88f486ca3b9c83ed5cc21d2f6210
  phase: AUTHN
  pluginConfig:
    openid_server: authn
    openid_realm: ingress
Copy to Clipboard Toggle word wrap

apiVersion: extensions.istio.io/v1alpha1
kind: WasmPlugin
metadata:
  name: openid-connect
  namespace: istio-system
spec:
  selector:
    matchLabels:
      istio: ingressgateway
  url: oci://private-registry:5000/openid-connect/openid:latest
  imagePullPolicy: IfNotPresent
  imagePullSecret: private-registry-pull-secret
  phase: AUTHN
  pluginConfig:
    openid_server: authn
    openid_realm: ingress
Copy to Clipboard Toggle word wrap
Expand
표 2.14.
    

Expand
표 2.15.
    

Expand
표 2.16.
  

Expand
표 2.17.
   

Expand
표 2.18.
  

2.21.3.1.

  1. apiVersion: extensions.istio.io/v1alpha1
    kind: WasmPlugin
    metadata:
      name: openid-connect
      namespace: istio-system
    spec:
      selector:
        matchLabels:
          istio: ingressgateway
      url: oci://private-registry:5000/openid-connect/openid:latest
      imagePullPolicy: IfNotPresent
      imagePullSecret: private-registry-pull-secret
      phase: AUTHN
      pluginConfig:
        openid_server: authn
        openid_realm: ingress
    Copy to Clipboard Toggle word wrap

  2. $ oc apply -f plugin.yaml
    Copy to Clipboard Toggle word wrap

2.21.4.

참고

schemaVersion: 1

name: <your-extension>
description: <description>
version: 1.0.0
phase: PreAuthZ
priority: 100
module: extension.wasm
Copy to Clipboard Toggle word wrap

Expand
표 2.19.
   

2.21.5.

참고

Expand
표 2.20.
  

2.21.5.1.

참고

  1. apiVersion: maistra.io/v1
    kind: ServiceMeshExtension
    metadata:
      name: header-append
      namespace: istio-system
    spec:
      workloadSelector:
        labels:
          app: httpbin
      config:
        first-header: some-value
        another-header: another-value
      image: quay.io/maistra-dev/header-append-filter:2.1
      phase: PostAuthZ
      priority: 100
    Copy to Clipboard Toggle word wrap

  2. $ oc apply -f <extension>.yaml
    Copy to Clipboard Toggle word wrap

2.21.6.

2.21.6.1.

Expand
표 2.21.
  

apiVersion: maistra.io/v1
kind: ServiceMeshExtension
metadata:
  name: header-append
  namespace: istio-system
spec:
  workloadSelector:
    labels:
      app: httpbin
  config:
    first-header: some-value
    another-header: another-value
  image: quay.io/maistra-dev/header-append-filter:2.2
  phase: PostAuthZ
  priority: 100
Copy to Clipboard Toggle word wrap

apiVersion: extensions.istio.io/v1alpha1
kind: WasmPlugin
metadata:
  name: header-append
  namespace: istio-system
spec:
  selector:
    matchLabels:
      app: httpbin
  url: oci://quay.io/maistra-dev/header-append-filter:2.2
  phase: STATS
  pluginConfig:
    first-header: some-value
    another-header: another-value
Copy to Clipboard Toggle word wrap

2.21.6.2.

2.21.6.3.

2.22.

중요

2.22.1.

주의

참고

2.22.2.

    • 참고

2.22.3.

  1. cat <<EOM | oc apply -f -
    apiVersion: kiali.io/v1alpha1
    kind: OSSMConsole
    metadata:
      namespace: openshift-operators
      name: ossmconsole
    EOM
    Copy to Clipboard Toggle word wrap
    참고

2.22.4.

참고

2.22.5.

  1.  oc delete ossmconsoles <custom_resource_name> -n <custom_resource_namespace>
    Copy to Clipboard Toggle word wrap
  2. for r in $(oc get ossmconsoles --ignore-not-found=true --all-namespaces -o custom-columns=NS:.metadata.namespace,N:.metadata.name --no-headers | sed 's/  */:/g'); do oc delete ossmconsoles -n $(echo $r|cut -d: -f1) $(echo $r|cut -d: -f2); done
    Copy to Clipboard Toggle word wrap

2.23.

참고

2.23.1.

2.23.2.

2.23.3.

2.23.4.

2.23.4.1.

참고

    • apiVersion: extensions.istio.io/v1alpha1
      kind: WasmPlugin
      metadata:
        name: <threescale_wasm_plugin_name>
        namespace: <info> 
      1
      
      spec:
        selector: 
      2
      
          labels:
            app: <product_page>
        pluginConfig: <yaml_configuration>
        url: oci://registry.redhat.io/3scale-amp2/3scale-auth-wasm-rhel8:0.0.3
        phase: AUTHZ
        priority: 100
      Copy to Clipboard Toggle word wrap
      1
      2
  • $ oc apply -f threescale-wasm-auth-info.yaml
    Copy to Clipboard Toggle word wrap

2.23.5.

    1. apiVersion: networking.istio.io/v1beta1
      kind: ServiceEntry
      metadata:
        name: service-entry-threescale-saas-backend
      spec:
        hosts:
        - su1.3scale.net
        ports:
        - number: 443
          name: https
          protocol: HTTPS
        location: MESH_EXTERNAL
        resolution: DNS
      Copy to Clipboard Toggle word wrap

    2. apiVersion: networking.istio.io/v1beta1
      kind: DestinationRule
      metadata:
        name: destination-rule-threescale-saas-backend
      spec:
        host: su1.3scale.net
        trafficPolicy:
          tls:
            mode: SIMPLE
            sni: su1.3scale.net
      Copy to Clipboard Toggle word wrap

    3. $ oc apply -f service-entry-threescale-saas-backend.yml
      Copy to Clipboard Toggle word wrap
    4. $ oc apply -f destination-rule-threescale-saas-backend.yml
      Copy to Clipboard Toggle word wrap
    1. apiVersion: networking.istio.io/v1beta1
      kind: ServiceEntry
      metadata:
        name: service-entry-threescale-saas-system
      spec:
        hosts:
        - multitenant.3scale.net
        ports:
        - number: 443
          name: https
          protocol: HTTPS
        location: MESH_EXTERNAL
        resolution: DNS
      Copy to Clipboard Toggle word wrap

    2. apiVersion: networking.istio.io/v1beta1
      kind: DestinationRule
      metadata:
        name: destination-rule-threescale-saas-system
      spec:
        host: multitenant.3scale.net
        trafficPolicy:
          tls:
            mode: SIMPLE
            sni: multitenant.3scale.net
      Copy to Clipboard Toggle word wrap

    3. $ oc apply -f service-entry-threescale-saas-system.yml
      Copy to Clipboard Toggle word wrap
    4. $ oc apply -f <destination-rule-threescale-saas-system.yml>
      Copy to Clipboard Toggle word wrap

2.23.6.

중요

2.23.6.1.

2.23.6.2.

참고

apiVersion: extensions.istio.io/v1alpha1
kind: WasmPlugin
metadata:
  name: <threescale_wasm_plugin_name>
  namespace: <info>
spec:
  pluginConfig:
    api: v1
# ...
Copy to Clipboard Toggle word wrap

2.23.6.3.

apiVersion: extensions.istio.io/v1alpha1
kind: WasmPlugin
metadata:
  name: <threescale_wasm_plugin_name>
spec:
  pluginConfig:
    system:
      name: <saas_porta>
      upstream: <object>
      token: <my_account_token>
      ttl: 300
# ...
Copy to Clipboard Toggle word wrap
Expand
표 2.22.
   

2.23.6.4.

apiVersion: maistra.io/v1
upstream:
  name: outbound|443||multitenant.3scale.net
  url: "https://myaccount-admin.3scale.net/"
  timeout: 5000
# ...
Copy to Clipboard Toggle word wrap
Expand
표 2.23.
   

2.23.6.5.

apiVersion: extensions.istio.io/v1alpha1
kind: WasmPlugin
metadata:
  name: <threescale_wasm_plugin_name>
spec:
  pluginConfig:
# ...
    backend:
      name: backend
      upstream: <object>
# ...
Copy to Clipboard Toggle word wrap
Expand
표 2.24.
   

2.23.6.6.

apiVersion: extensions.istio.io/v1alpha1
kind: WasmPlugin
metadata:
  name: <threescale_wasm_plugin_name>
spec:
  pluginConfig:
# ...
    services:
    - id: "2555417834789"
      token: service_token
      authorities:
        - "*.app"
        - 0.0.0.0
        - "0.0.0.0:8443"
      credentials: <object>
      mapping_rules: <object>
# ...
Copy to Clipboard Toggle word wrap

Expand
표 2.25.
   

2.23.6.7.

apiVersion: extensions.istio.io/v1alpha1
kind: WasmPlugin
metadata:
  name: <threescale_wasm_plugin_name>
spec:
  pluginConfig:
# ...
    services:
    - credentials:
        user_key: <array_of_lookup_queries>
        app_id: <array_of_lookup_queries>
        app_key: <array_of_lookup_queries>
# ...
Copy to Clipboard Toggle word wrap
Expand
표 2.26.
   

2.23.6.8.

apiVersion: extensions.istio.io/v1alpha1
kind: WasmPlugin
metadata:
  name: <threescale_wasm_plugin_name>
spec:
  pluginConfig:
# ...
    services:
    - credentials:
        user_key:
          - <source_type>: <object>
          - <source_type>: <object>
# ...
        app_id:
          - <source_type>: <object>
# ...
        app_key:
          - <source_type>: <object>
# ...
Copy to Clipboard Toggle word wrap
2.23.6.9.

Expand
표 2.27.
   

2.23.6.10.

참고

2.23.6.11.

2.23.6.12.

Expand
표 2.28.
   

apiVersion: extensions.istio.io/v1alpha1
kind: WasmPlugin
metadata:
  name: <threescale_wasm_plugin_name>
spec:
  pluginConfig:
# ...
    mapping_rules:
      - method: GET
        pattern: /
        usages:
          - name: hits
            delta: 1
      - method: GET
        pattern: /products/
        usages:
          - name: products
            delta: 1
      - method: ANY
        pattern: /products/{id}/sold
        usages:
          - name: sales
            delta: 1
          - name: products
            delta: 1
# ...
Copy to Clipboard Toggle word wrap

2.23.7.

2.23.7.1.

apiVersion: extensions.istio.io/v1alpha1
kind: WasmPlugin
metadata:
  name: <threescale_wasm_plugin_name>
spec:
# ...
    services:
# ...
      credentials:
        user_key:
          - query_string:
              keys:
                - <user_key>
          - header:
              keys:
                - <user_key>
# ...
Copy to Clipboard Toggle word wrap
2.23.7.2.

apiVersion: extensions.istio.io/v1alpha1
kind: WasmPlugin
metadata:
  name: <threescale_wasm_plugin_name>
spec:
# ...
    services:
# ...
      credentials:
        app_id:
          - query_string:
              keys:
                - <app_id>
          - header:
              keys:
                - <app_id>
        app_key:
          - query_string:
              keys:
                - <app_key>
          - header:
              keys:
                - <app_key>
# ...
Copy to Clipboard Toggle word wrap
2.23.7.3.

aladdin:opensesame:  Authorization: Basic YWxhZGRpbjpvcGVuc2VzYW1l
Copy to Clipboard Toggle word wrap

apiVersion: extensions.istio.io/v1alpha1
kind: WasmPlugin
metadata:
  name: <threescale_wasm_plugin_name>
spec:
# ...
    services:
# ...
      credentials:
        app_id:
          - header:
              keys:
                - authorization
              ops:
                - split:
                    separator: " "
                    max: 2
                - length:
                    min: 2
                - drop:
                    head: 1
                - base64_urlsafe
                - split:
                    max: 2
        app_key:
          - header:
              keys:
                - app_key
# ...
Copy to Clipboard Toggle word wrap

  1. apiVersion: extensions.istio.io/v1alpha1
    kind: WasmPlugin
    metadata:
      name: <threescale_wasm_plugin_name>
    spec:
    # ...
        services:
    # ...
          credentials:
            app_id:
              - header:
                  keys:
                    - authorization
                  ops:
                    - split:
                        separator: " "
                        max: 2
                    - length:
                        min: 2
                    - reverse
                    - glob:
                      - Basic
                    - drop:
                        tail: 1
                    - base64_urlsafe
                    - split:
                        max: 2
                     - test:
                        if:
                          length:
                            min: 2
                       then:
                          - strlen:
                              max: 63
                          - or:
                              - strlen:
                                  min: 1
                              - drop:
                                  tail: 1
                    - assert:
                      - and:
                        - reverse
                        - or:
                          - strlen:
                              min: 8
                          - glob:
                            - aladdin
                            - admin
    # ...
    Copy to Clipboard Toggle word wrap

2.23.7.4.

apiVersion: security.istio.io/v1beta1
kind: RequestAuthentication
metadata:
  name: jwt-example
  namespace: info
spec:
  selector:
    matchLabels:
      app: productpage
  jwtRules:
  - issuer: >-
      http://keycloak-keycloak.34.242.107.254.nip.io/auth/realms/3scale-keycloak
    jwksUri: >-
      http://keycloak-keycloak.34.242.107.254.nip.io/auth/realms/3scale-keycloak/protocol/openid-connect/certs
Copy to Clipboard Toggle word wrap

apiVersion: extensions.istio.io/v1alpha1
kind: WasmPlugin
metadata:
  name: <threescale_wasm_plugin_name>
spec:
# ...
    services:
# ...
      credentials:
        app_id:
          - filter:
              path:
                - envoy.filters.http.jwt_authn
                - "0"
              keys:
                - azp
                - aud
              ops:
                - take:
                    head: 1
# ...
Copy to Clipboard Toggle word wrap

2.23.7.5.

apiVersion: extensions.istio.io/v1alpha1
kind: WasmPlugin
metadata:
  name: <threescale_wasm_plugin_name>
spec:
# ...
    services:
# ...
      credentials:
        app_id:
          - header:
              keys:
                - x-jwt-payload
              ops:
                - base64_urlsafe
                - json:
                  - keys:
                    - azp
                    - aud
                - take:
                    head: 1
# ,,,
Copy to Clipboard Toggle word wrap

2.23.8.

apiVersion: extensions.istio.io/v1alpha1
kind: WasmPlugin
metadata:
  name: <threescale_wasm_plugin_name>
spec:
  url: oci://registry.redhat.io/3scale-amp2/3scale-auth-wasm-rhel8:0.0.3
  imagePullSecret: <optional_pull_secret_resource>
  phase: AUTHZ
  priority: 100
  selector:
    labels:
      app: <product_page>
  pluginConfig:
    api: v1
    system:
      name: <system_name>
      upstream:
        name: outbound|443||multitenant.3scale.net
        url: https://istiodevel-admin.3scale.net/
        timeout: 5000
      token: <token>
    backend:
      name: <backend_name>
      upstream:
        name: outbound|443||su1.3scale.net
        url: https://su1.3scale.net/
        timeout: 5000
      extensions:
      - no_body
    services:
    - id: '2555417834780'
      authorities:
      - "*"
      credentials:
        user_key:
          - query_string:
              keys:
                - <user_key>
          - header:
              keys:
                - <user_key>
        app_id:
          - query_string:
              keys:
                - <app_id>
          - header:
              keys:
                - <app_id>
        app_key:
          - query_string:
              keys:
                - <app_key>
          - header:
              keys:
                - <app_key>
Copy to Clipboard Toggle word wrap

2.24.

중요

2.24.1.

참고

참고

  1.   apiVersion: "config.istio.io/v1alpha2"
      kind: handler
      metadata:
       name: threescale
      spec:
       adapter: threescale
       params:
         system_url: "https://<organization>-admin.3scale.net/"
         access_token: "<ACCESS_TOKEN>"
       connection:
         address: "threescale-istio-adapter:3333"
    Copy to Clipboard Toggle word wrap

  2.   apiVersion: "config.istio.io/v1alpha2"
      kind: rule
      metadata:
        name: threescale
      spec:
        match: destination.labels["service-mesh.3scale.net"] == "true"
        actions:
          - handler: threescale.handler
            instances:
              - threescale-authorization.instance
    Copy to Clipboard Toggle word wrap

2.24.1.1.

Expand
표 2.29.
    

 

 

 

 

 

 

 
2.24.1.1.1.
참고

  • $ 3scale-config-gen --name=admin-credentials --url="https://<organization>-admin.3scale.net:443" --token="[redacted]"
    Copy to Clipboard Toggle word wrap
  • $ 3scale-config-gen --url="https://<organization>-admin.3scale.net" --name="my-unique-id" --service="123456789" --token="[redacted]"
    Copy to Clipboard Toggle word wrap
2.24.1.2.
참고
  1. $ export NS="istio-system" URL="https://replaceme-admin.3scale.net:443" NAME="name" TOKEN="token"
    oc exec -n ${NS} $(oc get po -n ${NS} -o jsonpath='{.items[?(@.metadata.labels.app=="3scale-istio-adapter")].metadata.name}') \
    -it -- ./3scale-config-gen \
    --url ${URL} --name ${NAME} --token ${TOKEN} -n ${NS}
    Copy to Clipboard Toggle word wrap
  2. 참고

    $ export CREDENTIALS_NAME="replace-me"
    export SERVICE_ID="replace-me"
    export DEPLOYMENT="replace-me"
    patch="$(oc get deployment "${DEPLOYMENT}"
    patch="$(oc get deployment "${DEPLOYMENT}" --template='{"spec":{"template":{"metadata":{"labels":{ {{ range $k,$v := .spec.template.metadata.labels }}"{{ $k }}":"{{ $v }}",{{ end }}"service-mesh.3scale.net/service-id":"'"${SERVICE_ID}"'","service-mesh.3scale.net/credentials":"'"${CREDENTIALS_NAME}"'"}}}}}' )"
    oc patch deployment "${DEPLOYMENT}" --patch ''"${patch}"''
    Copy to Clipboard Toggle word wrap
2.24.1.3.

2.24.2.

참고

2.24.3.

2.24.4.

2.24.4.1.

참고

2.24.4.1.1.

apiVersion: "config.istio.io/v1alpha2"
kind: instance
metadata:
  name: threescale-authorization
  namespace: istio-system
spec:
  template: authorization
  params:
    subject:
      user: request.query_params["user_key"] | request.headers["user-key"] | ""
    action:
      path: request.url_path
      method: request.method | "get"
Copy to Clipboard Toggle word wrap

2.24.4.1.2.

apiVersion: "config.istio.io/v1alpha2"
kind: instance
metadata:
  name: threescale-authorization
  namespace: istio-system
spec:
  template: authorization
  params:
    subject:
        app_id: request.query_params["app_id"] | request.headers["app-id"] | ""
        app_key: request.query_params["app_key"] | request.headers["app-key"] | ""
    action:
      path: request.url_path
      method: request.method | "get"
Copy to Clipboard Toggle word wrap

2.24.4.1.3.

apiVersion: "config.istio.io/v1alpha2"
kind: instance
metadata:
  name: threescale-authorization
spec:
  template: threescale-authorization
  params:
    subject:
      properties:
        app_key: request.query_params["app_key"] | request.headers["app-key"] | ""
        client_id: request.auth.claims["azp"] | ""
      action:
        path: request.url_path
        method: request.method | "get"
        service: destination.labels["service-mesh.3scale.net/service-id"] | ""
Copy to Clipboard Toggle word wrap

apiVersion: security.istio.io/v1beta1
kind: RequestAuthentication
metadata:
  name: jwt-example
  namespace: info
spec:
  selector:
    matchLabels:
      app: productpage
  jwtRules:
  - issuer: >-
      http://keycloak-keycloak.34.242.107.254.nip.io/auth/realms/3scale-keycloak
    jwksUri: >-
      http://keycloak-keycloak.34.242.107.254.nip.io/auth/realms/3scale-keycloak/protocol/openid-connect/certs
Copy to Clipboard Toggle word wrap

2.24.4.1.4.

apiVersion: "config.istio.io/v1alpha2"
kind: instance
metadata:
  name: threescale-authorization
spec:
  template: authorization
  params:
    subject:
      user: request.query_params["user_key"] | request.headers["user-key"] |
      properties:
        app_id: request.query_params["app_id"] | request.headers["app-id"] | ""
        app_key: request.query_params["app_key"] | request.headers["app-key"] | ""
        client_id: request.auth.claims["azp"] | ""
    action:
      path: request.url_path
      method: request.method | "get"
      service: destination.labels["service-mesh.3scale.net/service-id"] | ""
Copy to Clipboard Toggle word wrap

2.24.5.

참고

Expand
표 2.30.
   

2.24.6.

참고

2.24.6.1.

2.24.6.2.

2.24.6.3.

2.24.7.

2.24.8.

  1. $ oc get pods -n istio-system
    Copy to Clipboard Toggle word wrap
  2. $ oc logs istio-system
    Copy to Clipboard Toggle word wrap

2.24.9.

2.25.

2.25.1.

  • 중요

2.25.2.

2.25.2.1.

  1. $ oc get pods -n openshift-operators
    Copy to Clipboard Toggle word wrap

    NAME                               READY   STATUS    RESTARTS   AGE
    istio-operator-bb49787db-zgr87     1/1     Running   0          15s
    jaeger-operator-7d5c4f57d8-9xphf   1/1     Running   0          2m42s
    kiali-operator-f9c8d84f4-7xh2v     1/1     Running   0          64s
    Copy to Clipboard Toggle word wrap

  2. $ oc get pods -n openshift-operators-redhat
    Copy to Clipboard Toggle word wrap

    NAME                                      READY   STATUS    RESTARTS   AGE
    elasticsearch-operator-d4f59b968-796vq     1/1     Running   0          15s
    Copy to Clipboard Toggle word wrap

2.25.2.2.

참고

2.25.2.2.1.

  • $ oc logs -n openshift-operators <podName>
    Copy to Clipboard Toggle word wrap

    $ oc logs -n openshift-operators istio-operator-bb49787db-zgr87
    Copy to Clipboard Toggle word wrap

2.25.3.

2.25.3.1.

  • 참고

  • 참고

  1. $ oc get pods -n istio-system
    Copy to Clipboard Toggle word wrap

    NAME                                   READY   STATUS    RESTARTS   AGE
    grafana-6776785cfc-6fz7t               2/2     Running   0          102s
    istio-egressgateway-5f49dd99-l9ppq     1/1     Running   0          103s
    istio-ingressgateway-6dc885c48-jjd8r   1/1     Running   0          103s
    istiod-basic-6c9cc55998-wg4zq          1/1     Running   0          2m14s
    jaeger-6865d5d8bf-zrfss                2/2     Running   0          100s
    kiali-579799fbb7-8mwc8                 1/1     Running   0          46s
    prometheus-5c579dfb-6qhjk              2/2     Running   0          115s
    Copy to Clipboard Toggle word wrap

  2. $ oc get smcp -n istio-system
    Copy to Clipboard Toggle word wrap

    NAME    READY   STATUS            PROFILES      VERSION   AGE
    basic   10/10   ComponentsReady   ["default"]   2.1.3     4m2s
    Copy to Clipboard Toggle word wrap

    NAME            READY     STATUS             TEMPLATE   VERSION   AGE
    basic-install   10/10     UpdateSuccessful   default     v1.1     3d16h
    Copy to Clipboard Toggle word wrap

  3. $ oc describe smcp <smcp-name> -n <controlplane-namespace>
    Copy to Clipboard Toggle word wrap

    $ oc describe smcp basic -n istio-system
    Copy to Clipboard Toggle word wrap

  4. $ oc get jaeger -n istio-system
    Copy to Clipboard Toggle word wrap

    NAME     STATUS    VERSION   STRATEGY   STORAGE   AGE
    jaeger   Running   1.30.0    allinone   memory    15m
    Copy to Clipboard Toggle word wrap

  5. $ oc get kiali -n istio-system
    Copy to Clipboard Toggle word wrap

    NAME    AGE
    kiali   15m
    Copy to Clipboard Toggle word wrap

2.25.3.1.1.

2.25.3.1.2.

중요

  1. $ oc login --username=<NAMEOFUSER> https://<HOSTNAME>:6443
    Copy to Clipboard Toggle word wrap
  2. $ oc get route -n istio-system jaeger -o jsonpath='{.spec.host}'
    Copy to Clipboard Toggle word wrap
2.25.3.2.

2.25.4.

2.25.4.1.

2.25.4.1.1.

2.25.4.1.2.

2.26.

2.26.1.

  1. $ oc login --username=<NAMEOFUSER> https://<HOSTNAME>:6443
    Copy to Clipboard Toggle word wrap
  2. $ oc project istio-system
    Copy to Clipboard Toggle word wrap
  3. $ oc edit smcp <smcp_name>
    Copy to Clipboard Toggle word wrap
  4. apiVersion: maistra.io/v2
    kind: ServiceMeshControlPlane
    metadata:
      name: basic
      namespace: istio-system
    spec:
      proxy:
        accessLogging:
          file:
            name: /dev/stdout     #file name
    Copy to Clipboard Toggle word wrap

2.26.2.

2.26.2.1.

2.26.2.2.

2.26.2.3.

  1. $ oc adm must-gather --image=registry.redhat.io/openshift-service-mesh/istio-must-gather-rhel8:2.6
    Copy to Clipboard Toggle word wrap
  2. $ oc adm must-gather --image=registry.redhat.io/openshift-service-mesh/istio-must-gather-rhel8:2.6 gather <namespace>
    Copy to Clipboard Toggle word wrap

2.26.2.4.

    • $ oc get clusterversion -o jsonpath='{.items[].spec.clusterID}{"\n"}'
      Copy to Clipboard Toggle word wrap

2.27.

2.27.1.

Expand
표 2.31.
   

Expand
표 2.32.
   

Expand
표 2.33.
   

apiVersion: maistra.io/v2
kind: ServiceMeshControlPlane
metadata:
  name: basic
spec:
  version: v2.6
  proxy:
    runtime:
      container:
        resources:
          requests:
            cpu: 100m
            memory: 128Mi
          limits:
            cpu: 500m
            memory: 128Mi
  tracing:
    type: Jaeger
  gateways:
    ingress: # istio-ingressgateway
      service:
        type: ClusterIP
        ports:
        - name: status-port
          port: 15020
        - name: http2
          port: 80
          targetPort: 8080
        - name: https
          port: 443
          targetPort: 8443
      meshExpansionPorts: []
    egress: # istio-egressgateway
      service:
        type: ClusterIP
        ports:
        - name: status-port
          port: 15020
        - name: http2
          port: 80
          targetPort: 8080
        - name: https
          port: 443
          targetPort: 8443
    additionalIngress:
      some-other-ingress-gateway: {}
    additionalEgress:
      some-other-egress-gateway: {}

  policy:
    type: Mixer
    mixer: # only applies if policy.type: Mixer
      enableChecks: true
      failOpen: false

  telemetry:
    type: Istiod # or Mixer
    mixer: # only applies if telemetry.type: Mixer, for v1 telemetry
      sessionAffinity: false
      batching:
        maxEntries: 100
        maxTime: 1s
      adapters:
        kubernetesenv: true
        stdio:
          enabled: true
          outputAsJSON: true
  addons:
    grafana:
      enabled: true
      install:
        config:
          env: {}
          envSecrets: {}
        persistence:
          enabled: true
          storageClassName: ""
          accessMode: ReadWriteOnce
          capacity:
            requests:
              storage: 5Gi
        service:
          ingress:
            contextPath: /grafana
            tls:
              termination: reencrypt
    kiali:
      name: kiali
      enabled: true
      install: # install kiali CR if not present
        dashboard:
          viewOnly: false
          enableGrafana: true
          enableTracing: true
          enablePrometheus: true
      service:
        ingress:
          contextPath: /kiali
    jaeger:
      name: jaeger
      install:
        storage:
          type: Elasticsearch # or Memory
          memory:
            maxTraces: 100000
          elasticsearch:
            nodeCount: 3
            storage: {}
            redundancyPolicy: SingleRedundancy
            indexCleaner: {}
        ingress: {} # jaeger ingress configuration
  runtime:
    components:
      pilot:
        deployment:
          replicas: 2
        pod:
          affinity: {}
        container:
          resources:
            requests:
              cpu: 100m
              memory: 128Mi
            limits:
              cpu: 500m
              memory: 128Mi
      grafana:
        deployment: {}
        pod: {}
      kiali:
        deployment: {}
        pod: {}
Copy to Clipboard Toggle word wrap

2.27.2.

2.27.2.1.

apiVersion: maistra.io/v2
kind: ServiceMeshControlPlane
metadata:
  name: basic
spec:
  general:
    logging:
      componentLevels: {}
          # misc: error
      logAsJSON: false
    validationMessages: true
Copy to Clipboard Toggle word wrap

Expand
표 2.34.
    
logging:
Copy to Clipboard Toggle word wrap

 

logging:
 componentLevels:
Copy to Clipboard Toggle word wrap

logging:
 logAsJSON:
Copy to Clipboard Toggle word wrap

validationMessages:
Copy to Clipboard Toggle word wrap

2.27.2.2.

apiVersion: maistra.io/v2
kind: ServiceMeshControlPlane
metadata:
  name: basic
spec:
  profiles:
  - YourProfileName
Copy to Clipboard Toggle word wrap

2.27.2.3.

중요

2.27.2.4.

apiVersion: maistra.io/v2
kind: ServiceMeshControlPlane
metadata:
  name: basic
spec:
  version: v2.6
  tracing:
    sampling: 100
    type: Jaeger
Copy to Clipboard Toggle word wrap

Expand
표 2.35.
    
tracing:
 sampling:
Copy to Clipboard Toggle word wrap

tracing:
 type:
Copy to Clipboard Toggle word wrap

2.27.2.5.

2.27.2.6.

apiVersion: maistra.io/v2
kind: ServiceMeshControlPlane
metadata:
  name: basic
spec:
  addons:
    3Scale:
      enabled: false
      PARAM_THREESCALE_LISTEN_ADDR: 3333
      PARAM_THREESCALE_LOG_LEVEL: info
      PARAM_THREESCALE_LOG_JSON: true
      PARAM_THREESCALE_LOG_GRPC: false
      PARAM_THREESCALE_REPORT_METRICS: true
      PARAM_THREESCALE_METRICS_PORT: 8080
      PARAM_THREESCALE_CACHE_TTL_SECONDS: 300
      PARAM_THREESCALE_CACHE_REFRESH_SECONDS: 180
      PARAM_THREESCALE_CACHE_ENTRIES_MAX: 1000
      PARAM_THREESCALE_CACHE_REFRESH_RETRIES: 1
      PARAM_THREESCALE_ALLOW_INSECURE_CONN: false
      PARAM_THREESCALE_CLIENT_TIMEOUT_SECONDS: 10
      PARAM_THREESCALE_GRPC_CONN_MAX_SECONDS: 60
      PARAM_USE_CACHED_BACKEND: false
      PARAM_BACKEND_CACHE_FLUSH_INTERVAL_SECONDS: 15
      PARAM_BACKEND_CACHE_POLICY_FAIL_CLOSED: true
# ...
Copy to Clipboard Toggle word wrap

Expand
표 2.36.
    

2.27.3.

Expand
표 2.37.
   

2.28.

2.28.1.

apiVersion: maistra.io/v2
kind: ServiceMeshControlPlane
metadata:
  name: basic
spec:
  addons:
    kiali:
      name: kiali
      enabled: true
      install:
        dashboard:
          viewOnly: false
          enableGrafana: true
          enableTracing: true
          enablePrometheus: true
        service:
          ingress:
            contextPath: /kiali
Copy to Clipboard Toggle word wrap

Expand
표 2.38.
    
spec:
  addons:
    kiali:
      name:
Copy to Clipboard Toggle word wrap

kiali:
  enabled:
Copy to Clipboard Toggle word wrap

kiali:
  install:
Copy to Clipboard Toggle word wrap

  
kiali:
  install:
    dashboard:
Copy to Clipboard Toggle word wrap

  
kiali:
  install:
    dashboard:
      viewOnly:
Copy to Clipboard Toggle word wrap

kiali:
  install:
    dashboard:
      enableGrafana:
Copy to Clipboard Toggle word wrap

kiali:
  install:
    dashboard:
      enablePrometheus:
Copy to Clipboard Toggle word wrap

kiali:
  install:
    dashboard:
      enableTracing:
Copy to Clipboard Toggle word wrap

kiali:
  install:
    service:
Copy to Clipboard Toggle word wrap

  
kiali:
  install:
    service:
      metadata:
Copy to Clipboard Toggle word wrap

kiali:
  install:
    service:
      metadata:
        annotations:
Copy to Clipboard Toggle word wrap

kiali:
  install:
    service:
      metadata:
        labels:
Copy to Clipboard Toggle word wrap

kiali:
  install:
    service:
      ingress:
Copy to Clipboard Toggle word wrap

kiali:
  install:
    service:
      ingress:
        metadata:
          annotations:
Copy to Clipboard Toggle word wrap

kiali:
  install:
    service:
      ingress:
        metadata:
          labels:
Copy to Clipboard Toggle word wrap

kiali:
  install:
    service:
      ingress:
        enabled:
Copy to Clipboard Toggle word wrap

kiali:
  install:
    service:
      ingress:
        contextPath:
Copy to Clipboard Toggle word wrap

install:
  service:
    ingress:
      hosts:
Copy to Clipboard Toggle word wrap

install:
  service:
    ingress:
      tls:
Copy to Clipboard Toggle word wrap

 

kiali:
  install:
    service:
      nodePort:
Copy to Clipboard Toggle word wrap

2.28.2.

참고

2.29.

중요

2.29.1.

apiVersion: maistra.io/v2
kind: ServiceMeshControlPlane
metadata:
  name: basic
spec:
  version: v2.6
  tracing:
    sampling: 100
    type: Jaeger
Copy to Clipboard Toggle word wrap

참고

2.29.2.

2.29.3.

  • 참고

참고

2.29.3.1.

apiVersion: maistra.io/v2
kind: ServiceMeshControlPlane
metadata:
  name: basic
spec:
  version: v2.6
  tracing:
    sampling: 10000
    type: Jaeger
  addons:
    jaeger:
      name: jaeger
      install:
        storage:
          type: Memory
Copy to Clipboard Toggle word wrap

2.29.3.2.

apiVersion: maistra.io/v2
kind: ServiceMeshControlPlane
metadata:
  name: basic
spec:
  version: v2.6
  tracing:
    sampling: 10000
    type: Jaeger
  addons:
    jaeger:
      name: jaeger  #name of Jaeger CR
      install:
        storage:
          type: Elasticsearch
        ingress:
          enabled: true
  runtime:
    components:
      tracing.jaeger.elasticsearch: # only supports resources and image name
        container:
          resources: {}
Copy to Clipboard Toggle word wrap

2.29.3.3.

apiVersion: maistra.io/v2
kind: ServiceMeshControlPlane
metadata:
  name: basic
spec:
  version: v2.6
  tracing:
    sampling: 1000
    type: Jaeger
  addons:
    jaeger:
      name: MyJaegerInstance #name of Jaeger CR
      install:
        storage:
          type: Elasticsearch
        ingress:
          enabled: true
Copy to Clipboard Toggle word wrap

2.29.3.4.

apiVersion: maistra.io/v2
kind: ServiceMeshControlPlane
metadata:
  name: basic
spec:
  version: v2.6
  tracing:
    sampling: 1000
    type: Jaeger
  addons:
    jaeger:
      name: MyJaegerInstance  #name of Jaeger CR
Copy to Clipboard Toggle word wrap

2.29.4.

참고

2.29.4.1.

2.29.4.2.

2.29.4.2.1.

    • apiVersion: jaegertracing.io/v1
      kind: Jaeger
      spec:
        ingress:
          enabled: true
          openshift:
            htpasswdFile: /etc/proxy/htpasswd/auth
            sar: '{"namespace": "istio-system", "resource": "pods", "verb": "get"}'
          options: {}
          resources: {}
          security: oauth-proxy
        volumes:
          - name: secret-htpasswd
            secret:
              secretName: htpasswd
          - configMap:
              defaultMode: 420
              items:
                - key: ca-bundle.crt
                  path: tls-ca-bundle.pem
              name: trusted-ca-bundle
              optional: true
            name: trusted-ca-bundle
        volumeMounts:
          - mountPath: /etc/proxy/htpasswd
            name: secret-htpasswd
          - mountPath: /etc/pki/ca-trust/extracted/pem/
            name: trusted-ca-bundle
            readOnly: true
      # ...
      Copy to Clipboard Toggle word wrap

2.29.4.2.2.

  1. $ oc login https://<HOSTNAME>:6443
    Copy to Clipboard Toggle word wrap
  2. $ oc project istio-system
    Copy to Clipboard Toggle word wrap
  3. $ oc edit -n openshift-distributed-tracing -f jaeger.yaml
    Copy to Clipboard Toggle word wrap
    • apiVersion: jaegertracing.io/v1
      kind: Jaeger
      spec:
        ingress:
          enabled: true
          openshift:
            htpasswdFile: /etc/proxy/htpasswd/auth
            sar: '{"namespace": "istio-system", "resource": "pods", "verb": "get"}'
          options: {}
          resources: {}
          security: oauth-proxy
        volumes:
          - name: secret-htpasswd
            secret:
              secretName: htpasswd
          - configMap:
              defaultMode: 420
              items:
                - key: ca-bundle.crt
                  path: tls-ca-bundle.pem
              name: trusted-ca-bundle
              optional: true
            name: trusted-ca-bundle
        volumeMounts:
          - mountPath: /etc/proxy/htpasswd
            name: secret-htpasswd
          - mountPath: /etc/pki/ca-trust/extracted/pem/
            name: trusted-ca-bundle
            readOnly: true
      Copy to Clipboard Toggle word wrap

  4. $ oc get pods -n openshift-distributed-tracing
    Copy to Clipboard Toggle word wrap
2.29.4.3.

apiVersion: jaegertracing.io/v1
kind: Jaeger
metadata:
  name: name
spec:
  strategy: <deployment_strategy>
  allInOne:
    options: {}
    resources: {}
  agent:
    options: {}
    resources: {}
  collector:
    options: {}
    resources: {}
  sampling:
    options: {}
  storage:
    type:
    options: {}
  query:
    options: {}
    resources: {}
  ingester:
    options: {}
    resources: {}
  options: {}
Copy to Clipboard Toggle word wrap

Expand
표 2.39.
    

 

 

  

  

  

  

  

  

  

apiVersion: jaegertracing.io/v1
kind: Jaeger
metadata:
  name: jaeger-all-in-one-inmemory
Copy to Clipboard Toggle word wrap

2.29.4.4.

Expand
표 2.40.
   
collector:
  replicas:
Copy to Clipboard Toggle word wrap

Expand
표 2.41.
   
spec:
 collector:
  options: {}
Copy to Clipboard Toggle word wrap

 
options:
  collector:
    num-workers:
Copy to Clipboard Toggle word wrap

options:
  collector:
    queue-size:
Copy to Clipboard Toggle word wrap

options:
  kafka:
    producer:
      topic: jaeger-spans
Copy to Clipboard Toggle word wrap

options:
  kafka:
    producer:
      brokers: my-cluster-kafka-brokers.kafka:9092
Copy to Clipboard Toggle word wrap

 
options:
  log-level:
Copy to Clipboard Toggle word wrap

options:
  otlp:
    enabled: true
    grpc:
      host-port: 4317
      max-connection-age: 0s
      max-connection-age-grace: 0s
      max-message-size: 4194304
      tls:
        enabled: false
        cert: /path/to/cert.crt
        cipher-suites: "TLS_AES_256_GCM_SHA384,TLS_CHACHA20_POLY1305_SHA256"
        client-ca: /path/to/cert.ca
        reload-interval: 0s
        min-version: 1.2
        max-version: 1.3
Copy to Clipboard Toggle word wrap

 
options:
  otlp:
    enabled: true
    http:
      cors:
        allowed-headers: [<header-name>[, <header-name>]*]
        allowed-origins: *
      host-port: 4318
      max-connection-age: 0s
      max-connection-age-grace: 0s
      max-message-size: 4194304
      read-timeout: 0s
      read-header-timeout: 2s
      idle-timeout: 0s
      tls:
        enabled: false
        cert: /path/to/cert.crt
        cipher-suites: "TLS_AES_256_GCM_SHA384,TLS_CHACHA20_POLY1305_SHA256"
        client-ca: /path/to/cert.ca
        reload-interval: 0s
        min-version: 1.2
        max-version: 1.3
Copy to Clipboard Toggle word wrap

 
2.29.4.5.

참고

Expand
표 2.42.
    
spec:
 sampling:
  options: {}
    default_strategy:
    service_strategy:
Copy to Clipboard Toggle word wrap

 

default_strategy:
  type:
service_strategy:
  type:
Copy to Clipboard Toggle word wrap

default_strategy:
  param:
service_strategy:
  param:
Copy to Clipboard Toggle word wrap

apiVersion: jaegertracing.io/v1
kind: Jaeger
metadata:
  name: with-sampling
spec:
  sampling:
    options:
      default_strategy:
        type: probabilistic
        param: 0.5
      service_strategies:
        - service: alpha
          type: probabilistic
          param: 0.8
          operation_strategies:
            - operation: op1
              type: probabilistic
              param: 0.2
            - operation: op2
              type: probabilistic
              param: 0.4
        - service: beta
          type: ratelimiting
          param: 5
Copy to Clipboard Toggle word wrap

spec:
  sampling:
    options:
      default_strategy:
        type: probabilistic
        param: 1
Copy to Clipboard Toggle word wrap

2.29.4.6.

Expand
표 2.43.
    
spec:
  storage:
    type:
Copy to Clipboard Toggle word wrap

storage:
  secretname:
Copy to Clipboard Toggle word wrap

 

storage:
  options: {}
Copy to Clipboard Toggle word wrap

  
Expand
표 2.44.
    
storage:
  esIndexCleaner:
    enabled:
Copy to Clipboard Toggle word wrap

storage:
  esIndexCleaner:
    numberOfDays:
Copy to Clipboard Toggle word wrap

storage:
  esIndexCleaner:
    schedule:
Copy to Clipboard Toggle word wrap

2.29.4.6.1.

참고

Expand
표 2.45.
    
elasticsearch:
  properties:
    doNotProvision:
Copy to Clipboard Toggle word wrap

elasticsearch:
  properties:
    name:
Copy to Clipboard Toggle word wrap

elasticsearch:
  nodeCount:
Copy to Clipboard Toggle word wrap

elasticsearch:
  resources:
    requests:
      cpu:
Copy to Clipboard Toggle word wrap

elasticsearch:
  resources:
    requests:
      memory:
Copy to Clipboard Toggle word wrap

elasticsearch:
  resources:
    limits:
      cpu:
Copy to Clipboard Toggle word wrap

 
elasticsearch:
  resources:
    limits:
      memory:
Copy to Clipboard Toggle word wrap

 
elasticsearch:
  redundancyPolicy:
Copy to Clipboard Toggle word wrap

 
elasticsearch:
  useCertManagement:
Copy to Clipboard Toggle word wrap

apiVersion: jaegertracing.io/v1
kind: Jaeger
metadata:
  name: simple-prod
spec:
  strategy: production
  storage:
    type: elasticsearch
    elasticsearch:
      nodeCount: 3
      resources:
        requests:
          cpu: 1
          memory: 16Gi
        limits:
          memory: 16Gi
Copy to Clipboard Toggle word wrap

apiVersion: jaegertracing.io/v1
kind: Jaeger
metadata:
  name: simple-prod
spec:
  strategy: production
  storage:
    type: elasticsearch
    elasticsearch:
      nodeCount: 1
      storage: 
1

        storageClassName: gp2
        size: 5Gi
      resources:
        requests:
          cpu: 200m
          memory: 4Gi
        limits:
          memory: 4Gi
      redundancyPolicy: ZeroRedundancy
Copy to Clipboard Toggle word wrap

1
2.29.4.6.2.

Expand
표 2.46.
    
es:
  server-urls:
Copy to Clipboard Toggle word wrap

es:
  max-doc-count:
Copy to Clipboard Toggle word wrap

 

es:
  max-num-spans:
Copy to Clipboard Toggle word wrap

 

es:
  max-span-age:
Copy to Clipboard Toggle word wrap

 

es:
  sniffer:
Copy to Clipboard Toggle word wrap

es:
  sniffer-tls-enabled:
Copy to Clipboard Toggle word wrap

es:
  timeout:
Copy to Clipboard Toggle word wrap

 

es:
  username:
Copy to Clipboard Toggle word wrap

  
es:
  password:
Copy to Clipboard Toggle word wrap

  
es:
  version:
Copy to Clipboard Toggle word wrap

 

Expand
표 2.47.
    
es:
  num-replicas:
Copy to Clipboard Toggle word wrap

 

es:
  num-shards:
Copy to Clipboard Toggle word wrap

 

Expand
표 2.48.
    
es:
  create-index-templates:
Copy to Clipboard Toggle word wrap

es:
  index-prefix:
Copy to Clipboard Toggle word wrap

  
Expand
표 2.49.
    
es:
  bulk:
    actions:
Copy to Clipboard Toggle word wrap

 

es:
  bulk:
    flush-interval:
Copy to Clipboard Toggle word wrap

 

es:
  bulk:
    size:
Copy to Clipboard Toggle word wrap

 

es:
  bulk:
    workers:
Copy to Clipboard Toggle word wrap

 

Expand
표 2.50.
    
es:
  tls:
    ca:
Copy to Clipboard Toggle word wrap

 

es:
  tls:
    cert:
Copy to Clipboard Toggle word wrap

  
es:
  tls:
    enabled:
Copy to Clipboard Toggle word wrap

es:
  tls:
    key:
Copy to Clipboard Toggle word wrap

  
es:
  tls:
    server-name:
Copy to Clipboard Toggle word wrap

  
es:
  token-file:
Copy to Clipboard Toggle word wrap

  
Expand
표 2.51.
    
es-archive:
  bulk:
    actions:
Copy to Clipboard Toggle word wrap

 

es-archive:
  bulk:
    flush-interval:
Copy to Clipboard Toggle word wrap

 

es-archive:
  bulk:
    size:
Copy to Clipboard Toggle word wrap

 

es-archive:
  bulk:
    workers:
Copy to Clipboard Toggle word wrap

 

es-archive:
  create-index-templates:
Copy to Clipboard Toggle word wrap

es-archive:
  enabled:
Copy to Clipboard Toggle word wrap

es-archive:
  index-prefix:
Copy to Clipboard Toggle word wrap

  
es-archive:
  max-doc-count:
Copy to Clipboard Toggle word wrap

 

es-archive:
  max-num-spans:
Copy to Clipboard Toggle word wrap

 

es-archive:
  max-span-age:
Copy to Clipboard Toggle word wrap

 

es-archive:
  num-replicas:
Copy to Clipboard Toggle word wrap

 

es-archive:
  num-shards:
Copy to Clipboard Toggle word wrap

 

es-archive:
  password:
Copy to Clipboard Toggle word wrap

  
es-archive:
  server-urls:
Copy to Clipboard Toggle word wrap

  
es-archive:
  sniffer:
Copy to Clipboard Toggle word wrap

es-archive:
  sniffer-tls-enabled:
Copy to Clipboard Toggle word wrap

es-archive:
  timeout:
Copy to Clipboard Toggle word wrap

 

es-archive:
  tls:
    ca:
Copy to Clipboard Toggle word wrap

 

es-archive:
  tls:
    cert:
Copy to Clipboard Toggle word wrap

  
es-archive:
  tls:
    enabled:
Copy to Clipboard Toggle word wrap

es-archive:
  tls:
    key:
Copy to Clipboard Toggle word wrap

  
es-archive:
  tls:
    server-name:
Copy to Clipboard Toggle word wrap

  
es-archive:
  token-file:
Copy to Clipboard Toggle word wrap

  
es-archive:
  username:
Copy to Clipboard Toggle word wrap

  
es-archive:
  version:
Copy to Clipboard Toggle word wrap

 

apiVersion: jaegertracing.io/v1
kind: Jaeger
metadata:
  name: simple-prod
spec:
  strategy: production
  storage:
    type: elasticsearch
    options:
      es:
        server-urls: https://quickstart-es-http.default.svc:9200
        index-prefix: my-prefix
        tls:
          ca: /es/certificates/ca.crt
    secretName: tracing-secret
  volumeMounts:
    - name: certificates
      mountPath: /es/certificates/
      readOnly: true
  volumes:
    - name: certificates
      secret:
        secretName: quickstart-es-http-certs-public
Copy to Clipboard Toggle word wrap

apiVersion: jaegertracing.io/v1
kind: Jaeger
metadata:
  name: simple-prod
spec:
  strategy: production
  storage:
    type: elasticsearch
    options:
      es:
        server-urls: https://quickstart-es-http.default.svc:9200 
1

        index-prefix: my-prefix
        tls: 
2

          ca: /es/certificates/ca.crt
    secretName: tracing-secret 
3

  volumeMounts: 
4

    - name: certificates
      mountPath: /es/certificates/
      readOnly: true
  volumes:
    - name: certificates
      secret:
        secretName: quickstart-es-http-certs-public
Copy to Clipboard Toggle word wrap

1
2
3
4
2.29.4.7.

중요

apiVersion: logging.openshift.io/v1
kind: Elasticsearch
metadata:
  annotations:
    logging.openshift.io/elasticsearch-cert-management: "true"
    logging.openshift.io/elasticsearch-cert.jaeger-custom-es: "user.jaeger"
    logging.openshift.io/elasticsearch-cert.curator-custom-es: "system.logging.curator"
  name: custom-es
spec:
  managementState: Managed
  nodeSpec:
    resources:
      limits:
        memory: 16Gi
      requests:
        cpu: 1
        memory: 16Gi
  nodes:
    - nodeCount: 3
      proxyResources: {}
      resources: {}
      roles:
        - master
        - client
        - data
      storage: {}
  redundancyPolicy: ZeroRedundancy
Copy to Clipboard Toggle word wrap

apiVersion: jaegertracing.io/v1
kind: Jaeger
metadata:
  name: jaeger-prod
spec:
  strategy: production
  storage:
    type: elasticsearch
    elasticsearch:
      name: custom-es
      doNotProvision: true
      useCertManagement: true
Copy to Clipboard Toggle word wrap

2.29.4.8.

Expand
표 2.52.
    
spec:
  query:
    replicas:
Copy to Clipboard Toggle word wrap

 
Expand
표 2.53.
    
spec:
  query:
    options: {}
Copy to Clipboard Toggle word wrap

  
options:
  log-level:
Copy to Clipboard Toggle word wrap

 
options:
  query:
    base-path:
Copy to Clipboard Toggle word wrap

 

apiVersion: jaegertracing.io/v1
kind: "Jaeger"
metadata:
  name: "my-jaeger"
spec:
  strategy: allInOne
  allInOne:
    options:
      log-level: debug
      query:
        base-path: /jaeger
Copy to Clipboard Toggle word wrap

2.29.4.9.

Expand
표 2.54.
   
spec:
  ingester:
    options: {}
Copy to Clipboard Toggle word wrap

 
options:
  deadlockInterval:
Copy to Clipboard Toggle word wrap

options:
  kafka:
    consumer:
      topic:
Copy to Clipboard Toggle word wrap

options:
  kafka:
    consumer:
      brokers:
Copy to Clipboard Toggle word wrap

options:
  log-level:
Copy to Clipboard Toggle word wrap

apiVersion: jaegertracing.io/v1
kind: Jaeger
metadata:
  name: simple-streaming
spec:
  strategy: streaming
  collector:
    options:
      kafka:
        producer:
          topic: jaeger-spans
          brokers: my-cluster-kafka-brokers.kafka:9092
  ingester:
    options:
      kafka:
        consumer:
          topic: jaeger-spans
          brokers: my-cluster-kafka-brokers.kafka:9092
      ingester:
        deadlockInterval: 5
  storage:
    type: elasticsearch
    options:
      es:
        server-urls: http://elasticsearch:9200
Copy to Clipboard Toggle word wrap

2.30.

2.30.1.

2.30.1.1.

2.30.1.2.

  1. $ oc delete smmr -n istio-system default
    Copy to Clipboard Toggle word wrap
  2. $ oc get smcp -n istio-system
    Copy to Clipboard Toggle word wrap
  3. $ oc delete smcp -n istio-system <name_of_custom_resource>
    Copy to Clipboard Toggle word wrap

2.30.2.

2.30.2.1.

2.30.3.

  1. 참고

    $ oc -n openshift-operators delete ds -lmaistra-version
    Copy to Clipboard Toggle word wrap
    $ oc delete clusterrole/istio-admin clusterrole/istio-cni clusterrolebinding/istio-cni clusterrole/ossm-cni clusterrolebinding/ossm-cni
    Copy to Clipboard Toggle word wrap
    $ oc delete clusterrole istio-view istio-edit
    Copy to Clipboard Toggle word wrap
    $ oc delete clusterrole jaegers.jaegertracing.io-v1-admin jaegers.jaegertracing.io-v1-crdview jaegers.jaegertracing.io-v1-edit jaegers.jaegertracing.io-v1-view
    Copy to Clipboard Toggle word wrap
    $ oc get crds -o name | grep '.*\.istio\.io' | xargs -r -n 1 oc delete
    Copy to Clipboard Toggle word wrap
    $ oc get crds -o name | grep '.*\.maistra\.io' | xargs -r -n 1 oc delete
    Copy to Clipboard Toggle word wrap
    $ oc get crds -o name | grep '.*\.kiali\.io' | xargs -r -n 1 oc delete
    Copy to Clipboard Toggle word wrap
    $ oc delete crds jaegers.jaegertracing.io
    Copy to Clipboard Toggle word wrap
    $ oc delete cm -n openshift-operators -lmaistra-version
    Copy to Clipboard Toggle word wrap
    $ oc delete sa -n openshift-operators -lmaistra-version
    Copy to Clipboard Toggle word wrap

3장.

3.1.

주의

3.1.1.

참고

3.1.2.

3.1.2.1.

  • $ oc adm must-gather \
      --image=registry.redhat.io/container-native-virtualization/cnv-must-gather-rhel9:v4.17.7
    Copy to Clipboard Toggle word wrap
    • $ oc adm must-gather -- /usr/bin/gather_audit_logs
      Copy to Clipboard Toggle word wrap
      참고

NAMESPACE                      NAME                 READY   STATUS      RESTARTS      AGE
...
openshift-must-gather-5drcj    must-gather-bklx4    2/2     Running     0             72s
openshift-must-gather-5drcj    must-gather-s8sdh    2/2     Running     0             72s
...
Copy to Clipboard Toggle word wrap

$ oc adm must-gather --run-namespace <namespace> \
  --image=registry.redhat.io/container-native-virtualization/cnv-must-gather-rhel9:v4.17.7
Copy to Clipboard Toggle word wrap
3.1.2.2.
3.1.2.3.

  1. $ oc adm must-gather --image=registry.redhat.io/openshift-service-mesh/istio-must-gather-rhel8:2.6
    Copy to Clipboard Toggle word wrap
  2. $ oc adm must-gather --image=registry.redhat.io/openshift-service-mesh/istio-must-gather-rhel8:2.6 gather <namespace>
    Copy to Clipboard Toggle word wrap

3.1.3.

참고

3.1.3.1.
3.1.3.2.

3.1.4.

3.1.4.1.

3.1.4.1.1.
Expand
  

3.1.4.2.

3.1.4.2.1.
Expand
  

3.1.4.3.

3.1.4.3.1.
Expand
  

3.1.4.4.

3.1.4.4.1.

3.1.4.4.2.

apiVersion: security.istio.io/v1beta1
kind: AuthorizationPolicy
metadata:
  name: httpbin
  namespace: foo
spec:
  action: DENY
  rules:
  - from:
    - source:
        namespaces: ["dev"]
    to:
    - operation:
        hosts: [“httpbin.com”,"httpbin.com:*"]
Copy to Clipboard Toggle word wrap

apiVersion: security.istio.io/v1beta1
kind: AuthorizationPolicy
metadata:
  name: httpbin
  namespace: default
spec:
  action: DENY
  rules:
  - to:
    - operation:
        hosts: ["httpbin.example.com:*"]
Copy to Clipboard Toggle word wrap

3.1.4.5.

3.1.4.6.

3.1.4.7.

3.1.4.8.

중요

3.1.4.8.1.

참고

3.1.4.8.2.

Expand
표 3.1.
    

주의

3.1.4.8.3.

Expand
표 3.2.
  

3.1.4.8.4.

spec:
  global:
    pathNormalization: <option>
Copy to Clipboard Toggle word wrap

3.1.4.9.

3.1.4.10.

3.1.4.11.

3.1.4.12.

3.1.4.13.

3.1.4.14.

3.1.4.15.

3.1.4.16.

3.1.4.17.

3.1.4.18.

참고

3.1.4.18.1.

중요

  1.   {
        "runtime": {
          "symlink_root": "/var/lib/istio/envoy/runtime"
        }
      }
    Copy to Clipboard Toggle word wrap
  2. $  oc create secret generic -n <SMCPnamespace> gateway-bootstrap --from-file=bootstrap-override.json
    Copy to Clipboard Toggle word wrap
  3. apiVersion: maistra.io/v1
    kind: ServiceMeshControlPlane
    spec:
      istio:
        gateways:
          istio-ingressgateway:
            env:
              ISTIO_BOOTSTRAP_OVERRIDE: /var/lib/istio/envoy/custom-bootstrap/bootstrap-override.json
            secretVolumes:
            - mountPath: /var/lib/istio/envoy/custom-bootstrap
              name: custom-bootstrap
              secretName: gateway-bootstrap
    Copy to Clipboard Toggle word wrap

  4. $  oc create secret generic -n <SMCPnamespace> gateway-settings --from-literal=overload.global_downstream_max_connections=10000
    Copy to Clipboard Toggle word wrap

apiVersion: maistra.io/v1
kind: ServiceMeshControlPlane
spec:
  template: default
#Change the version to "v1.0" if you are on the 1.0 stream.
  version: v1.1
  istio:
    gateways:
      istio-ingressgateway:
        env:
          ISTIO_BOOTSTRAP_OVERRIDE: /var/lib/istio/envoy/custom-bootstrap/bootstrap-override.json
        secretVolumes:
        - mountPath: /var/lib/istio/envoy/custom-bootstrap
          name: custom-bootstrap
          secretName: gateway-bootstrap
        # below is the new secret mount
        - mountPath: /var/lib/istio/envoy/runtime
          name: gateway-settings
          secretName: gateway-settings
Copy to Clipboard Toggle word wrap

3.1.4.18.2.

  1. $ oc get jaeger -n istio-system
    Copy to Clipboard Toggle word wrap

    NAME     AGE
    jaeger   3d21h
    Copy to Clipboard Toggle word wrap
  2. $ oc get jaeger jaeger -oyaml -n istio-system > /tmp/jaeger-cr.yaml
    Copy to Clipboard Toggle word wrap
  3. $ oc delete jaeger jaeger -n istio-system
    Copy to Clipboard Toggle word wrap
  4. $ oc create -f /tmp/jaeger-cr.yaml -n istio-system
    Copy to Clipboard Toggle word wrap
  5. $ rm /tmp/jaeger-cr.yaml
    Copy to Clipboard Toggle word wrap

  1. $ oc delete -f <jaeger-cr-file>
    Copy to Clipboard Toggle word wrap

    $ oc delete -f jaeger-prod-elasticsearch.yaml
    Copy to Clipboard Toggle word wrap
  2. $ oc create -f <jaeger-cr-file>
    Copy to Clipboard Toggle word wrap
  3. $ oc get pods -n jaeger-system -w
    Copy to Clipboard Toggle word wrap
3.1.4.19.

3.1.4.20.

3.1.4.21.

3.1.4.22.

3.1.4.22.1.

spec:
  version: v1.1
  ...
Copy to Clipboard Toggle word wrap

참고

3.1.5.

3.1.5.1.

3.1.6.

3.1.6.1.

3.1.6.2.
참고

3.1.7.

3.1.7.1.
3.1.7.2.

3.2.

주의

3.2.1.

3.2.2.

3.2.3.

3.2.3.1.

3.2.3.2.

3.2.3.3.

3.2.4.

3.2.4.1.

3.2.4.2.

3.2.4.3.

3.2.5.

3.3.

주의

3.3.1.

3.3.1.1.

참고

3.3.1.2.

3.3.2.

3.3.2.1.

 

3.3.2.2.

3.3.2.3.

apiVersion: "rbac.istio.io/v1alpha1"
kind: ServiceRoleBinding
metadata:
  name: httpbin-client-binding
  namespace: httpbin
spec:
  subjects:
  - user: "cluster.local/ns/istio-system/sa/istio-ingressgateway-service-account"
    properties:
      request.headers[<header>]: "value"
Copy to Clipboard Toggle word wrap

apiVersion: "rbac.istio.io/v1alpha1"
kind: ServiceRoleBinding
metadata:
  name: httpbin-client-binding
  namespace: httpbin
spec:
  subjects:
  - user: "cluster.local/ns/istio-system/sa/istio-ingressgateway-service-account"
    properties:
      request.regex.headers[<header>]: "<regular expression>"
Copy to Clipboard Toggle word wrap

3.3.2.4.

3.3.2.5.
3.3.2.6.
3.3.2.7.

3.3.2.8.

3.3.2.8.1.

3.3.2.8.2.

3.3.2.8.3.

3.3.3.

3.3.4.

3.4.

주의

3.4.1.

    • 참고

3.4.2.

참고

3.4.2.1.
3.4.2.2.

3.4.3.

주의

중요

주의

3.4.4.

3.5.

주의

참고

참고

참고

3.5.1.

3.5.2.

주의

참고

  1. 참고

  2. 참고

3.5.3.

  1. 참고

3.5.4.

주의

  1. 참고

3.5.5.

중요

참고

    • 중요

    • 중요

3.5.6.

3.5.6.1.

  1. 참고

3.5.6.2.

  1. $ oc login --username=<NAMEOFUSER> https://<HOSTNAME>:6443
    Copy to Clipboard Toggle word wrap
  2. $ oc new-project istio-system
    Copy to Clipboard Toggle word wrap
  3. $ oc create -n istio-system -f istio-installation.yaml
    Copy to Clipboard Toggle word wrap
  4. $ oc get smcp -n istio-system
    Copy to Clipboard Toggle word wrap

    NAME            READY   STATUS            PROFILES      VERSION   AGE
    basic-install   11/11   ComponentsReady   ["default"]   v1.1.18   4m25s
    Copy to Clipboard Toggle word wrap
  5. $ oc get pods -n istio-system -w
    Copy to Clipboard Toggle word wrap

    NAME                                     READY   STATUS             RESTARTS   AGE
    grafana-7bf5764d9d-2b2f6                 2/2     Running            0          28h
    istio-citadel-576b9c5bbd-z84z4           1/1     Running            0          28h
    istio-egressgateway-5476bc4656-r4zdv     1/1     Running            0          28h
    istio-galley-7d57b47bb7-lqdxv            1/1     Running            0          28h
    istio-ingressgateway-dbb8f7f46-ct6n5     1/1     Running            0          28h
    istio-pilot-546bf69578-ccg5x             2/2     Running            0          28h
    istio-policy-77fd498655-7pvjw            2/2     Running            0          28h
    istio-sidecar-injector-df45bd899-ctxdt   1/1     Running            0          28h
    istio-telemetry-66f697d6d5-cj28l         2/2     Running            0          28h
    jaeger-896945cbc-7lqrr                   2/2     Running            0          11h
    kiali-78d9c5b87c-snjzh                   1/1     Running            0          22h
    prometheus-6dff867c97-gr2n5              2/2     Running            0          28h
    Copy to Clipboard Toggle word wrap

3.5.7.

3.5.7.1.

3.5.7.2.

  1. $ oc login --username=<NAMEOFUSER> https://<HOSTNAME>:6443
    Copy to Clipboard Toggle word wrap
  2. $ oc new-project <your-project>
    Copy to Clipboard Toggle word wrap
  3. apiVersion: maistra.io/v1
    kind: ServiceMeshMemberRoll
    metadata:
      name: default
      namespace: istio-system
    spec:
      members:
        # a list of projects joined into the service mesh
        - your-project-name
        - another-project-name
    Copy to Clipboard Toggle word wrap

  4. $ oc create -n istio-system -f servicemeshmemberroll-default.yaml
    Copy to Clipboard Toggle word wrap
  5. $ oc get smmr -n istio-system default
    Copy to Clipboard Toggle word wrap

3.5.8.

3.5.8.1.

3.5.8.2.

  1. $ oc edit smmr -n <controlplane-namespace>
    Copy to Clipboard Toggle word wrap
  2. apiVersion: maistra.io/v1
    kind: ServiceMeshMemberRoll
    metadata:
      name: default
      namespace: istio-system #control plane project
    spec:
      members:
        # a list of projects joined into the service mesh
        - your-project-name
        - another-project-name
    Copy to Clipboard Toggle word wrap

3.5.9.

3.5.9.1.

$ oc patch deployment/<deployment> -p '{"spec":{"template":{"metadata":{"annotations":{"kubectl.kubernetes.io/restartedAt": "'`date -Iseconds`'"}}}}}'
Copy to Clipboard Toggle word wrap

3.5.10.

3.6.

주의

3.6.1.

3.6.1.1.

apiVersion: maistra.io/v1
kind: ServiceMeshControlPlane
spec:
  istio:
    global:
      mtls:
        enabled: true
Copy to Clipboard Toggle word wrap
3.6.1.1.1.

apiVersion: "authentication.istio.io/v1alpha1"
kind: "Policy"
metadata:
  name: default
  namespace: <NAMESPACE>
spec:
  peers:
    - mtls: {}
Copy to Clipboard Toggle word wrap
3.6.1.2.

apiVersion: "networking.istio.io/v1alpha3"
kind: "DestinationRule"
metadata:
  name: "default"
  namespace: <CONTROL_PLANE_NAMESPACE>>
spec:
  host: "*.local"
  trafficPolicy:
    tls:
      mode: ISTIO_MUTUAL
Copy to Clipboard Toggle word wrap
3.6.1.3.

apiVersion: maistra.io/v1
kind: ServiceMeshControlPlane
spec:
  istio:
    global:
      tls:
        minProtocolVersion: TLSv1_2
        maxProtocolVersion: TLSv1_3
Copy to Clipboard Toggle word wrap

Expand
표 3.3.
  

3.6.2.

참고

3.6.3.

3.6.3.1.

  1. $ oc create secret generic cacerts -n istio-system --from-file=<path>/ca-cert.pem \
        --from-file=<path>/ca-key.pem --from-file=<path>/root-cert.pem \
        --from-file=<path>/cert-chain.pem
    Copy to Clipboard Toggle word wrap
  2. apiVersion: maistra.io/v1
    kind: ServiceMeshControlPlane
    spec:
      istio:
        global:
          mtls:
            enabled: true
        security:
          selfSigned: false
    Copy to Clipboard Toggle word wrap
  3. $ oc delete secret istio.default
    Copy to Clipboard Toggle word wrap
3.6.3.2.

  1. $ RATINGSPOD=`oc get pods -l app=ratings -o jsonpath='{.items[0].metadata.name}'`
    Copy to Clipboard Toggle word wrap
  2. $ oc exec -it $RATINGSPOD -c istio-proxy -- /bin/cat /etc/certs/root-cert.pem > /tmp/pod-root-cert.pem
    Copy to Clipboard Toggle word wrap

    $ oc exec -it $RATINGSPOD -c istio-proxy -- /bin/cat /etc/certs/cert-chain.pem > /tmp/pod-cert-chain.pem
    Copy to Clipboard Toggle word wrap

  3. $ openssl x509 -in <path>/root-cert.pem -text -noout > /tmp/root-cert.crt.txt
    Copy to Clipboard Toggle word wrap
    $ openssl x509 -in /tmp/pod-root-cert.pem -text -noout > /tmp/pod-root-cert.crt.txt
    Copy to Clipboard Toggle word wrap
    $ diff /tmp/root-cert.crt.txt /tmp/pod-root-cert.crt.txt
    Copy to Clipboard Toggle word wrap

  4. $ sed '0,/^-----END CERTIFICATE-----/d' /tmp/pod-cert-chain.pem > /tmp/pod-cert-chain-ca.pem
    Copy to Clipboard Toggle word wrap
    $ openssl x509 -in <path>/ca-cert.pem -text -noout > /tmp/ca-cert.crt.txt
    Copy to Clipboard Toggle word wrap
    $ openssl x509 -in /tmp/pod-cert-chain-ca.pem -text -noout > /tmp/pod-cert-chain-ca.crt.txt
    Copy to Clipboard Toggle word wrap
    $ diff /tmp/ca-cert.crt.txt /tmp/pod-cert-chain-ca.crt.txt
    Copy to Clipboard Toggle word wrap

  5. $ head -n 21 /tmp/pod-cert-chain.pem > /tmp/pod-cert-chain-workload.pem
    Copy to Clipboard Toggle word wrap
    $ openssl verify -CAfile <(cat <path>/ca-cert.pem <path>/root-cert.pem) /tmp/pod-cert-chain-workload.pem
    Copy to Clipboard Toggle word wrap

    /tmp/pod-cert-chain-workload.pem: OK
    Copy to Clipboard Toggle word wrap

3.6.3.3.

  1. $ oc delete secret cacerts -n istio-system
    Copy to Clipboard Toggle word wrap
  2. apiVersion: maistra.io/v1
    kind: ServiceMeshControlPlane
    spec:
      istio:
        global:
          mtls:
            enabled: true
        security:
          selfSigned: true
    Copy to Clipboard Toggle word wrap

3.7.

주의

3.7.1.

apiVersion: networking.istio.io/v1alpha3
kind: Gateway
metadata:
  name: ext-host-gwy
spec:
  selector:
    istio: ingressgateway # use istio default controller
  servers:
  - port:
      number: 443
      name: https
      protocol: HTTPS
    hosts:
    - ext-host.example.com
    tls:
      mode: SIMPLE
      serverCertificate: /tmp/tls.crt
      privateKey: /tmp/tls.key
Copy to Clipboard Toggle word wrap

apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
  name: virtual-svc
spec:
  hosts:
  - ext-host.example.com
  gateways:
    - ext-host-gwy
Copy to Clipboard Toggle word wrap

3.7.2.

    1. apiVersion: networking.istio.io/v1alpha3
      kind: Gateway
      metadata:
        name: info-gateway
      spec:
        selector:
          istio: ingressgateway
        servers:
        - port:
            number: 80
            name: http
            protocol: HTTP
          hosts:
          - "*"
      Copy to Clipboard Toggle word wrap

    2. $ oc apply -f gateway.yaml
      Copy to Clipboard Toggle word wrap
    1. apiVersion: networking.istio.io/v1alpha3
      kind: VirtualService
      metadata:
        name: info
      spec:
        hosts:
        - "*"
        gateways:
        - info-gateway
        http:
        - match:
          - uri:
              exact: /productpage
          - uri:
              prefix: /static
          - uri:
              exact: /login
          - uri:
              exact: /logout
          - uri:
              prefix: /api/v1/products
          route:
          - destination:
              host: productpage
              port:
                number: 9080
      Copy to Clipboard Toggle word wrap

    2. $ oc apply -f vs.yaml
      Copy to Clipboard Toggle word wrap
    1. export GATEWAY_URL=$(oc -n istio-system get route istio-ingressgateway -o jsonpath='{.spec.host}')
      Copy to Clipboard Toggle word wrap
    2. export TARGET_PORT=$(oc -n istio-system get route istio-ingressgateway -o jsonpath='{.spec.port.targetPort}')
      Copy to Clipboard Toggle word wrap
    3. curl -s -I "$GATEWAY_URL/productpage"
      Copy to Clipboard Toggle word wrap

3.7.3.

3.7.3.1.

$ oc get svc istio-ingressgateway -n istio-system
Copy to Clipboard Toggle word wrap

3.7.3.1.1.

  1. $ export INGRESS_HOST=$(oc -n istio-system get service istio-ingressgateway -o jsonpath='{.status.loadBalancer.ingress[0].ip}')
    Copy to Clipboard Toggle word wrap
  2. $ export INGRESS_PORT=$(oc -n istio-system get service istio-ingressgateway -o jsonpath='{.spec.ports[?(@.name=="http2")].port}')
    Copy to Clipboard Toggle word wrap
  3. $ export SECURE_INGRESS_PORT=$(oc -n istio-system get service istio-ingressgateway -o jsonpath='{.spec.ports[?(@.name=="https")].port}')
    Copy to Clipboard Toggle word wrap
  4. $ export TCP_INGRESS_PORT=$(kubectl -n istio-system get service istio-ingressgateway -o jsonpath='{.spec.ports[?(@.name=="tcp")].port}')
    Copy to Clipboard Toggle word wrap
참고

$ export INGRESS_HOST=$(oc -n istio-system get service istio-ingressgateway -o jsonpath='{.status.loadBalancer.ingress[0].hostname}')
Copy to Clipboard Toggle word wrap
3.7.3.1.2.

  1. $ export INGRESS_PORT=$(oc -n istio-system get service istio-ingressgateway -o jsonpath='{.spec.ports[?(@.name=="http2")].nodePort}')
    Copy to Clipboard Toggle word wrap
  2. $ export SECURE_INGRESS_PORT=$(oc -n istio-system get service istio-ingressgateway -o jsonpath='{.spec.ports[?(@.name=="https")].nodePort}')
    Copy to Clipboard Toggle word wrap
  3. $ export TCP_INGRESS_PORT=$(kubectl -n istio-system get service istio-ingressgateway -o jsonpath='{.spec.ports[?(@.name=="tcp")].nodePort}')
    Copy to Clipboard Toggle word wrap

3.7.4.

3.7.4.1.

spec:
  istio:
    gateways:
     istio-egressgateway:
       autoscaleEnabled: false
       autoscaleMin: 1
       autoscaleMax: 5
     istio-ingressgateway:
       autoscaleEnabled: false
       autoscaleMin: 1
       autoscaleMax: 5
       ior_enabled: true
Copy to Clipboard Toggle word wrap
3.7.4.2.

apiVersion: networking.istio.io/v1alpha3
kind: Gateway
metadata:
  name: gateway1
spec:
  selector:
    istio: ingressgateway
  servers:
  - port:
      number: 80
      name: http
      protocol: HTTP
    hosts:
    - www.info.com
    - info.example.com
Copy to Clipboard Toggle word wrap

$ oc -n <control_plane_namespace> get routes
Copy to Clipboard Toggle word wrap

NAME           HOST/PORT             PATH  SERVICES               PORT  TERMINATION   WILDCARD
gateway1-lvlfn info.example.com        istio-ingressgateway   <all>               None
gateway1-scqhv www.info.com            istio-ingressgateway   <all>               None
Copy to Clipboard Toggle word wrap

3.7.5.

참고

apiVersion: networking.istio.io/v1alpha3
kind: ServiceEntry
metadata:
  name: svc-entry
spec:
  hosts:
  - ext-svc.example.com
  ports:
  - number: 443
    name: https
    protocol: HTTPS
  location: MESH_EXTERNAL
  resolution: DNS
Copy to Clipboard Toggle word wrap

apiVersion: networking.istio.io/v1alpha3
kind: DestinationRule
metadata:
  name: ext-res-dr
spec:
  host: ext-svc.example.com
  trafficPolicy:
    tls:
      mode: MUTUAL
      clientCertificate: /etc/certs/myclientcert.pem
      privateKey: /etc/certs/client_private_key.pem
      caCertificates: /etc/certs/rootcacerts.pem
Copy to Clipboard Toggle word wrap

3.7.6.

3.7.6.1.

  1. apiVersion: networking.istio.io/v1alpha3
    kind: VirtualService
    metadata:
      name: reviews
    spec:
      hosts:
      - reviews
      http:
      - match:
        - headers:
            end-user:
              exact: jason
        route:
        - destination:
            host: reviews
            subset: v2
      - route:
        - destination:
            host: reviews
            subset: v3
    Copy to Clipboard Toggle word wrap

  2. $ oc apply -f <VirtualService.yaml>
    Copy to Clipboard Toggle word wrap
3.7.6.2.
Expand
  
spec:
  hosts:
Copy to Clipboard Toggle word wrap

spec:
  http:
  - match:
Copy to Clipboard Toggle word wrap

spec:
  http:
  - match:
    - destination:
Copy to Clipboard Toggle word wrap

3.7.7.

apiVersion: networking.istio.io/v1alpha3
kind: DestinationRule
metadata:
  name: my-destination-rule
spec:
  host: my-svc
  trafficPolicy:
    loadBalancer:
      simple: RANDOM
  subsets:
  - name: v1
    labels:
      version: v1
  - name: v2
    labels:
      version: v2
    trafficPolicy:
      loadBalancer:
        simple: ROUND_ROBIN
  - name: v3
    labels:
      version: v3
Copy to Clipboard Toggle word wrap

3.7.8.

3.7.8.1.

  1. $ oc apply -f https://raw.githubusercontent.com/Maistra/istio/maistra-2.6/samples/info/networking/virtual-service-all-v1.yaml
    Copy to Clipboard Toggle word wrap
  2. $ oc get virtualservices -o yaml
    Copy to Clipboard Toggle word wrap

3.7.8.2.

  1. export GATEWAY_URL=$(oc -n istio-system get route istio-ingressgateway -o jsonpath='{.spec.host}')
    Copy to Clipboard Toggle word wrap
  2. echo "http://$GATEWAY_URL/productpage"
    Copy to Clipboard Toggle word wrap

3.7.8.3.

  1. $ oc apply -f https://raw.githubusercontent.com/Maistra/istio/maistra-2.6/samples/info/networking/virtual-service-reviews-test-v2.yaml
    Copy to Clipboard Toggle word wrap
  2. $ oc get virtualservice reviews -o yaml
    Copy to Clipboard Toggle word wrap

3.8.

주의

3.8.1.

3.8.2.

3.8.2.1.

  1. $ oc create configmap --from-file=<templates-directory> smcp-templates -n openshift-operators
    Copy to Clipboard Toggle word wrap
  2. $ oc get clusterserviceversion -n openshift-operators | grep 'Service Mesh'
    Copy to Clipboard Toggle word wrap

    maistra.v1.0.0            Red Hat OpenShift Service Mesh   1.0.0                Succeeded
    Copy to Clipboard Toggle word wrap

  3. $ oc edit clusterserviceversion -n openshift-operators maistra.v1.0.0
    Copy to Clipboard Toggle word wrap
  4. deployments:
      - name: istio-operator
        spec:
          template:
            spec:
              containers:
                volumeMounts:
                  - name: discovery-cache
                    mountPath: /home/istio-operator/.kube/cache/discovery
                  - name: smcp-templates
                    mountPath: /usr/local/share/istio-operator/templates/
              volumes:
                - name: discovery-cache
                  emptyDir:
                    medium: Memory
                - name: smcp-templates
                  configMap:
                    name: smcp-templates
    ...
    Copy to Clipboard Toggle word wrap
  5. apiVersion: maistra.io/v1
    kind: ServiceMeshControlPlane
    metadata:
      name: minimal-install
    spec:
      template: default
    Copy to Clipboard Toggle word wrap

3.8.3.

  1. $ oc get deployment -n <namespace>
    Copy to Clipboard Toggle word wrap

    oc get deployment -n info ratings-v1 -o yaml
    Copy to Clipboard Toggle word wrap
  2. apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: ratings-v1
      namespace: info
      labels:
        app: ratings
        version: v1
    spec:
      template:
        metadata:
          labels:
            sidecar.istio.io/inject: 'true'
    Copy to Clipboard Toggle word wrap

    참고

  3. $ oc apply -n <namespace> -f deployment.yaml
    Copy to Clipboard Toggle word wrap

    $ oc apply -n info -f deployment-ratings-v1.yaml
    Copy to Clipboard Toggle word wrap
  4. $ oc get deployment -n <namespace> <deploymentName> -o yaml
    Copy to Clipboard Toggle word wrap

    $ oc get deployment -n info ratings-v1 -o yaml
    Copy to Clipboard Toggle word wrap

3.8.4.

apiVersion: apps/v1
kind: Deployment
metadata:
  name: resource
spec:
  replicas: 7
  selector:
    matchLabels:
      app: resource
  template:
    metadata:
      annotations:
        sidecar.maistra.io/proxyEnv: "{ \"maistra_test_env\": \"env_value\", \"maistra_test_env_2\": \"env_value_2\" }"
Copy to Clipboard Toggle word wrap

주의

3.8.5.

참고

  1. $ oc get cm -n istio-system istio -o jsonpath='{.data.mesh}' | grep disablePolicyChecks
    Copy to Clipboard Toggle word wrap
  2. $ oc edit cm -n istio-system istio
    Copy to Clipboard Toggle word wrap
3.8.5.1.

3.8.6.

3.8.6.1.

참고

참고

    • $ oc new-project info
      Copy to Clipboard Toggle word wrap
    1. apiVersion: maistra.io/v1
      kind: ServiceMeshMemberRoll
      metadata:
        name: default
      spec:
        members:
        - info
      Copy to Clipboard Toggle word wrap

    2. $ oc create -n istio-system -f servicemeshmemberroll-default.yaml
      Copy to Clipboard Toggle word wrap
  1. $ oc get smmr -n istio-system -o wide
    Copy to Clipboard Toggle word wrap

    NAME      READY   STATUS       AGE   MEMBERS
    default   1/1     Configured   70s   ["info"]
    Copy to Clipboard Toggle word wrap
  2. $ oc apply -n info -f https://raw.githubusercontent.com/Maistra/istio/maistra-2.6/samples/bookinfo/platform/kube/bookinfo.yaml
    Copy to Clipboard Toggle word wrap

    service/details created
    serviceaccount/info-details created
    deployment.apps/details-v1 created
    service/ratings created
    serviceaccount/info-ratings created
    deployment.apps/ratings-v1 created
    service/reviews created
    serviceaccount/info-reviews created
    deployment.apps/reviews-v1 created
    deployment.apps/reviews-v2 created
    deployment.apps/reviews-v3 created
    service/productpage created
    serviceaccount/info-productpage created
    deployment.apps/productpage-v1 created
    Copy to Clipboard Toggle word wrap
  3. $ oc apply -n info -f https://raw.githubusercontent.com/Maistra/istio/maistra-2.6/samples/bookinfo/networking/bookinfo-gateway.yaml
    Copy to Clipboard Toggle word wrap

    gateway.networking.istio.io/info-gateway created
    virtualservice.networking.istio.io/info created
    Copy to Clipboard Toggle word wrap
  4. $ export GATEWAY_URL=$(oc -n istio-system get route istio-ingressgateway -o jsonpath='{.spec.host}')
    Copy to Clipboard Toggle word wrap
3.8.6.2.

    • $ oc apply -n info -f https://raw.githubusercontent.com/Maistra/istio/maistra-2.6/samples/bookinfo/networking/destination-rule-all.yaml
      Copy to Clipboard Toggle word wrap
    • $ oc apply -n info -f https://raw.githubusercontent.com/Maistra/istio/maistra-2.6/samples/bookinfo/networking/destination-rule-all-mtls.yaml
      Copy to Clipboard Toggle word wrap

      destinationrule.networking.istio.io/productpage created
      destinationrule.networking.istio.io/reviews created
      destinationrule.networking.istio.io/ratings created
      destinationrule.networking.istio.io/details created
      Copy to Clipboard Toggle word wrap
3.8.6.3.

  1. $ oc get pods -n info
    Copy to Clipboard Toggle word wrap

    NAME                              READY   STATUS    RESTARTS   AGE
    details-v1-55b869668-jh7hb        2/2     Running   0          12m
    productpage-v1-6fc77ff794-nsl8r   2/2     Running   0          12m
    ratings-v1-7d7d8d8b56-55scn       2/2     Running   0          12m
    reviews-v1-868597db96-bdxgq       2/2     Running   0          12m
    reviews-v2-5b64f47978-cvssp       2/2     Running   0          12m
    reviews-v3-6dfd49b55b-vcwpf       2/2     Running   0          12m
    Copy to Clipboard Toggle word wrap
  2. echo "http://$GATEWAY_URL/productpage"
    Copy to Clipboard Toggle word wrap
3.8.6.4.

3.8.6.4.1.

    • $ oc delete project info
      Copy to Clipboard Toggle word wrap
3.8.6.4.2.

    • $ oc -n istio-system patch --type='json' smmr default -p '[{"op": "remove", "path": "/spec/members", "value":["'"info"'"]}]'
      Copy to Clipboard Toggle word wrap

3.8.7.

  1. $ curl "http://$GATEWAY_URL/productpage"
    Copy to Clipboard Toggle word wrap

    • $ export JAEGER_URL=$(oc get route -n istio-system jaeger -o jsonpath='{.spec.host}')
      Copy to Clipboard Toggle word wrap
      1. echo $JAEGER_URL
        Copy to Clipboard Toggle word wrap

3.9.

주의

3.9.1.

3.9.2.

3.9.2.1.

  • $ curl "http://$GATEWAY_URL/productpage"
    Copy to Clipboard Toggle word wrap

3.10.

주의

3.10.1.

3.10.2.

참고

중요

apiVersion: maistra.io/v1
kind: ServiceMeshControlPlane
metadata:
  name: basic-install
spec:

  istio:
    global:
      proxy:
        resources:
          requests:
            cpu: 100m
            memory: 128Mi
          limits:
            cpu: 500m
            memory: 128Mi

    gateways:
      istio-egressgateway:
        autoscaleEnabled: false
      istio-ingressgateway:
        autoscaleEnabled: false
        ior_enabled: false

    mixer:
      policy:
        autoscaleEnabled: false

      telemetry:
        autoscaleEnabled: false
        resources:
          requests:
            cpu: 100m
            memory: 1G
          limits:
            cpu: 500m
            memory: 4G

    pilot:
      autoscaleEnabled: false
      traceSampling: 100

    kiali:
      enabled: true

    grafana:
      enabled: true

    tracing:
      enabled: true
      jaeger:
        template: all-in-one
Copy to Clipboard Toggle word wrap

3.10.3.

중요

3.10.3.1.

참고

  istio:
    global:
      tag: 1.1.0
      hub: registry.redhat.io/openshift-service-mesh/
      proxy:
        resources:
          requests:
            cpu: 10m
            memory: 128Mi
          limits:
      mtls:
        enabled: false
      disablePolicyChecks: true
      policyCheckFailOpen: false
      imagePullSecrets:
        - MyPullSecret
Copy to Clipboard Toggle word wrap

Expand
표 3.4.
    

Expand
표 3.5.
     

 

 

3.10.3.2.

  gateways:
    egress:
      enabled: true
      runtime:
        deployment:
          autoScaling:
            enabled: true
            maxReplicas: 5
            minReplicas: 1
    enabled: true
    ingress:
      enabled: true
      runtime:
        deployment:
          autoScaling:
            enabled: true
            maxReplicas: 5
            minReplicas: 1
Copy to Clipboard Toggle word wrap

Expand
표 3.6.
    

3.10.3.3.

mixer:
  enabled: true
  policy:
    autoscaleEnabled: false
  telemetry:
    autoscaleEnabled: false
    resources:
    requests:
      cpu: 10m
      memory: 128Mi
      limits:
Copy to Clipboard Toggle word wrap

Expand
표 3.7.
    

Expand
표 3.8.
     

 

 

3.10.3.4.

spec:
  runtime:
    components:
      pilot:
        deployment:
          autoScaling:
            enabled: true
            minReplicas: 1
            maxReplicas: 5
            targetCPUUtilizationPercentage: 85
        pod:
          tolerations:
          - key: node.kubernetes.io/unreachable
            operator: Exists
            effect: NoExecute
            tolerationSeconds: 60
          affinity:
            podAntiAffinity:
              requiredDuringScheduling:
              - key: istio
                topologyKey: kubernetes.io/hostname
                operator: In
                values:
                - pilot
        container:
          resources:
            limits:
              cpu: 100m
              memory: 128M
Copy to Clipboard Toggle word wrap

Expand
표 3.9.
    

3.10.4.

apiVersion: maistra.io/v1
kind: ServiceMeshControlPlane
spec:
    kiali:
      enabled: true
      dashboard:
        viewOnlyMode: false
      ingress:
        enabled: true
Copy to Clipboard Toggle word wrap

Expand
표 3.10.
    
enabled
Copy to Clipboard Toggle word wrap

dashboard
   viewOnlyMode
Copy to Clipboard Toggle word wrap

ingress
   enabled
Copy to Clipboard Toggle word wrap

3.10.4.1.

spec:
  kiali:
    enabled: true
    dashboard:
      viewOnlyMode: false
      grafanaURL:  "https://grafana-istio-system.127.0.0.1.nip.io"
    ingress:
      enabled: true
Copy to Clipboard Toggle word wrap

3.10.4.2.

spec:
  kiali:
    enabled: true
    dashboard:
      viewOnlyMode: false
      jaegerURL: "http://jaeger-query-istio-system.127.0.0.1.nip.io"
    ingress:
      enabled: true
Copy to Clipboard Toggle word wrap

3.10.5.

apiVersion: maistra.io/v1
kind: ServiceMeshControlPlane
spec:
  version: v1.1
  istio:
    tracing:
      enabled: true
      jaeger:
        template: all-in-one
Copy to Clipboard Toggle word wrap

Expand
표 3.11.
    
tracing:
   enabled:
Copy to Clipboard Toggle word wrap

jaeger:
   template:
Copy to Clipboard Toggle word wrap

참고

3.10.5.1.

apiVersion: maistra.io/v1
kind: ServiceMeshControlPlane
spec:
  istio:
    tracing:
    enabled: true
    ingress:
      enabled: true
    jaeger:
      template: production-elasticsearch
      elasticsearch:
        nodeCount: 3
        redundancyPolicy:
        resources:
          requests:
            cpu: "1"
            memory: "16Gi"
          limits:
            cpu: "1"
            memory: "16Gi"
Copy to Clipboard Toggle word wrap

Expand
표 3.12.
     
tracing:
  enabled:
Copy to Clipboard Toggle word wrap

 
ingress:
  enabled:
Copy to Clipboard Toggle word wrap

 
jaeger:
   template:
Copy to Clipboard Toggle word wrap

 
elasticsearch:
  nodeCount:
Copy to Clipboard Toggle word wrap

requests:
  cpu:
Copy to Clipboard Toggle word wrap

requests:
  memory:
Copy to Clipboard Toggle word wrap

limits:
  cpu:
Copy to Clipboard Toggle word wrap

 

limits:
  memory:
Copy to Clipboard Toggle word wrap

 

Copy to Clipboard Toggle word wrap

3.10.5.2.

  • $ oc get route -n istio-system external-jaeger
    Copy to Clipboard Toggle word wrap

    NAME                   HOST/PORT                                     PATH   SERVICES               [...]
    external-jaeger        external-jaeger-istio-system.apps.test        external-jaeger-query  [...]
    Copy to Clipboard Toggle word wrap

apiVersion: jaegertracing.io/v1
kind: "Jaeger"
metadata:
  name: "external-jaeger"
  # Deploy to the Control Plane Namespace
  namespace: istio-system
spec:
  # Set Up Authentication
  ingress:
    enabled: true
    security: oauth-proxy
    openshift:
      # This limits user access to the Jaeger instance to users who have access
      # to the control plane namespace. Make sure to set the correct namespace here
      sar: '{"namespace": "istio-system", "resource": "pods", "verb": "get"}'
      htpasswdFile: /etc/proxy/htpasswd/auth

  volumeMounts:
  - name: secret-htpasswd
    mountPath: /etc/proxy/htpasswd
  volumes:
  - name: secret-htpasswd
    secret:
      secretName: htpasswd
Copy to Clipboard Toggle word wrap

apiVersion: maistra.io/v1
kind: ServiceMeshControlPlane
metadata:
  name: external-jaeger
  namespace: istio-system
spec:
  version: v1.1
  istio:
    tracing:
      # Disable Jaeger deployment by service mesh operator
      enabled: false
    global:
      tracer:
        zipkin:
          # Set Endpoint for Trace Collection
          address: external-jaeger-collector.istio-system.svc.cluster.local:9411
    kiali:
      # Set Jaeger dashboard URL
      dashboard:
        jaegerURL: https://external-jaeger-istio-system.apps.test
      # Set Endpoint for Trace Querying
      jaegerInClusterURL: external-jaeger-query.istio-system.svc.cluster.local
Copy to Clipboard Toggle word wrap

3.10.5.3.

apiVersion: maistra.io/v1
kind: ServiceMeshControlPlane
spec:
  istio:
    tracing:
    enabled: true
    ingress:
      enabled: true
    jaeger:
      template: production-elasticsearch
      elasticsearch:
        nodeCount: 3
        redundancyPolicy:
        resources:
          requests:
            cpu: "1"
            memory: "16Gi"
          limits:
            cpu: "1"
            memory: "16Gi"
Copy to Clipboard Toggle word wrap

Expand
표 3.13.
     
tracing:
  enabled:
Copy to Clipboard Toggle word wrap

 
ingress:
  enabled:
Copy to Clipboard Toggle word wrap

 
jaeger:
   template:
Copy to Clipboard Toggle word wrap

 
elasticsearch:
  nodeCount:
Copy to Clipboard Toggle word wrap

requests:
  cpu:
Copy to Clipboard Toggle word wrap

requests:
  memory:
Copy to Clipboard Toggle word wrap

limits:
  cpu:
Copy to Clipboard Toggle word wrap

 

limits:
  memory:
Copy to Clipboard Toggle word wrap

 

Copy to Clipboard Toggle word wrap

3.10.5.4.

  apiVersion: jaegertracing.io/v1
  kind: Jaeger
  spec:
    strategy: production
    storage:
      type: elasticsearch
      esIndexCleaner:
        enabled: false
        numberOfDays: 7
        schedule: "55 23 * * *"
Copy to Clipboard Toggle word wrap
Expand
표 3.14.
   

3.10.6.

apiVersion: maistra.io/v2
kind: ServiceMeshControlPlane
metadata:
  name: basic
spec:
  addons:
    3Scale:
      enabled: false
      PARAM_THREESCALE_LISTEN_ADDR: 3333
      PARAM_THREESCALE_LOG_LEVEL: info
      PARAM_THREESCALE_LOG_JSON: true
      PARAM_THREESCALE_LOG_GRPC: false
      PARAM_THREESCALE_REPORT_METRICS: true
      PARAM_THREESCALE_METRICS_PORT: 8080
      PARAM_THREESCALE_CACHE_TTL_SECONDS: 300
      PARAM_THREESCALE_CACHE_REFRESH_SECONDS: 180
      PARAM_THREESCALE_CACHE_ENTRIES_MAX: 1000
      PARAM_THREESCALE_CACHE_REFRESH_RETRIES: 1
      PARAM_THREESCALE_ALLOW_INSECURE_CONN: false
      PARAM_THREESCALE_CLIENT_TIMEOUT_SECONDS: 10
      PARAM_THREESCALE_GRPC_CONN_MAX_SECONDS: 60
      PARAM_USE_CACHED_BACKEND: false
      PARAM_BACKEND_CACHE_FLUSH_INTERVAL_SECONDS: 15
      PARAM_BACKEND_CACHE_POLICY_FAIL_CLOSED: true
# ...
Copy to Clipboard Toggle word wrap

Expand
표 3.15.
    

3.11.

주의

3.11.1.

참고

참고

  1.   apiVersion: "config.istio.io/v1alpha2"
      kind: handler
      metadata:
       name: threescale
      spec:
       adapter: threescale
       params:
         system_url: "https://<organization>-admin.3scale.net/"
         access_token: "<ACCESS_TOKEN>"
       connection:
         address: "threescale-istio-adapter:3333"
    Copy to Clipboard Toggle word wrap

  2.   apiVersion: "config.istio.io/v1alpha2"
      kind: rule
      metadata:
        name: threescale
      spec:
        match: destination.labels["service-mesh.3scale.net"] == "true"
        actions:
          - handler: threescale.handler
            instances:
              - threescale-authorization.instance
    Copy to Clipboard Toggle word wrap

3.11.1.1.

Expand
표 3.16.
    

 

 

 

 

 

 

 
3.11.1.1.1.
참고

  • $ 3scale-config-gen --name=admin-credentials --url="https://<organization>-admin.3scale.net:443" --token="[redacted]"
    Copy to Clipboard Toggle word wrap
  • $ 3scale-config-gen --url="https://<organization>-admin.3scale.net" --name="my-unique-id" --service="123456789" --token="[redacted]"
    Copy to Clipboard Toggle word wrap
3.11.1.2.
참고
  1. $ export NS="istio-system" URL="https://replaceme-admin.3scale.net:443" NAME="name" TOKEN="token"
    oc exec -n ${NS} $(oc get po -n ${NS} -o jsonpath='{.items[?(@.metadata.labels.app=="3scale-istio-adapter")].metadata.name}') \
    -it -- ./3scale-config-gen \
    --url ${URL} --name ${NAME} --token ${TOKEN} -n ${NS}
    Copy to Clipboard Toggle word wrap
  2. 참고

    $ export CREDENTIALS_NAME="replace-me"
    export SERVICE_ID="replace-me"
    export DEPLOYMENT="replace-me"
    patch="$(oc get deployment "${DEPLOYMENT}"
    patch="$(oc get deployment "${DEPLOYMENT}" --template='{"spec":{"template":{"metadata":{"labels":{ {{ range $k,$v := .spec.template.metadata.labels }}"{{ $k }}":"{{ $v }}",{{ end }}"service-mesh.3scale.net/service-id":"'"${SERVICE_ID}"'","service-mesh.3scale.net/credentials":"'"${CREDENTIALS_NAME}"'"}}}}}' )"
    oc patch deployment "${DEPLOYMENT}" --patch ''"${patch}"''
    Copy to Clipboard Toggle word wrap
3.11.1.3.

3.11.2.

참고

3.11.3.

3.11.4.

3.11.4.1.

참고

3.11.4.1.1.

apiVersion: "config.istio.io/v1alpha2"
kind: instance
metadata:
  name: threescale-authorization
  namespace: istio-system
spec:
  template: authorization
  params:
    subject:
      user: request.query_params["user_key"] | request.headers["user-key"] | ""
    action:
      path: request.url_path
      method: request.method | "get"
Copy to Clipboard Toggle word wrap

3.11.4.1.2.

apiVersion: "config.istio.io/v1alpha2"
kind: instance
metadata:
  name: threescale-authorization
  namespace: istio-system
spec:
  template: authorization
  params:
    subject:
        app_id: request.query_params["app_id"] | request.headers["app-id"] | ""
        app_key: request.query_params["app_key"] | request.headers["app-key"] | ""
    action:
      path: request.url_path
      method: request.method | "get"
Copy to Clipboard Toggle word wrap

3.11.4.1.3.

apiVersion: "config.istio.io/v1alpha2"
kind: instance
metadata:
  name: threescale-authorization
spec:
  template: threescale-authorization
  params:
    subject:
      properties:
        app_key: request.query_params["app_key"] | request.headers["app-key"] | ""
        client_id: request.auth.claims["azp"] | ""
      action:
        path: request.url_path
        method: request.method | "get"
        service: destination.labels["service-mesh.3scale.net/service-id"] | ""
Copy to Clipboard Toggle word wrap

apiVersion: security.istio.io/v1beta1
kind: RequestAuthentication
metadata:
  name: jwt-example
  namespace: info
spec:
  selector:
    matchLabels:
      app: productpage
  jwtRules:
  - issuer: >-
      http://keycloak-keycloak.34.242.107.254.nip.io/auth/realms/3scale-keycloak
    jwksUri: >-
      http://keycloak-keycloak.34.242.107.254.nip.io/auth/realms/3scale-keycloak/protocol/openid-connect/certs
Copy to Clipboard Toggle word wrap

3.11.4.1.4.

apiVersion: "config.istio.io/v1alpha2"
kind: instance
metadata:
  name: threescale-authorization
spec:
  template: authorization
  params:
    subject:
      user: request.query_params["user_key"] | request.headers["user-key"] |
      properties:
        app_id: request.query_params["app_id"] | request.headers["app-id"] | ""
        app_key: request.query_params["app_key"] | request.headers["app-key"] | ""
        client_id: request.auth.claims["azp"] | ""
    action:
      path: request.url_path
      method: request.method | "get"
      service: destination.labels["service-mesh.3scale.net/service-id"] | ""
Copy to Clipboard Toggle word wrap

3.11.5.

3.11.6.

  1. $ oc get pods -n istio-system
    Copy to Clipboard Toggle word wrap
  2. $ oc logs istio-system
    Copy to Clipboard Toggle word wrap

3.11.7.

3.12.

주의

3.12.1.

3.12.1.1.

3.12.1.2.

  1. $ oc delete smmr -n istio-system default
    Copy to Clipboard Toggle word wrap
  2. $ oc get smcp -n istio-system
    Copy to Clipboard Toggle word wrap
  3. $ oc delete smcp -n istio-system <name_of_custom_resource>
    Copy to Clipboard Toggle word wrap

3.12.2.

3.12.2.1.

3.12.2.2.

  1. 참고

    $ oc delete validatingwebhookconfiguration/openshift-operators.servicemesh-resources.maistra.io
    Copy to Clipboard Toggle word wrap
    $ oc delete mutatingwebhookconfiguration/openshift-operators.servicemesh-resources.maistra.io
    Copy to Clipboard Toggle word wrap
    $ oc delete -n openshift-operators daemonset/istio-node
    Copy to Clipboard Toggle word wrap
    $ oc delete clusterrole/istio-admin clusterrole/istio-cni clusterrolebinding/istio-cni
    Copy to Clipboard Toggle word wrap
    $ oc delete clusterrole istio-view istio-edit
    Copy to Clipboard Toggle word wrap
    $ oc delete clusterrole jaegers.jaegertracing.io-v1-admin jaegers.jaegertracing.io-v1-crdview jaegers.jaegertracing.io-v1-edit jaegers.jaegertracing.io-v1-view
    Copy to Clipboard Toggle word wrap
    $ oc get crds -o name | grep '.*\.istio\.io' | xargs -r -n 1 oc delete
    Copy to Clipboard Toggle word wrap
    $ oc get crds -o name | grep '.*\.maistra\.io' | xargs -r -n 1 oc delete
    Copy to Clipboard Toggle word wrap
    $ oc get crds -o name | grep '.*\.kiali\.io' | xargs -r -n 1 oc delete
    Copy to Clipboard Toggle word wrap
    $ oc delete crds jaegers.jaegertracing.io
    Copy to Clipboard Toggle word wrap
    $ oc delete svc admission-controller -n <operator-project>
    Copy to Clipboard Toggle word wrap
    $ oc delete project <istio-system-project>
    Copy to Clipboard Toggle word wrap

Legal Notice

Copyright © 2025 Red Hat

OpenShift documentation is licensed under the Apache License 2.0 (https://www.apache.org/licenses/LICENSE-2.0).

Modified versions must remove all Red Hat trademarks.

Portions adapted from https://github.com/kubernetes-incubator/service-catalog/ with modifications by Red Hat.

Red Hat, Red Hat Enterprise Linux, the Red Hat logo, the Shadowman logo, JBoss, OpenShift, Fedora, the Infinity logo, and RHCE are trademarks of Red Hat, Inc., registered in the United States and other countries.

Linux® is the registered trademark of Linus Torvalds in the United States and other countries.

Java® is a registered trademark of Oracle and/or its affiliates.

XFS® is a trademark of Silicon Graphics International Corp. or its subsidiaries in the United States and/or other countries.

MySQL® is a registered trademark of MySQL AB in the United States, the European Union and other countries.

Node.js® is an official trademark of Joyent. Red Hat Software Collections is not formally related to or endorsed by the official Joyent Node.js open source or commercial project.

The OpenStack® Word Mark and OpenStack logo are either registered trademarks/service marks or trademarks/service marks of the OpenStack Foundation, in the United States and other countries and are used with the OpenStack Foundation’s permission. We are not affiliated with, endorsed or sponsored by the OpenStack Foundation, or the OpenStack community.

All other trademarks are the property of their respective owners.

맨 위로 이동
Red Hat logoGithubredditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

Red Hat을 사용하는 고객은 신뢰할 수 있는 콘텐츠가 포함된 제품과 서비스를 통해 혁신하고 목표를 달성할 수 있습니다. 최신 업데이트를 확인하세요.

보다 포괄적 수용을 위한 오픈 소스 용어 교체

Red Hat은 코드, 문서, 웹 속성에서 문제가 있는 언어를 교체하기 위해 최선을 다하고 있습니다. 자세한 내용은 다음을 참조하세요.Red Hat 블로그.

Red Hat 소개

Red Hat은 기업이 핵심 데이터 센터에서 네트워크 에지에 이르기까지 플랫폼과 환경 전반에서 더 쉽게 작업할 수 있도록 강화된 솔루션을 제공합니다.

Theme

© 2025 Red Hat