2.10. 사용자 정의 리소스

주의

더 이상 지원되지 않는 Red Hat OpenShift Service Mesh 릴리스에 대한 문서를 보고 있습니다.

서비스 메시 버전 1.0 및 1.1 컨트롤 플레인은 더 이상 지원되지 않습니다. 서비스 메시 컨트롤 플레인 업그레이드에 대한 자세한 내용은 서비스 메시 업그레이드를 참조하십시오.

특정 Red Hat OpenShift Service Mesh 릴리스의 지원 상태에 대한 자세한 내용은 제품 라이프사이클 페이지를 참조하십시오.

기본 서비스 메시 사용자 정의 리소스를 수정하거나 새 사용자 정의 리소스를 생성하여 Red Hat OpenShift Service Mesh를 사용자 지정할 수 있습니다.

2.10.1. 사전 요구 사항

2.10.2. Red Hat OpenShift Service Mesh 사용자 정의 리소스

참고

istio-system 프로젝트는 서비스 메시 문서 전체에서 예제로 사용되지만, 필요에 따라 다른 프로젝트를 사용할 수 있습니다.

사용자 지정 리소스를 사용하여 Red Hat OpenShift Service Mesh 프로젝트 또는 클러스터에서 API를 확장할 수 있습니다. 서비스 메시를 배포할 때 프로젝트 매개변수를 변경하기 위해 수정할 수 있는 기본 ServiceMeshControlPlane을 생성합니다.

Service Mesh Operator는 ServiceMeshControlPlane 리소스 유형을 추가하여 API를 확장하며, 이를 통해 프로젝트 내에서 ServiceMeshControlPlane 오브젝트를 생성할 수 있습니다. ServiceMeshControlPlane 오브젝트를 생성하여 Operator에 ServiceMeshControlPlane 오브젝트에 설정한 매개변수로 구성된 Service Mesh Control Plane을 프로젝트에 설치하도록 지시합니다.

이 예제 ServiceMeshControlPlane 정의에는 지원되는 모든 매개변수가 포함되어 있으며 RHEL(Red Hat Enterprise Linux)을 기반으로 하는 Red Hat OpenShift Service Mesh 1.1.18.2 이미지를 배포합니다.

중요

3scale Istio Adapter는 사용자 정의 리소스 파일에 배포 및 구성됩니다. 또한 작동 중인 3scale 계정(SaaS 또는 On-Premises)이 필요합니다.

예: istio-installation.yaml

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

2.10.3. ServiceMeshControlPlane 매개변수

다음 예제에서는 ServiceMeshControlPlane 매개변수의 사용을 보여주고, 표에서는 지원되는 매개변수에 대한 추가 정보를 제공합니다.

중요

CPU, 메모리 및 Pod 수를 포함하여 이러한 매개변수를 사용하여 Red Hat OpenShift Service Mesh에 대해 구성하는 리소스는 OpenShift Container Platform 클러스터의 구성을 기반으로 합니다. 현재 클러스터 구성의 사용 가능한 리소스에 따라 이러한 매개변수를 구성합니다.

2.10.3.1. Istio 글로벌 예

다음 예제는 ServiceMeshControlPlane의 Istio 전역 매개변수와 적절한 값과 함께 사용 가능한 매개변수에 대한 설명을 보여줍니다.

참고

3scale Istio Adapter가 작동하려면 disablePolicyChecksfalse여야 합니다.

전역 매개변수 예

  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

표 2.4. 전역 매개변수

매개변수설명기본값

disablePolicyChecks

이 매개변수는 정책 검사를 활성화/비활성화합니다.

true/false

true

policyCheckFailOpen

이 매개변수는 Mixer 정책 서비스에 도달할 수 없는 경우 트래픽이 Envoy 사이드카를 통과할 수 있는지 여부를 나타냅니다.

true/false

false

tag

Operator가 Istio 이미지를 가져오는 데 사용하는 태그입니다.

유효한 컨테이너 이미지 태그.

1.1.0

hub

Operator가 Istio 이미지를 가져오는 데 사용하는 허브입니다.

유효한 이미지 리포지토리

maistra/ 또는 registry.redhat.io/openshift-service-mesh/

mtls

