3.10. 사용자 정의 리소스
더 이상 지원되지 않는 Red Hat OpenShift Service Mesh 릴리스에 대한 문서를 보고 있습니다.
Service Mesh 버전 1.0 및 1.1 컨트롤 플레인은 더 이상 지원되지 않습니다. 서비스 메시 컨트롤 플레인을 업그레이드하는 방법에 대한 자세한 내용은 서비스 메시 업그레이드 를 참조하십시오.
특정 Red Hat OpenShift Service Mesh 릴리스의 지원 상태에 대한 자세한 내용은 제품 라이프사이클 페이지를 참조하십시오.
기본 서비스 메시 사용자 정의 리소스를 수정하거나 새 사용자 정의 리소스를 생성하여 Red Hat OpenShift Service Mesh를 사용자 지정할 수 있습니다.
3.10.1. 사전 요구 사항
-
cluster-admin
역할이 있는 계정. - Red Hat OpenShift Service Mesh 설치 준비 프로세스를 완료했습니다.
- Operator 설치.
3.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
3.10.3. ServiceMeshControlPlane 매개변수
다음 예제에서는 ServiceMeshControlPlane
매개변수의 사용을 보여주고, 표에서는 지원되는 매개변수에 대한 추가 정보를 제공합니다.
CPU, 메모리 및 Pod 수를 포함하여 이러한 매개변수를 사용하여 Red Hat OpenShift Service Mesh에 대해 구성하는 리소스는 OpenShift Container Platform 클러스터 구성을 기반으로 합니다. 현재 클러스터 구성의 사용 가능한 리소스에 따라 이러한 매개변수를 구성합니다.
3.10.3.1. Istio 글로벌 예
다음 예제는 ServiceMeshControlPlane
의 Istio 전역 매개변수와 적절한 값과 함께 사용 가능한 매개변수에 대한 설명을 보여줍니다.
3scale Istio Adapter가 작동하려면 disablePolicyChecks
가 false
여야 합니다.
전역 매개변수 예
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
매개변수 | 설명 | 값 | 기본값 |
---|---|---|---|
| 이 매개변수는 정책 검사를 활성화/비활성화합니다. |
|
|
| 이 매개변수는 Mixer 정책 서비스에 도달할 수 없는 경우 트래픽이 Envoy 사이드카를 통과할 수 있는지 여부를 나타냅니다. |
|
|
| Operator가 Istio 이미지를 가져오는 데 사용하는 태그입니다. | 유효한 컨테이너 이미지 태그. |
|
| Operator가 Istio 이미지를 가져오는 데 사용하는 허브입니다. | 유효한 이미지 리포지토리 |
|
| 이 매개변수는 기본적으로 서비스 간에 mTLS(mutual Transport Layer Security)를 활성화/비활성화할지 여부를 제어합니다. |
|
|
| Istio 이미지를 제공하는 레지스트리에 대한 액세스가 안전한 경우, 여기에 imagePullSecret을 나열하십시오. | redhat-registry-pullsecret 또는 quay-pullsecret | 없음 |
이러한 매개 변수는 전역 매개변수의 프록시 하위 집합에 따라 다릅니다.
유형 | 매개변수 | 설명 | 값 | 기본값 |
---|---|---|---|---|
|
| Envoy 프록시에 대해 요청된 CPU 리소스의 양입니다. | 사용자 환경 구성에 따라 코어 또는 밀리코어(예: 200m, 0.5, 1)로 지정된 CPU 리소스입니다. |
|
| Envoy 프록시에 대해 요청된 메모리 양입니다. | 사용자 환경 구성에 따라 사용 가능한 바이트 단위 메모리(예: 200Ki, 50Mi, 5Gi)입니다. |
| |
|
| Envoy 프록시에 대해 요청된 최대 CPU 리소스 양입니다. | 사용자 환경 구성에 따라 코어 또는 밀리코어(예: 200m, 0.5, 1)로 지정된 CPU 리소스입니다. |
|
| Envoy 프록시가 사용할 수 있는 최대 메모리 양입니다. | 사용자 환경 구성에 따라 사용 가능한 바이트 단위 메모리(예: 200Ki, 50Mi, 5Gi)입니다. |
|
3.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
매개변수 | 설명 | 값 | 기본값 |
---|---|---|---|
| 이 매개변수는 자동 스케일링을 활성화/비활성화합니다. |
|
|
|
| 사용자 환경 구성에 따라 할당 가능한 유효한 Pod 수입니다. |
|
|
| 사용자 환경 구성에 따라 할당 가능한 유효한 Pod 수입니다. |
|
| 이 매개변수는 자동 스케일링을 활성화/비활성화합니다. |
|
|
|
| 사용자 환경 구성에 따라 할당 가능한 유효한 Pod 수입니다. |
|
|
| 사용자 환경 구성에 따라 할당 가능한 유효한 Pod 수입니다. |
|
클러스터 관리자는 하위 도메인을 활성화하는 방법에 대한 지침은 와일드카드 경로 사용을 참조할 수 있습니다.
3.10.3.3. Istio Mixer 구성
다음 예제는 ServiceMeshControlPlane
의 Mixer 매개변수와 적절한 값과 함께 사용 가능한 매개변수에 대한 설명을 보여줍니다.
Mixer 매개변수 예
mixer: enabled: true policy: autoscaleEnabled: false telemetry: autoscaleEnabled: false resources: requests: cpu: 10m memory: 128Mi limits:
매개변수 | 설명 | 값 | 기본값 |
---|---|---|---|
| 이 매개변수는 Mixer를 활성화/비활성화합니다. |
|
|
| 이 매개변수는 자동 스케일링을 활성화/비활성화합니다. 작은 환경에서는 이 값을 비활성화합니다. |
|
|
|
| 사용자 환경 구성에 따라 할당 가능한 유효한 Pod 수입니다. |
|
|
| 사용자 환경 구성에 따라 할당 가능한 유효한 Pod 수입니다. |
|
유형 | 매개변수 | 설명 | 값 | Default |
---|---|---|---|---|
|
| Mixer Telemetry에 요청된 CPU 리소스의 백분율입니다. | 사용자 환경 구성을 기반으로 하는 밀리코어 단위의 CPU 리소스입니다. |
|
| Mixer Telemetry에 요청된 메모리 양입니다. | 사용자 환경 구성에 따라 사용 가능한 바이트 단위 메모리(예: 200Ki, 50Mi, 5Gi)입니다. |
| |
|
| Mixer telemetry가 사용할 수 있는 CPU 리소스의 최대 백분율입니다. | 사용자 환경 구성을 기반으로 하는 밀리코어 단위의 CPU 리소스입니다. |
|
| Mixer telemetry가 사용할 수 있는 메모리 최대 크기입니다. | 사용자 환경 구성에 따라 사용 가능한 바이트 단위 메모리(예: 200Ki, 50Mi, 5Gi)입니다. |
|
3.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
매개변수 | 설명 | 값 | 기본값 |
---|---|---|---|
| Pilot에 요청된 CPU 리소스의 백분율입니다. | 사용자 환경 구성을 기반으로 하는 밀리코어 단위의 CPU 리소스입니다. |
|
| Pilot에 대해 요청된 메모리 양입니다. | 사용자 환경 구성에 따라 사용 가능한 바이트 단위 메모리(예: 200Ki, 50Mi, 5Gi)입니다. |
|
| 이 매개변수는 자동 스케일링을 활성화/비활성화합니다. 작은 환경에서는 이 값을 비활성화합니다. |
|
|
| 이 값은 임의의 샘플링이 발생하는 빈도를 제어합니다. 참고: 개발 또는 테스트를 할 때는 늘리십시오. | 유효한 백분율입니다. |
|
3.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
매개변수 | 설명 | 값 | 기본값 |
---|---|---|---|
enabled | 이 매개변수는 Kiali를 활성화/비활성화합니다. Kiali는 기본적으로 활성화되어 있습니다. |
|
|
dashboard viewOnlyMode | 이 매개변수는 Kiali 콘솔에 대해 보기 전용 모드를 활성화/비활성화합니다. 보기 전용 모드가 활성화되면 콘솔을 사용하여 서비스 메시를 변경할 수 없습니다. |
|
|
ingress enabled | 이 매개변수는 Kiali에 대해 수신을 활성화/비활성화합니다. |
|
|
3.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
3.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
3.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
매개변수 | 설명 | 값 | 기본값 |
---|---|---|---|
tracing: enabled: |
이 매개변수는 Service Mesh Operator에 의한 설치 및 추적을 활성화/비활성화합니다. Jaeger 설치는 기본적으로 활성화되어 있습니다. 기존 Jaeger 배포를 사용하려면 이 값을 |
|
|
jaeger: template: | 이 매개변수는 사용할 Jaeger 배포 전략을 지정합니다. |
|
|
ServiceMeshControlPlane
리소스의 기본 템플릿은 메모리 내 스토리지를 사용하는 all-in-one
배포 전략입니다. 프로덕션의 경우 지원되는 유일한 스토리지 옵션은 Elasticsearch이므로, 프로덕션 환경에서 서비스 메시를 배포할 때 production-elasticsearch
템플릿을 요청하도록 ServiceMeshControlPlane
을 구성해야 합니다.
3.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"
매개변수 | 설명 | 값 | 기본값 | 예 |
---|---|---|---|---|
tracing: enabled: | 이 매개변수는 서비스 메시에서 추적을 활성화/비활성화합니다. Jaeger는 기본적으로 설치되어 있습니다. |
|
| |
ingress: enabled: | 이 매개변수는 Jaeger에 대해 수신을 활성화/비활성화합니다. |
|
| |
jaeger: template: | 이 매개변수는 사용할 Jaeger 배포 전략을 지정합니다. |
|
| |
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까지 할당할 수도 있습니다. |
프로세스
-
cluster-admin
역할의 사용자로 OpenShift Container Platform 웹 콘솔에 로그인합니다. -
Operators
설치된 Operator로 이동합니다. - Red Hat OpenShift Service Mesh Operator를 클릭합니다.
- Istio Service Mesh Control Plane 탭을 클릭합니다.
-
컨트롤 플레인 파일의 이름을 클릭합니다(예:
basic-install)
. - YAML 탭을 클릭합니다.
-
Jaeger 매개변수를 편집하여, 기본
all-in-one
템플릿을 사용 사례에 맞게 수정한production-elasticsearch
템플릿의 매개변수로 바꿉니다. 들여쓰기가 올바른지 확인합니다. - 저장을 클릭합니다.
- 새로 고침을 클릭합니다. OpenShift Container Platform은 Jaeger를 재배포하고 지정된 매개변수를 기반으로 Elasticsearch 리소스를 생성합니다.
3.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
3.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"
매개변수 | 설명 | 값 | 기본값 | 예 |
---|---|---|---|---|
tracing: enabled: | 이 매개변수는 서비스 메시에서 추적을 활성화/비활성화합니다. Jaeger는 기본적으로 설치되어 있습니다. |
|
| |
ingress: enabled: | 이 매개변수는 Jaeger에 대해 수신을 활성화/비활성화합니다. |
|
| |
jaeger: template: | 이 매개변수는 사용할 Jaeger 배포 전략을 지정합니다. |
|
| |
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까지 할당할 수도 있습니다. |
프로세스
-
cluster-admin
역할의 사용자로 OpenShift Container Platform 웹 콘솔에 로그인합니다. -
Operators
설치된 Operator로 이동합니다. - Red Hat OpenShift Service Mesh Operator를 클릭합니다.
- Istio Service Mesh Control Plane 탭을 클릭합니다.
-
컨트롤 플레인 파일의 이름을 클릭합니다(예:
basic-install)
. - YAML 탭을 클릭합니다.
-
Jaeger 매개변수를 편집하여, 기본
all-in-one
템플릿을 사용 사례에 맞게 수정한production-elasticsearch
템플릿의 매개변수로 바꿉니다. 들여쓰기가 올바른지 확인합니다. - 저장을 클릭합니다.
- 새로 고침을 클릭합니다. OpenShift Container Platform은 Jaeger를 재배포하고 지정된 매개변수를 기반으로 Elasticsearch 리소스를 생성합니다.
3.10.5.4. Elasticsearch 인덱스 정리 작업 구성
Service Mesh Operator가 ServiceMeshControlPlane
을 생성할 때 Jaeger에 대한 사용자 정의 리소스(CR)도 생성합니다. Red Hat OpenShift distributed tracing platform(Jaeger) 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 * * *"
매개변수 | 값 | 설명 |
---|---|---|
활성화됨: | true/ false | 인덱스 정리 작업을 활성화하거나 비활성화합니다. |
numberOfDays: | 정수 값 | 인덱스를 삭제하기 전에 대기하는 날의 수입니다. |
schedule: | "55 23 * * *" | 실행할 작업의 Cron 표현식 |
OpenShift Container Platform을 사용하여 Elasticsearch를 구성하는 방법에 대한 자세한 내용은 Elasticsearch 로그 저장소 구성을 참조하십시오.
3.10.6. 3scale 구성
다음 표는 ServiceMeshControlPlane
리소스의 3scale Istio 어댑터에 대한 매개변수를 설명합니다
3scale 매개변수 예
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 # ...
매개변수 | 설명 | 값 | 기본값 |
---|---|---|---|
| 3scale 어댑터 사용 여부 |
|
|
| gRPC 서버의 수신 주소를 설정 | 유효한 포트 번호 |
|
| 최소 로그 출력 수준을 설정합니다. |
|
|
| 로그 형식이 JSON인지 여부를 제어 |
|
|
| 로그에 gRPC 정보가 포함되었는지 여부를 제어 |
|
|
| 3scale 시스템 및 백엔드 지표가 수집되어 Prometheus에 보고되는지 제어 |
|
|
|
3scale | 유효한 포트 번호 |
|
| 캐시에서 만료된 항목을 제거하기 전에 대기하는 시간(초) | 시간(초) |
|
| 캐시 요소를 새로 고침하려고 할 때 만료되기 전 시간 | 시간(초) |
|
|
언제든지 캐시에 저장할 수 있는 항목의 최대 수. 캐싱을 비활성화하려면 | 유효한 번호 |
|
| 캐시 업데이트 루프 중에 연결할 수 없는 호스트가 재시도되는 횟수 | 유효한 번호 |
|
|
|
|
|
| 3scale System 및 백엔드에 대한 요청을 종료하기 전 대기하는 시간(초)을 설정합니다. | 시간(초) |
|
| 연결이 닫히기 전에 연결할 수 있는 최대 시간(초)(+/-10% jitter)을 설정합니다. | 시간(초) | 60 |
| true인 경우, 권한 부여 요청에 대해 메모리 내 apisonator 캐시를 생성합니다. |
|
|
| 백엔드 캐시가 활성화된 경우 3scale에 대해 캐시를 플러싱하는 간격(초)을 설정합니다. | 시간(초) | 15 |
| 백엔드 캐시가 권한 부여 데이터를 검색할 수 없을 때마다 요청을 거부(닫기)할지, 허용할지(열기) 여부 |
|
|