2장. Service Mesh 1.x


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

주의

2.1.1. 보다 포괄적 수용을 위한 오픈 소스 용어 교체

Red Hat은 코드, 문서, 웹 속성에서 문제가 있는 용어를 교체하기 위해 최선을 다하고 있습니다. 먼저 마스터(master), 슬레이브(slave), 블랙리스트(blacklist), 화이트리스트(whitelist) 등 네 가지 용어를 교체하고 있습니다. 이러한 변경 작업은 작업 범위가 크므로 향후 여러 릴리스에 걸쳐 점차 구현할 예정입니다. 자세한 내용은 CTO Chris Wright의 메시지를 참조하십시오.

2.1.2. Red Hat OpenShift Service Mesh 소개

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

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

오픈 소스 Istio project를 기반으로 하는 Service Mesh는 배포된 서비스 네트워크를 쉽게 구축할 수 있는 방법을 제공하여 검색, 로드 밸런싱, 서비스 간 인증, 실패 복구, 지표 및 모니터링을 지원합니다.

2.1.3. 지원 요청

고객 포털에서 다음을 수행할 수 있습니다.

  • Red Hat 제품과 관련된 기사 및 솔루션에 대한 Red Hat 지식베이스를 검색하거나 살펴볼 수 있습니다.
  • Red Hat 지원에 대한 지원 케이스 제출할 수 있습니다.
  • 다른 제품 설명서에 액세스 가능합니다.

Insights는 문제에 대한 세부 정보 및 문제 해결 방법에 대한 정보를 제공합니다.

지원 사례를 여는 경우 클러스터에 대한 디버깅 정보를 Red Hat 지원에 제공하면 도움이 됩니다.

2.1.3.1. must-gather 툴 정보

  • 리소스 정의
  • 서비스 로그

  • 예를 들면 다음과 같습니다.

    $ oc adm must-gather  --image=registry.redhat.io/container-native-virtualization/cnv-must-gather-rhel8:v4.0
  • 예를 들면 다음과 같습니다.

    $ oc adm must-gather -- /usr/bin/gather_audit_logs
    참고

해당 Pod에 대한 데이터가 수집되어 must-gather.local로 시작하는 새 디렉터리에 저장됩니다. 이 디렉터리는 현재 작업 중인 디렉터리에 생성되어 있습니다.

예를 들면 다음과 같습니다.

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
...

2.1.3.2. 사전 요구 사항

  • cluster-admin 역할의 사용자로 클러스터에 액세스할 수 있어야 합니다.

2.1.3.3. 서비스 메시 데이터 수집 정보

oc adm must-gather CLI 명령을 사용하면 Red Hat OpenShift Service Mesh와 연관된 기능 및 오브젝트를 포함하여 클러스터에 대한 정보를 수집할 수 있습니다.

사전 요구 사항

  • cluster-admin 역할의 사용자로 클러스터에 액세스할 수 있어야 합니다.

  1. must-gather을 사용하여 Red Hat OpenShift Service Mesh 데이터를 수집하려면 Red Hat OpenShift Service Mesh 이미지를 지정해야 합니다.

    $ oc adm must-gather --image=registry.redhat.io/openshift-service-mesh/istio-must-gather-rhel8:2.3
  2. $ oc adm must-gather --image=registry.redhat.io/openshift-service-mesh/istio-must-gather-rhel8:2.3 gather <namespace>

2.1.4. Red Hat OpenShift Service Mesh 지원 구성

다음은 Red Hat OpenShift Service Mesh에 지원되는 구성입니다.

참고

  • 클러스터 외부에 있거나 멀티 클러스터 시나리오에 있는 마이크로 서비스 관리는 지원하지 않습니다.
  • 이 릴리스는 가상 머신과 같은 외부 서비스를 통합하지 않는 구성만 지원합니다.

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