이 매개변수는 기본적으로 서비스 간에 mTLS(mutual Transport Layer Security)를 활성화/비활성화할지 여부를 제어합니다.

true/false

false

imagePullSecrets

Istio 이미지를 제공하는 레지스트리에 대한 액세스가 안전한 경우, 여기에 imagePullSecret을 나열하십시오.

redhat-registry-pullsecret 또는 quay-pullsecret

없음

이러한 매개 변수는 전역 매개변수의 프록시 하위 집합에 따라 다릅니다.

표 2.5. 프록시 매개변수

유형매개변수설명기본값

requests

cpu

Envoy 프록시에 대해 요청된 CPU 리소스의 양입니다.

사용자 환경 구성에 따라 코어 또는 밀리코어(예: 200m, 0.5, 1)로 지정된 CPU 리소스입니다.

10m

 

memory

Envoy 프록시에 대해 요청된 메모리 양입니다.

사용자 환경 구성에 따라 사용 가능한 바이트 단위 메모리(예: 200Ki, 50Mi, 5Gi)입니다.

128Mi

limits

cpu

Envoy 프록시에 대해 요청된 최대 CPU 리소스 양입니다.

사용자 환경 구성에 따라 코어 또는 밀리코어(예: 200m, 0.5, 1)로 지정된 CPU 리소스입니다.

2000m

 

memory

Envoy 프록시가 사용할 수 있는 최대 메모리 양입니다.

사용자 환경 구성에 따라 사용 가능한 바이트 단위 메모리(예: 200Ki, 50Mi, 5Gi)입니다.

1024Mi

2.10.3.2. Istio 게이트웨이 구성

다음 예제는 ServiceMeshControlPlane의 Istio 게이트웨이 매개변수와 적절한 값과 함께 사용 가능한 매개변수에 대한 설명을 보여줍니다.

게이트웨이 매개변수 예

  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

표 2.6. Istio 게이트웨이 매개변수

매개변수설명기본값

gateways.egress.runtime.deployment.autoScaling.enabled

이 매개변수는 자동 스케일링을 활성화/비활성화합니다.

true/false

true

gateways.egress.runtime.deployment.autoScaling.minReplicas

autoscaleEnabled 설정을 기반으로 송신 게이트웨이에 배포할 최소 pod 수입니다.

사용자 환경 구성에 따라 할당 가능한 유효한 Pod 수입니다.

1

gateways.egress.runtime.deployment.autoScaling.maxReplicas

autoscaleEnabled 설정을 기반으로 송신 게이트웨이에 배포할 최대 pod 수입니다.

사용자 환경 구성에 따라 할당 가능한 유효한 Pod 수입니다.

5

gateways.ingress.runtime.deployment.autoScaling.enabled

이 매개변수는 자동 스케일링을 활성화/비활성화합니다.

true/false

true

gateways.ingress.runtime.deployment.autoScaling.minReplicas

autoscaleEnabled 설정을 기반으로 수신 게이트웨이에 배포할 최소 pod 수입니다.

사용자 환경 구성에 따라 할당 가능한 유효한 Pod 수입니다.

1

gateways.ingress.runtime.deployment.autoScaling.maxReplicas

autoscaleEnabled 설정을 기반으로 수신 게이트웨이에 배포할 최대 pod 수입니다.

사용자 환경 구성에 따라 할당 가능한 유효한 Pod 수입니다.

5

클러스터 관리자는 하위 도메인을 활성화하는 방법에 대한 지침은 와일드카드 경로 사용을 참조할 수 있습니다.

2.10.3.3. Istio Mixer 구성

다음 예제는 ServiceMeshControlPlane의 Mixer 매개변수와 적절한 값과 함께 사용 가능한 매개변수에 대한 설명을 보여줍니다.

Mixer 매개변수 예

mixer:
  enabled: true
  policy:
    autoscaleEnabled: false
  telemetry:
    autoscaleEnabled: false
    resources:
    requests:
      cpu: 10m
      memory: 128Mi
      limits:

표 2.7. Istio Mixer 정책 매개변수

매개변수설명기본값

enabled

이 매개변수는 Mixer를 활성화/비활성화합니다.

true/false

true

autoscaleEnabled

이 매개변수는 자동 스케일링을 활성화/비활성화합니다. 작은 환경에서는 이 값을 비활성화합니다.

true/false

true

autoscaleMin

autoscaleEnabled 설정을 기반으로 배포할 최소 pod 수입니다.

사용자 환경 구성에 따라 할당 가능한 유효한 Pod 수입니다.

1

autoscaleMax

autoscaleEnabled 설정을 기반으로 배포할 최대 pod 수입니다.

사용자 환경 구성에 따라 할당 가능한 유효한 Pod 수입니다.

5

표 2.8. Istio Mixer Telemetry 매개변수

유형매개변수설명Default

requests

cpu

Mixer Telemetry에 요청된 CPU 리소스의 백분율입니다.

사용자 환경 구성을 기반으로 하는 밀리코어 단위의 CPU 리소스입니다.

10m

 

memory

Mixer Telemetry에 요청된 메모리 양입니다.

사용자 환경 구성에 따라 사용 가능한 바이트 단위 메모리(예: 200Ki, 50Mi, 5Gi)입니다.

128Mi

limits

cpu

Mixer telemetry가 사용할 수 있는 CPU 리소스의 최대 백분율입니다.

사용자 환경 구성을 기반으로 하는 밀리코어 단위의 CPU 리소스입니다.

4800m

 

memory

Mixer telemetry가 사용할 수 있는 메모리 최대 크기입니다.

사용자 환경 구성에 따라 사용 가능한 바이트 단위 메모리(예: 200Ki, 50Mi, 5Gi)입니다.

4G

2.10.3.4. Istio Pilot 구성

리소스 할당에 대한 일정 또는 제한을 설정하도록 Pilot을 구성할 수 있습니다. 다음 예제는 ServiceMeshControlPlane의 Pilot 매개변수와 적절한 값과 함께 사용 가능한 매개변수에 대한 설명을 보여줍니다.

pilot 매개변수 예

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

표 2.9. Istio Pilot 매개변수

매개변수설명기본값

cpu

Pilot에 요청된 CPU 리소스의 백분율입니다.

사용자 환경 구성을 기반으로 하는 밀리코어 단위의 CPU 리소스입니다.

10m

memory

Pilot에 대해 요청된 메모리 양입니다.

사용자 환경 구성에 따라 사용 가능한 바이트 단위 메모리(예: 200Ki, 50Mi, 5Gi)입니다.

128Mi

autoscaleEnabled

이 매개변수는 자동 스케일링을 활성화/비활성화합니다. 작은 환경에서는 이 값을 비활성화합니다.

true/false

true

traceSampling

이 값은 임의의 샘플링이 발생하는 빈도를 제어합니다. 참고: 개발 또는 테스트의 경우 증가.

유효한 백분율입니다.

1.0

2.10.4. Kiali 구성

Service Mesh Operator에서 ServiceMeshControlPlane을 생성할 때 Kiali 리소스도 처리합니다. 그런 다음 Kiali Operator는 Kiali 인스턴스를 생성할 때 이 오브젝트를 사용합니다.

ServiceMeshControlPlane에 지정된 기본 Kiali 매개변수는 다음과 같습니다.

Kiali 매개변수 예

apiVersion: maistra.io/v1
kind: ServiceMeshControlPlane
spec:
    kiali:
      enabled: true
      dashboard:
        viewOnlyMode: false
      ingress:
        enabled: true

표 2.10. Kiali 매개변수

매개변수설명기본값
enabled

이 매개변수는 Kiali를 활성화/비활성화합니다. Kiali는 기본적으로 활성화되어 있습니다.

true/false

true

dashboard
   viewOnlyMode

이 매개변수는 Kiali 콘솔에 대해 보기 전용 모드를 활성화/비활성화합니다. 보기 전용 모드가 활성화되면 콘솔을 사용하여 서비스 메시를 변경할 수 없습니다.

true/false

false

ingress
   enabled

이 매개변수는 Kiali에 대해 수신을 활성화/비활성화합니다.

true/false

true

2.10.4.1. Grafana에 대한 Kiali 설정