2.1.4.1. Red Hat OpenShift Service Mesh에서 Kiali에 지원되는 구성

  • Kiali Observation Console은 Chrome, Edge, Firefox 또는 Safari 브라우저의 두 가지 최신 버전에서만 지원됩니다.

2.1.4.2. 지원되는 Mixer 어댑터

  • 이 릴리스에서는 다음 Mixer 어댑터만 지원합니다.

    • 3scale Istio 어댑터

2.1.5. 새로운 기능

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

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

2.1.5.1.

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

2.1.5.1.1.
구성 요소버전

Istio

1.4.10

Jaeger

1.30.2

Kiali

1.12.21.1

3scale Istio 어댑터

1.0.0

2.1.5.2.

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

2.1.5.2.1.
구성 요소버전

Istio

1.4.10

Jaeger

1.30.2

Kiali

1.12.20.1

3scale Istio 어댑터

1.0.0

2.1.5.3.

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

2.1.5.3.1.
구성 요소버전

Istio

1.4.10

Jaeger

1.24.0

Kiali

1.12.18

3scale Istio 어댑터

1.0.0

2.1.5.4.

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

2.1.5.4.1.

2.1.5.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:*"]

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

2.1.5.5. Red Hat OpenShift Service Mesh 1.1.17 새 기능

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

2.1.5.6. Red Hat OpenShift Service Mesh 1.1.16 새 기능

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

2.1.5.7. Red Hat OpenShift Service Mesh 1.1.15 새 기능

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

2.1.5.8. Red Hat OpenShift Service Mesh 1.1.14 새 기능

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

중요

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

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