Kiali 및 Grafana를 Red Hat OpenShift Service Mesh의 일부로 설치할 때 Operator는 기본적으로 다음을 구성합니다.

  • Grafana가 Kiali의 외부 서비스로 활성화됨
  • Kiali 콘솔에 대한 Grafana 인증
  • Kiali 콘솔의 Grafana URL

Kiali는 Grafana URL을 자동으로 감지할 수 있습니다. 그러나 Kiali에서 쉽게 자동 감지할 수 없는 사용자 지정 Grafana 설치가 있는 경우 ServiceMeshControlPlane 리소스에서 URL 값을 업데이트해야 합니다.

추가 Grafana 매개변수

spec:
  kiali:
    enabled: true
    dashboard:
      viewOnlyMode: false
      grafanaURL:  "https://grafana-istio-system.127.0.0.1.nip.io"
    ingress:
      enabled: true

2.10.4.2. Jaeger에 대한 Kiali 설정

Kiali 및 Jaeger를 Red Hat OpenShift Service Mesh의 일부로 설치할 때 Operator는 기본적으로 다음을 구성합니다.

  • Jaeger가 Kiali의 외부 서비스로 활성화됨
  • Kiali 콘솔에 대한 Jaeger 인증
  • Kiali 콘솔의 Jaeger URL

Kiali는 Jaeger URL을 자동으로 감지할 수 있습니다. 그러나 Kiali에서 쉽게 자동 감지할 수 없는 사용자 지정 Jaeger 설치가 있는 경우 ServiceMeshControlPlane 리소스에서 URL 값을 업데이트해야 합니다.

추가 Jaeger 매개변수

spec:
  kiali:
    enabled: true
    dashboard:
      viewOnlyMode: false
      jaegerURL: "http://jaeger-query-istio-system.127.0.0.1.nip.io"
    ingress:
      enabled: true

2.10.5. Jaeger 구성

Service Mesh Operator가 ServiceMeshControlPlane 리소스를 생성할 때 분산 추적을 위한 리소스도 생성할 수 있습니다. 서비스 메시는 분산 추적을 위해 Jaeger를 사용합니다.

다음 두 가지 방법 중 하나로 Jaeger 설정을 지정할 수 있습니다.

  • ServiceMeshControlPlane 리소스에서 Jaeger를 구성합니다. 이 방법에는 몇 가지 제한 사항이 있습니다.
  • 사용자 지정 Jaeger 리소스에서 Jaeger를 구성한 다음 ServiceMeshControlPlane 리소스에서 Jaeger 인스턴스를 참조합니다. name 값과 일치하는 Jaeger 리소스가 있으면 컨트롤 플레인에서 기존 설치를 사용합니다. 이 방법을 사용하면 Jaeger 설정을 완전히 사용자 지정할 수 있습니다.

ServiceMeshControlPlane에 지정된 기본 Jaeger 매개변수는 다음과 같습니다.

기본 all-in-one Jaeger 매개변수

apiVersion: maistra.io/v1
kind: ServiceMeshControlPlane
spec:
  version: v1.1
  istio:
    tracing:
      enabled: true
      jaeger:
        template: all-in-one

표 2.11. Jaeger 매개변수

매개변수설명기본값
tracing:
   enabled:

이 매개변수는 Service Mesh Operator에 의한 설치 및 추적을 활성화/비활성화합니다. Jaeger 설치는 기본적으로 활성화되어 있습니다. 기존 Jaeger 배포를 사용하려면 이 값을 false로 설정합니다.

true/false

true

jaeger:
   template:

이 매개변수는 사용할 Jaeger 배포 전략을 지정합니다.

  • all-in-one - 개발, 테스트, 시연, 개념 증명용.
  • production-elasticsearch - 프로덕션용.

all-in-one

참고

ServiceMeshControlPlane 리소스의 기본 템플릿은 메모리 내 스토리지를 사용하는 all-in-one 배포 전략입니다. 프로덕션의 경우 지원되는 유일한 스토리지 옵션은 Elasticsearch이므로, 프로덕션 환경에서 서비스 메시를 배포할 때 production-elasticsearch 템플릿을 요청하도록 ServiceMeshControlPlane을 구성해야 합니다.

2.10.5.1. Elasticsearch 구성

기본 Jaeger 배포 전략에서는 최소한의 리소스를 사용하여 설치를 완료할 수 있도록 all-in-one 템플릿을 사용합니다. 하지만 all-in-one 템플릿은 메모리 내 스토리지를 사용하므로 개발, 데모 또는 테스트 목적으로만 권장되며 프로덕션 환경에 사용해서는 안 됩니다.

프로덕션 환경에서 서비스 메시와 Jaeger를 배포하는 경우, 템플릿을 Jaeger의 스토리지 요건에 Elasticsearch를 사용하는 production-elasticsearch 템플릿으로 변경해야 합니다.

Elasticsearch는 메모리를 많이 사용하는 애플리케이션입니다. 기본 OpenShift Container Platform 설치에 지정된 초기 노드 세트는 Elasticsearch 클러스터를 지원하기에 충분히 크지 않을 수 있습니다. 사용 사례와 OpenShift Container Platform 설치에 요청한 리소스가 일치하도록 기본 Elasticsearch 구성을 수정해야 합니다. 유효한 CPU 및 메모리값으로 리소스 블록을 수정하여 각 구성 요소의 CPU 및 메모리 제한을 모두 조정할 수 있습니다. 권장 메모리 양, 또는 그 이상으로 실행하려는 경우 클러스터에 추가 노드를 추가해야 합니다. OpenShift Container Platform 설치에 요청된 리소스를 초과하지 않는지 확인합니다.

Elasticsearch를 사용하는 기본 "production" Jaeger 매개변수

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"

표 2.12. Elasticsearch 매개변수

매개변수설명기본값
tracing:
  enabled:

이 매개변수는 서비스 메시에서 추적을 활성화/비활성화합니다. Jaeger는 기본적으로 설치되어 있습니다.

true/false

true

 
ingress:
  enabled:

이 매개변수는 Jaeger에 대해 수신을 활성화/비활성화합니다.

true/false

true

 
jaeger:
   template:

이 매개변수는 사용할 Jaeger 배포 전략을 지정합니다.

all-in-one/production-elasticsearch

all-in-one

 
elasticsearch:
  nodeCount:

생성할 Elasticsearch 노드 수입니다.

정수 값입니다.

1

개념 증명 = 1, 최소 배포 = 3

requests:
  cpu:

사용자 환경 구성에 따른 요청에 대한 중앙 처리 단위 수입니다.

코어 또는 밀리코어(예: 200m, 0.5, 1)에 지정되어 있습니다.

1Gi

개념 증명 = 500m, 최소 배포 = 1

requests:
  memory:

환경 구성에 따른 요청에 사용 가능한 메모리입니다.

바이트로 지정됩니다(예: 200Ki, 50Mi, 5Gi).

500m

개념 증명 = 1Gi, 최소 배포 = 16Gi*

limits:
  cpu:

사용자 환경 구성에 따른 중앙 처리 장치 수에 대한 제한입니다.

코어 또는 밀리코어(예: 200m, 0.5, 1)에 지정되어 있습니다.

 

개념 증명 = 500m, 최소 배포 = 1

limits:
  memory:

사용자 환경 구성에 따라 사용 가능한 메모리 제한입니다.

바이트로 지정됩니다(예: 200Ki, 50Mi, 5Gi).

 

개념 증명 = 1Gi, 최소 배포 = 16Gi*

각 Elasticsearch 노드는 더 낮은 메모리 설정으로 작동할 수 있지만 프로덕션 배포에는 권장되지 않습니다. 프로덕션 용도의 경우 기본적으로 각 Pod에 할당된 16Gi 미만이 있어야 하지만 Pod당 최대 64Gi까지 할당할 수도 있습니다.

절차

  1. cluster-admin 역할의 사용자로 OpenShift Container Platform 웹 콘솔에 로그인합니다.
  2. Operators설치된 Operator로 이동합니다.
  3. Red Hat OpenShift Service Mesh Operator를 클릭합니다.
  4. Istio Service Mesh Control Plane 탭을 클릭합니다.
  5. 컨트롤 플레인 파일의 이름을 클릭합니다(예: basic-install).
  6. YAML 탭을 클릭합니다.
  7. Jaeger 매개변수를 편집하여, 기본 all-in-one 템플릿을 사용 사례에 맞게 수정한 production-elasticsearch 템플릿의 매개변수로 바꿉니다. 들여쓰기가 올바른지 확인합니다.
  8. 저장을 클릭합니다.
  9. 새로 고침을 클릭합니다. OpenShift Container Platform은 Jaeger를 재배포하고 지정된 매개변수를 기반으로 Elasticsearch 리소스를 생성합니다.