Istio에는 경로 기반 권한 부여 규칙이 사용될 때 여러 슬래시 또는 이스케이프된 슬래시 문자 (%2F` or %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.1.5.8.2. 경로 정규화 구성 업데이트

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

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

표 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.1.5.8.3. 경로 정규화 구성 예

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

  1. 권한 부여 정책을 확인하는 데 사용됩니다.
  2. 백엔드 애플리케이션으로 전달됩니다.
표 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.1.5.8.4. 경로 정규화를 위해 SMCP 구성

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

SMCP v1 pathNormalization

spec:
  global:
    pathNormalization: <option>

2.1.5.9. Red Hat OpenShift Service Mesh 1.1.13 새 기능

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

2.1.5.10. Red Hat OpenShift Service Mesh 1.1.12 새 기능

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

2.1.5.11. Red Hat OpenShift Service Mesh 1.1.11 새 기능

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

2.1.5.12. Red Hat OpenShift Service Mesh 1.1.10 새 기능

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

2.1.5.13. Red Hat OpenShift Service Mesh 1.1.9 새 기능

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

2.1.5.14. Red Hat OpenShift Service Mesh 1.1.8 새 기능

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

2.1.5.15. Red Hat OpenShift Service Mesh 1.1.7 새 기능

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

2.1.5.16. Red Hat OpenShift Service Mesh 1.1.6 새 기능

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

2.1.5.17. Red Hat OpenShift Service Mesh 1.1.5 새 기능

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

또한 이 릴리스에는 암호화 제품군 구성에 대한 지원이 추가되었습니다.

2.1.5.18. Red Hat OpenShift Service Mesh 1.1.4 새 기능

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

참고

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

2.1.5.18.1. CVE-2020-8663에서 필요한 수동 업데이트

CVE-2020-8663: envoy: Resource exhaustion when accepting too many connections에 대한 수정이 다운스트림 연결에 구성 가능한 제한을 추가했습니다. 이 제한에 대한 구성 옵션은 이 취약점을 완화하도록 설정되어야 합니다.

중요

이러한 수동 단계는 Red Hat OpenShift Service Mesh의 1.1 버전을 사용하든 1.0 버전을 사용하든 이 CVE를 완화하는 데 필요합니다.

이 새로운 설정 옵션은 overload.global_downstream_max_connections라고 하며 프록시 runtime 설정으로 구성할 수 있습니다. 수신 게이트웨이에서 제한을 구성하려면 다음 단계를 수행합니다.

프로세스

  1. 다음 텍스트로 bootstrap-override.json이라는 파일을 생성하여 프록시에서 부트스트랩 템플릿을 재정의하고 디스크의 런타임 구성을 로드하도록 적용합니다.

      {
        "runtime": {
          "symlink_root": "/var/lib/istio/envoy/runtime"
        }
      }
  2. bootstrap-override.json 파일에서 시크릿을 생성하여 <SMCPnamespace>를 Service Mesh Control Plane(SMCP)을 생성한 네임스페이스로 바꿉니다.

    $  oc create secret generic -n <SMCPnamespace> gateway-bootstrap --from-file=bootstrap-override.json
  3. SMCP 구성을 업데이트하여 재정의를 활성화합니다.

    업데이트된 SMCP 구성 예 #1

    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

  4. 새 구성 옵션을 설정하려면 overload.global_downstream_max_connections 설정에 필요한 값을 보유한 시크릿을 생성합니다. 다음 예제에서는 값 10000을 사용합니다.

    $  oc create secret generic -n <SMCPnamespace> gateway-settings --from-literal=overload.global_downstream_max_connections=10000
  5. SMCP를 다시 업데이트하여 Envoy가 런타임 구성을 찾고 있는 위치에 시크릿을 다시 마운트합니다.

업데이트된 SMCP 구성 예 #2

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

2.1.5.18.2. Elasticsearch 5에서 Elasticsearch 6으로 업그레이드

Elasticsearch 5에서 Elasticsearch 6으로 업데이트할 때 인증서 문제로 인해 Jaeger 인스턴스를 삭제한 다음 Jaeger 인스턴스를 다시 생성해야 합니다. Jaeger 인스턴스 트리거를 다시 생성하여 새 인증서 세트를 생성합니다. 영구 스토리지를 사용하는 경우, 새 Jaeger 인스턴스의 Jaeger 이름과 네임스페이스가 삭제된 Jaeger 인스턴스와 동일하다면 새 Jaeger 인스턴스에 대해 동일한 볼륨을 마운트할 수 있습니다.

Jaeger가 Red Hat Service Mesh의 일부로 설치된 경우 프로세스

  1. Jaeger 사용자 정의 리소스 파일의 이름을 결정합니다.

    $ oc get jaeger -n istio-system

    다음과 같은 내용이 표시됩니다.

    NAME     AGE
    jaeger   3d21h
  2. 생성된 사용자 정의 리소스 파일을 임시 디렉터리에 복사합니다.

    $ oc get jaeger jaeger -oyaml -n istio-system > /tmp/jaeger-cr.yaml
  3. Jaeger 인스턴스를 삭제합니다.

    $ oc delete jaeger jaeger -n istio-system
  4. 사용자 정의 리소스 파일의 사본에서 Jaeger 인스턴스를 재생성합니다.

    $ oc create -f /tmp/jaeger-cr.yaml -n istio-system
  5. 생성된 사용자 정의 리소스 파일의 사본을 삭제합니다.

    $ rm /tmp/jaeger-cr.yaml

Jaeger가 Red Hat Service Mesh의 일부로 설치되지 않은 경우 프로세스

시작하기 전에 Jaeger 사용자 정의 리소스 파일의 사본을 만듭니다.

  1. 사용자 정의 리소스 파일을 삭제하여 Jaeger 인스턴스를 삭제합니다.

    $ oc delete -f <jaeger-cr-file>

    예를 들면 다음과 같습니다.

    $ oc delete -f jaeger-prod-elasticsearch.yaml
  2. 사용자 정의 리소스 파일의 백업 사본에서 Jaeger 인스턴스를 재생성합니다.

    $ oc create -f <jaeger-cr-file>
  3. Pod가 다시 시작되었는지 확인합니다.

    $ oc get pods -n jaeger-system -w

2.1.5.19. Red Hat OpenShift Service Mesh 1.1.3 새 기능

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

2.1.5.20. Red Hat OpenShift Service Mesh 1.1.2 새 기능

이번 Red Hat OpenShift Service Mesh 릴리스는 보안 취약점을 해결합니다.

2.1.5.21. Red Hat OpenShift Service Mesh 1.1.1 새 기능

이번 Red Hat OpenShift Service Mesh 릴리스는 연결이 중단된 설치를 지원합니다.

2.1.5.22. Red Hat OpenShift Service Mesh 1.1.0 새 기능

이번 Red Hat OpenShift Service Mesh 릴리스에는 Istio 1.4.6 및 Jaeger 1.17.1에 대한 지원이 추가되었습니다.

2.1.5.22.1. 1.0에서 1.1로 수동 업데이트

Red Hat OpenShift Service Mesh 1.0에서 1.1로 업데이트하는 경우 컨트롤 플레인 구성 요소를 새 버전으로 업데이트하기 위해 ServiceMeshControlPlane 리소스를 업데이트해야 합니다.

  1. 웹 콘솔에서 Red Hat OpenShift Service Mesh Operator를 클릭합니다.
  2. 프로젝트 메뉴를 클릭하고 ServiceMeshControlPlane이 목록에서 배포되는 프로젝트를 선택합니다(예: istio-system).
  3. 컨트롤 플레인의 이름을 클릭합니다(예: basic-install).
  4. YAML 을 클릭하고 ServiceMeshControlPlane리소스의 spec:에 버전 필드를 추가합니다. 예를 들어 Red Hat OpenShift Service Mesh 1.1.0으로 업데이트하려면 version: v1.1을 추가합니다.
spec:
  version: v1.1
  ...

version 필드는 설치할 Service Mesh 버전을 지정하고 기본값을 최신 사용 가능한 최신 버전으로 지정합니다.

참고

Red Hat OpenShift Service Mesh v1.0 지원은 2020년 10월에 종료되었습니다. v1.1 또는 v2.0으로 업그레이드해야 합니다.

2.1.6. 더 이상 사용되지 않는 기능

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

2.1.6.1. Red Hat OpenShift Service Mesh 1.1.5의 중단된 기능

다음 사용자 정의 리소스는 릴리스 1.1.5에서 더 이상 사용되지 않으며 릴리스 1.1.12에서 제외되었습니다.

  • Policy - Policy 리소스는 더 이상 사용되지 않으며 향후 릴리스에서는 PeerAuthentication 리소스로 대체됩니다.
  • MeshPolicy - MeshPolicy 리소스는 더 이상 사용되지 않으며 향후 릴리스에서는 PeerAuthentication 리소스로 대체됩니다.
  • v1alpha1 RBAC API -The v1alpha1 RBAC 정책은 v1beta1 AuthorizationPolicy에서 더 이상 사용되지 않습니다. RBAC(Role Based Access Control)는 ServiceRoleServiceRoleBinding 오브젝트를 정의합니다.

    • ServiceRole
    • ServiceRoleBinding
  • RbacConfig - RbacConfig는 Istio RBAC 동작을 제어하기 위해 사용자 정의 리소스 정의를 구현합니다.

    • ClusterRbacConfig(Red Hat OpenShift Service Mesh 버전 1.0 이전)
    • ServiceMeshRbacConfig(Red Hat OpenShift Service Mesh 버전 1.0 이상)
  • Kiali에서는 loginLDAP 전략이 더 이상 사용되지 않습니다. 향후 버전에서는 OpenID 공급자를 사용한 인증을 도입할 예정입니다.

다음 구성 요소는 이 릴리스에서 더 이상 사용되지 않으며 향후 릴리스에서 Istiod 구성 요소로 대체됩니다.

  • Mixer - 액세스 제어 및 사용 정책
  • Pilot - 서비스 검색 및 프록시 구성
  • Citadel - 인증서 생성
  • Galley - 구성 검증 및 배포

2.1.7. 확인된 문제

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

  • 그래프 레이아웃 - 애플리케이션 아키텍처 및 표시할 데이터(그래프 노드 및 상호 작용 수)에 따라 Kiali 그래프의 레이아웃이 다르게 렌더링됩니다. 모든 상황에 적합하게 렌더링되는 단일 레이아웃을 만드는 것이 불가능하지는 않지만 어렵기 때문에 Kiali는 다양한 레이아웃 옵션을 제공합니다. 다른 레이아웃을 선택하려면 그래프 설정 메뉴에서 다른 레이아웃 스키마를 선택할 수 있습니다.
  • 이것은 프레임워크가 콘솔에 포함된 페이지를 표시하는 방법에 문제가 있기 때문입니다.

2.1.7.1. 서비스 메시의 알려진 문제

이는 Red Hat OpenShift Service Mesh에서 알려진 문제입니다.

  • Jaeger/Kiali Operator 업그레이드가 operator 보류로 차단됩니다. Service Mesh 1.0.x가 설치된 Jaeger 또는 Kiali Operator를 업그레이드할 때 Operator 상태가 보류 중으로 표시됩니다.

  • Istio-14743 이 Red Hat OpenShift Service Mesh 릴리스의 기반이 되는 Istio 버전의 제한으로 인해 현재 Service Mesh와 호환되지 않는 여러 애플리케이션이 있습니다. 자세한 내용은 링크 커뮤니티 관련 문제를 참조하십시오.
  • MAISTRA-858 Istio 1.1.x와 관련된 더 이상 사용하지 않는 옵션 및 구성을 설명하는 다음과 같은 Envoy 로그 메시지가 예상됩니다.

    • [2019-06-03 07:03:28.943][19][warning][misc] [external/envoy/source/common/protobuf/utility.cc:129] Using deprecated option 'envoy.api.v2.listener.Filter.config'. 이 구성은 곧 Envoy에서 삭제될 예정입니다.
    • [2019-08-12 22:12:59.001][13][warning][misc] [external/envoy/source/common/protobuf/utility.cc:174] Using deprecated option 'envoy.api.v2.Listener.use_original_dst' from file lds.proto. 이 구성은 곧 Envoy에서 삭제될 예정입니다.
  • MAISTRA-806 제거된 Istio Operator pod로 인해 메시 및 CNI가 배포되지 않습니다.

  • MAISTRA-681 컨트롤 플레인에 네임스페이스가 많은 경우 성능 문제가 발생할 수 있습니다.
  • MAISTRA-465 Maistra Operator가 Operator 지표에 대한 서비스를 생성하지 못합니다.
  • MAISTRA-453 새 프로젝트를 생성하고 즉시 pod를 배포하면 사이드카 삽입이 발생하지 않습니다. pod가 생성되기 전에 Operator에서 maistra.io/member-of를 추가하지 못하므로 사이드카 삽입을 수행하려면 pod를 삭제하고 다시 생성해야 합니다.
  • MAISTRA-158 동일한 호스트 이름을 참조하는 여러 게이트웨이를 적용하면 모든 게이트웨이가 작동을 중지합니다.

2.1.7.2. Kiali의 확인된 문제

참고

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

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

  • KIALI-2206 처음으로 Kiali 콘솔에 액세스했을 때 Kiali에 대해 캐시된 브라우저 데이터가 없는 경우 Kiali 서비스 상세 정보 페이지의 Metrics 탭에 있는 ‘Grafana에서 보기’ 링크가 잘못된 위치로 리디렉션됩니다. 이 문제가 발생하는 유일한 상황은 Kiali에 처음 액세스하는 경우입니다.
  • KIALI-507 Kiali는 Internet Explorer 11을 지원하지 않습니다. 기본 프레임워크가 Internet Explorer를 지원하지 않기 때문입니다. Kiali 콘솔에 액세스하려면 Chrome, Edge, Firefox 또는 Safari 브라우저의 두 가지 최신 버전 중 하나를 사용하십시오.

2.1.7.3.

  • Apache Spark가 지원되지 않습니다.

  • TRACING-2057 Kafka API가 Strimzi Kafka Operator 0.23.0을 지원하도록 v1beta2로 업데이트되었습니다. 그러나 이 API 버전은 AMQ Streams 1.6.3에서 지원되지 않습니다. 다음 환경의 경우 Jaeger 서비스가 업그레이드되지 않으며 새 Jaeger 서비스를 생성하거나 기존 Jaeger 서비스를 수정할 수 없습니다.

    • Jaeger Operator 채널: 1.17.x stable 또는 1.20.x stable
    • AMQ Streams Operator 채널: amq-streams-1.6.x

      이 문제를 해결하려면 AMQ Streams Operator의 서브스크립션 채널을 amq-streams-1.7.x 또는 stable로 전환합니다.

2.1.8. 해결된 문제

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

2.1.8.1. 서비스 메시의 수정된 문제

  • MAISTRA-2371 listerInformer에서 tombstones를 처리합니다. 업데이트된 캐시 코드베이스는 네임스페이스 캐시에서 집계된 캐시로 이벤트를 변환할 때 tombstones를 처리하지 않아 go 루틴에서 패닉이 발생했습니다.
  • OSSM-93 IstioConfigList는 두 개 이상의 이름으로 필터링할 수 없습니다.
  • OSSM-92 VS/DR YAML 편집 페이지에서 저장되지 않은 변경 사항을 취소해도 변경 사항이 취소되지 않습니다.
  • OSSM-90 추적은 서비스 세부 정보 페이지에서 사용할 수 없습니다.
  • MAISTRA-1649 헤드리스 서비스가 다른 네임스페이스에서 충돌합니다. 다른 네임스페이스에 헤드리스 서비스를 배포할 때 끝점 구성이 병합되고 잘못된 Envoy 구성이 사이드카로 푸시됩니다.
  • MAISTRA-1541 컨트롤러가 소유자 참조에 설정되지 않은 경우 kubernetesenv에서 패닉이 발생합니다. pod에 컨트롤러를 지정하지 않는 ownerReference가 있는 경우 kubernetesenv cache.go 코드 내에서 패닉이 발생할 수 있습니다.
  • MAISTRA-1352 컨트롤 플레인 설치의 Cert-manager CRD(Custom Resource Definitions)가 이 릴리스와 향후 릴리스에서 제외됩니다. Red Hat OpenShift Service Mesh를 이미 설치한 경우 cert-manager가 사용되지 않는 경우 CRD를 수동으로 제거해야 합니다.
  • MAISTRA-1001 HTTP/2 연결을 종료하면 istio-proxy에서 세그먼트 오류가 발생할 수 있습니다.
  • MAISTRA-862 Galley는 여러 네임스페이스를 삭제하고 다시 만든 뒤, 감시를 중단하고 다른 구성 요소에 대한 구성 제공을 중단했습니다.
  • MAISTRA-833 Pilot은 여러 네임스페이스를 삭제하고 다시 만든 뒤, 구성 전달을 중단했습니다.
  • MAISTRA-684 istio-operator의 기본 Jaeger 버전은 1.12.0이며, 이는 Red Hat OpenShift Service Mesh 0.12.TechPreview에 제공된 Jaeger 버전 1.13.1과 일치하지 않습니다.
  • MAISTRA-622 Maistra 0.12.0/TP12에서는 허용 모드가 작동하지 않습니다. 사용자에게는 일반 텍스트 모드 또는 상호 TLS 모드를 사용하는 옵션이 있지만 허용되지는 않습니다.
  • MAISTRA-572 Jaeger는 Kiali와 함께 사용할 수 없습니다. 이 릴리스에서 Jaeger는 OAuth 프록시를 사용하도록 구성되어 있지만, 브라우저를 통해서만 작동하도록 구성되어 서비스 액세스를 허용하지 않습니다. Kiali는 Jaeger 끝점과 올바르게 통신할 수 없으며 Jaeger가 비활성화된 것으로 간주합니다. 또한 TRACING-591을 참조하십시오.
  • MAISTRA-357 AWS의 OpenShift 4 Beta에서는 기본적으로 포트 80 이외의 포트에서 수신 게이트웨이를 통해 TCP 또는 HTTPS 서비스에 액세스할 수 없습니다. AWS 로드 밸런서에는 서비스 끝점의 포트 80이 활성화되어 있는지 확인하는 상태 점검 기능이 있습니다. 포트 80에서 서비스를 실행하지 않으면 로드 밸런서 상태 점검에 실패합니다.
  • MAISTRA-348 AWS의 OpenShift 4 Beta는 80 또는 443 이외의 포트에서 수신 게이트웨이 트래픽을 지원하지 않습니다. 80 또는 443 이외의 포트 번호로 TCP 트래픽을 처리하도록 수신 게이트웨이를 구성하려면, 이 문제를 해결하기 위해 OpenShift 라우터 대신 AWS 로드 밸런서에서 제공하는 서비스 호스트 이름을 사용해야 합니다.
  • MAISTRA-193 citadel에 대해 상태 확인이 활성화되면 예기치 않은 콘솔 정보 메시지가 표시됩니다.
  • ServiceMeshControlPlane 리소스를 업데이트하려면 토글 제어를 클릭하는 대신 YAML 콘텐츠를 직접 편집하거나 명령줄에서 리소스를 업데이트합니다.

2.1.8.2. Kiali의 수정된 문제

  • KIALI-3239 Kiali Operator Pod가 "Evicted" 상태로 실패한 경우 Kiali Operator가 배포되지 않습니다. 해결방법은 Evicted pod를 삭제하고 Kiali Operator를 재배포하는 것입니다.
  • KIALI-3118 ServiceMeshMemberRoll을 변경(예: 프로젝트 추가 또는 삭제)한 후 Kiali pod가 다시 시작되며, Kiali pod가 다시 시작되는 동안 그래프 페이지에 오류가 표시됩니다.
  • KIALI-3096 서비스 메시에서 런타임 지표가 실패합니다. 서비스 메시와 Prometheus 사이에 OAuth 필터가 있으며 액세스 권한이 부여되기 전에 전달자 토큰을 Prometheus에 전달해야 합니다. Kiali는 Prometheus 서버와 통신할 때 이 토큰을 사용하도록 업데이트되었지만 현재 애플리케이션 지표에 403 오류가 발생하고 있습니다.
  • KIALI-3070 이 버그는 기본 대시보드가 아닌 사용자 정의 대시보드에만 영향을 미칩니다. 지표 설정에서 레이블을 선택하고 페이지를 새로 고침하면 선택 사항이 메뉴에는 유지하지만 차트에 표시되지 않습니다.
  • KIALI-2686 컨트롤 플레인에 네임스페이스가 많은 경우 성능 문제가 발생할 수 있습니다.

2.1.8.3.

  • {"level":"warn","ts":1642438880.918793,"caller":"channelz/logging.go:62","msg":"[core]grpc: Server.Serve failed to create ServerTransport: connection error: desc = \"transport: http2Server.HandleStreams received bogus greeting from client: \\\"\\\\x16\\\\x03\\\\x01\\\\x02\\\\x00\\\\x01\\\\x00\\\\x01\\\\xfc\\\\x03\\\\x03vw\\\\x1a\\\\xc9T\\\\xe7\\\\xdaCj\\\\xb7\\\\x8dK\\\\xa6\\\"\"","system":"grpc","grpc_log":true}

  • TRACING-2009 Jaeger Operator가 Strimzi Kafka Operator 0.23.0에 대한 지원을 포함하도록 업데이트되었습니다.
  • TRACING-1907 애플리케이션 네임스페이스에서 구성 맵이 누락되어 Jaeger 에이전트 사이드카 삽입이 실패했습니다. 잘못된 OwnerReference 필드 설정으로 인해 구성 맵이 자동으로 삭제되었으며 결과적으로 애플리케이션 Pod가 "ContainerCreating" 단계를 통과하지 않았습니다. 잘못된 설정이 제거되었습니다.
  • TRACING-1725 TRACING-1631에 대한 후속 조치입니다. 동일한 이름을 사용하지만 다른 네임스페이스 내에 Jaeger 프로덕션 인스턴스가 여러 개인 경우 Elasticsearch 인증서가 올바르게 조정되는지 확인하기 위한 추가 수정 사항입니다. BZ-1918920도 참조하십시오.
  • TRACING-1631 동일한 이름을 사용하지만 다른 네임스페이스 내의 여러 Jaeger 프로덕션 인스턴스로, Elasticsearch 인증서 문제를 발생시킵니다. 여러 서비스 메시가 설치되면 모든 Jaeger Elasticsearch 인스턴스에 개별 시크릿 대신 동일한 Elasticsearch 시크릿이 있어 OpenShift Elasticsearch Operator가 모든 Elasticsearch 클러스터와 통신할 수 없습니다.
  • TRACING-1300 Istio 사이드카를 사용할 때 에이전트와 수집기 간의 연결에 실패했습니다. Jaeger Operator 업데이트는 Jaeger 사이드카 에이전트와 Jaeger 수집기 간의 TLS 통신을 기본적으로 활성화했습니다.
  • TRACING-1208 Jaeger UI에 액세스할 때 인증 “500 Internal Error”입니다. OAuth를 사용하여 UI를 인증할 때 oauth-proxy 사이드카가 additionalTrustBundle로 설치할 때 정의된 사용자 정의 CA 번들을 신뢰하지 않기 때문에 500 오류가 발생합니다.
  • TRACING-1166 현재 연결이 끊긴 환경에서 Jaeger 스트리밍 전략을 사용할 수 없습니다. Kafka 클러스터가 프로비저닝 중인 경우 오류가 발생합니다. registry.redhat.io/amq7/amq-streams-kafka-24-rhel7@sha256:f9ceca004f1b7dccb3b82d9a8027961f9fe4104e0ed69752c0bdd8078b4a1076 이미지를 가져올 수 없습니다.
  • TRACING-809 Jaeger Ingester는 Kafka 2.3과 호환되지 않습니다. Jaeger Ingester의 두 개 이상의 인스턴스와 트래픽이 충분한 경우 로그에 지속적으로 리밸런싱 메시지를 생성합니다. 이는 Kafka 2.3.1에서 수정된 Kafka 2.3의 문제의 재발로 인해 발생합니다. 자세한 내용은 Jaegertracing-1819를 참조하십시오.
Red Hat logoGithubRedditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

Red Hat을 사용하는 고객은 신뢰할 수 있는 콘텐츠가 포함된 제품과 서비스를 통해 혁신하고 목표를 달성할 수 있습니다.

보다 포괄적 수용을 위한 오픈 소스 용어 교체

Red Hat은 코드, 문서, 웹 속성에서 문제가 있는 언어를 교체하기 위해 최선을 다하고 있습니다. 자세한 내용은 다음을 참조하세요.Red Hat 블로그.

Red Hat 소개

Red Hat은 기업이 핵심 데이터 센터에서 네트워크 에지에 이르기까지 플랫폼과 환경 전반에서 더 쉽게 작업할 수 있도록 강화된 솔루션을 제공합니다.

© 2024 Red Hat, Inc.