2.10.5.2. 기존 Jaeger 인스턴스에 연결

SMCP가 기존 Jaeger 인스턴스에 연결하려면 다음이 true여야 합니다.

  • Jaeger 인스턴스는 컨트롤 플레인과 동일한 네임스페이스에 배포됩니다(예: istio-system 네임스페이스).
  • 서비스 간에 보안 통신을 활성화하려면, Jaeger 인스턴스에 대한 통신을 보호하는 oauth-proxy를 활성화하고 Kiali와 통신할 수 있도록 시크릿이 Jaeger 인스턴스에 마운트되었는지 확인해야 합니다.
  • 사용자 지정 또는 이미 존재하는 Jaeger 인스턴스를 사용하려면 spec.istio.tracing.enabled를 “false”로 설정하여 Jaeger 인스턴스 배포를 비활성화합니다.
  • spec.istio.global.tracer.zipkin.address를 jaeger-collector 서비스의 호스트 이름 및 포트로 설정하여 정확한 jaeger-collector 끝점을 Mixer에 제공합니다. 서비스의 호스트 이름은 일반적으로 <jaeger-instance-name>-collector.<namespace>.svc.cluster.local입니다.
  • spec.istio.kiali.jaegerInClusterURL을 jaeger-query 서비스의 호스트 이름으로 설정하여 추적 수집에 올바른 Jaeger-query 끝점을 Kiali에 제공합니다. 기본적으로 포트는 443을 사용하므로 일반적으로 필요하지 않습니다. 서비스의 호스트 이름은 일반적으로 <jaeger-instance-name>-query.<namespace>.svc.cluster.local입니다.
  • Kiali 콘솔을 통해 Jaeger에 액세스할 수 있도록 Kiali에 Jaeger 인스턴스의 대시보드 URL을 제공하십시오. Jaeger Operator가 생성한 OpenShift 경로에서 URL을 검색할 수 있습니다. Jaeger 리소스를 external-jaeger라고 하고 istio-system 프로젝트에 있는 경우, 다음 명령을 사용하여 경로를 검색할 수 있습니다.

    $ oc get route -n istio-system external-jaeger

    출력 예

    NAME                   HOST/PORT                                     PATH   SERVICES               [...]
    external-jaeger        external-jaeger-istio-system.apps.test        external-jaeger-query  [...]

    HOST/PORT 아래의 값은 Jaeger 대시보드의 외부 액세스 URL입니다.

Jaeger 리소스 예

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

다음 ServiceMeshControlPlane 예는 Jaeger Operator 및 Jaeger 리소스 예제를 사용하여 Jaeger를 배포했다고 가정합니다.

외부 Jaeger가 있는 ServiceMeshControlPlane

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

2.10.5.3. Elasticsearch 구성

기본 Jaeger 배포 전략에서는 최소한의 리소스를 사용하여 설치를 완료할 수 있도록 all-in-one 템플릿을 사용합니다. 하지만 all-in-one 템플릿은 메모리 내 스토리지를 사용하므로 개발, 데모 또는 테스트 목적으로만 권장되며 프로덕션 환경에 사용해서는 안 됩니다.

프로덕션 환경에서 서비스 메시와 Jaeger를 배포하는 경우, 템플릿을 Jaeger의 스토리지 요건에 Elasticsearch를 사용하는 production-elasticsearch 템플릿으로 변경해야 합니다.

Elasticsearch는 메모리를 많이 사용하는 애플리케이션입니다. 기본 OpenShift Container Platform 설치에 지정된 초기 노드 세트는 Elasticsearch 클러스터를 지원하기에 충분히 크지 않을 수 있습니다. 사용 사례와 OpenShift Container Platform 설치에 요청한 리소스가 일치하도록 기본 Elasticsearch 구성을 수정해야 합니다. 유효한 CPU 및 메모리값으로 리소스 블록을 수정하여 각 구성 요소의 CPU 및 메모리 제한을 모두 조정할 수 있습니다. 권장 메모리 양, 또는 그 이상으로 실행하려는 경우 클러스터에 추가 노드를 추가해야 합니다. OpenShift Container Platform 설치에 요청된 리소스를 초과하지 않는지 확인합니다.

Elasticsearch를 사용하는 기본 "production" Jaeger 매개변수

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"

표 2.13. Elasticsearch 매개변수

매개변수설명기본값
tracing:
  enabled:

이 매개변수는 서비스 메시에서 추적을 활성화/비활성화합니다. Jaeger는 기본적으로 설치되어 있습니다.

true/false

true

 
ingress:
  enabled:

이 매개변수는 Jaeger에 대해 수신을 활성화/비활성화합니다.

true/false

true

 
jaeger:
   template:

이 매개변수는 사용할 Jaeger 배포 전략을 지정합니다.

all-in-one/production-elasticsearch

all-in-one

 
elasticsearch:
  nodeCount:

생성할 Elasticsearch 노드 수입니다.

정수 값입니다.

1

개념 증명 = 1, 최소 배포 = 3

requests:
  cpu:

사용자 환경 구성에 따른 요청에 대한 중앙 처리 단위 수입니다.

코어 또는 밀리코어(예: 200m, 0.5, 1)에 지정되어 있습니다.

1Gi

개념 증명 = 500m, 최소 배포 = 1

requests:
  memory:

환경 구성에 따른 요청에 사용 가능한 메모리입니다.

바이트로 지정됩니다(예: 200Ki, 50Mi, 5Gi).

500m

개념 증명 = 1Gi, 최소 배포 = 16Gi*

limits:
  cpu:

사용자 환경 구성에 따른 중앙 처리 장치 수에 대한 제한입니다.

코어 또는 밀리코어(예: 200m, 0.5, 1)에 지정되어 있습니다.

 

개념 증명 = 500m, 최소 배포 = 1

limits:
  memory:

사용자 환경 구성에 따라 사용 가능한 메모리 제한입니다.

바이트로 지정됩니다(예: 200Ki, 50Mi, 5Gi).

 

개념 증명 = 1Gi, 최소 배포 = 16Gi*

각 Elasticsearch 노드는 더 낮은 메모리 설정으로 작동할 수 있지만 프로덕션 배포에는 권장되지 않습니다. 프로덕션 용도의 경우 기본적으로 각 Pod에 할당된 16Gi 미만이 있어야 하지만 Pod당 최대 64Gi까지 할당할 수도 있습니다.

절차

  1. cluster-admin 역할의 사용자로 OpenShift Container Platform 웹 콘솔에 로그인합니다.
  2. Operators설치된 Operator로 이동합니다.
  3. Red Hat OpenShift Service Mesh Operator를 클릭합니다.
  4. Istio Service Mesh Control Plane 탭을 클릭합니다.
  5. 컨트롤 플레인 파일의 이름을 클릭합니다(예: basic-install).
  6. YAML 탭을 클릭합니다.
  7. Jaeger 매개변수를 편집하여, 기본 all-in-one 템플릿을 사용 사례에 맞게 수정한 production-elasticsearch 템플릿의 매개변수로 바꿉니다. 들여쓰기가 올바른지 확인합니다.
  8. 저장을 클릭합니다.
  9. 새로 고침을 클릭합니다. OpenShift Container Platform은 Jaeger를 재배포하고 지정된 매개변수를 기반으로 Elasticsearch 리소스를 생성합니다.

2.10.5.4. Elasticsearch 인덱스 정리 작업 구성

Service Mesh Operator가 ServiceMeshControlPlane을 생성할 때 Jaeger에 대한 사용자 정의 리소스(CR)도 생성합니다. 그런 다음 Red Hat OpenShift distributed tracing Platform Operator는 Jaeger 인스턴스를 생성할 때 이 CR을 사용합니다.

Elasticsearch 스토리지를 사용하는 경우 기본적으로 오래된 추적을 정리하는 작업이 생성됩니다. 이 작업에 대한 옵션을 설정하려면 Jaeger 사용자 정의 리소스(CR)를 편집하여 사용 사례에 맞게 사용자 지정할 수 있습니다. 관련 옵션은 아래에 나열되어 있습니다.

  apiVersion: jaegertracing.io/v1
  kind: Jaeger
  spec:
    strategy: production
    storage:
      type: elasticsearch
      esIndexCleaner:
        enabled: false
        numberOfDays: 7
        schedule: "55 23 * * *"

표 2.14. Elasticsearch 인덱스 정리 매개변수

매개변수설명

활성화됨:

true/ false

인덱스 정리 작업을 활성화하거나 비활성화합니다.

numberOfDays:

정수 값

인덱스를 삭제하기 전에 대기하는 날의 수입니다.

schedule:

"55 23 * * *"

실행할 작업의 Cron 표현식

OpenShift Container Platform을 사용한 Elasticsearch 구성에 대한 자세한 내용은 로그 저장소 구성을 참조하십시오.

2.10.6. 3scale 구성

다음 표는 ServiceMeshControlPlane 리소스의 3scale Istio 어댑터에 대한 매개변수를 설명합니다

3scale 매개변수 예

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

표 2.15. 3scale 매개변수

매개변수설명기본값

enabled

3scale 어댑터 사용 여부

true/false

false

PARAM_THREESCALE_LISTEN_ADDR

gRPC 서버의 수신 주소를 설정

유효한 포트 번호

3333

PARAM_THREESCALE_LOG_LEVEL

최소 로그 출력 수준을 설정합니다.

debug, info, warn, error 또는 none

info

PARAM_THREESCALE_LOG_JSON

로그 형식이 JSON인지 여부를 제어

true/false

true

PARAM_THREESCALE_LOG_GRPC

로그에 gRPC 정보가 포함되었는지 여부를 제어

true/false

true

PARAM_THREESCALE_REPORT_METRICS

3scale 시스템 및 백엔드 지표가 수집되어 Prometheus에 보고되는지 제어

true/false

true

PARAM_THREESCALE_METRICS_PORT

3scale /metrics 끝점을 스크랩할 수 있는 포트를 설정

유효한 포트 번호

8080

PARAM_THREESCALE_CACHE_TTL_SECONDS

캐시에서 만료된 항목을 제거하기 전에 대기하는 시간(초)

시간(초)

300

PARAM_THREESCALE_CACHE_REFRESH_SECONDS

캐시 요소를 새로 고침하려고 할 때 만료되기 전 시간

시간(초)

180

PARAM_THREESCALE_CACHE_ENTRIES_MAX

언제든지 캐시에 저장할 수 있는 항목의 최대 수. 캐싱을 비활성화하려면 0으로 설정합니다.

유효한 번호

1000

PARAM_THREESCALE_CACHE_REFRESH_RETRIES

캐시 업데이트 루프 중에 연결할 수 없는 호스트가 재시도되는 횟수

유효한 번호

1

PARAM_THREESCALE_ALLOW_INSECURE_CONN

3scale API를 호출할 때 인증서 확인을 건너뛸 수 있습니다. 이 설정 사용은 권장되지 않습니다.

true/false

false

PARAM_THREESCALE_CLIENT_TIMEOUT_SECONDS

3scale System 및 백엔드에 대한 요청을 종료하기 전 대기하는 시간(초)을 설정합니다.

시간(초)

10

PARAM_THREESCALE_GRPC_CONN_MAX_SECONDS

연결이 닫히기 전에 연결할 수 있는 최대 시간(초)(+/-10% jitter)을 설정합니다.

시간(초)

60

PARAM_USE_CACHE_BACKEND

true인 경우, 권한 부여 요청에 대해 메모리 내 apisonator 캐시를 생성합니다.

true/false

false

PARAM_BACKEND_CACHE_FLUSH_INTERVAL_SECONDS

백엔드 캐시가 활성화된 경우 3scale에 대해 캐시를 플러싱하는 간격(초)을 설정합니다.

시간(초)

15

PARAM_BACKEND_CACHE_POLICY_FAIL_CLOSED

백엔드 캐시가 권한 부여 데이터를 검색할 수 없을 때마다 요청을 거부(닫기)할지, 허용할지(열기) 여부

true/false

true