7장. 분산 추적 플랫폼(Jaeger)에서 OpenTelemetry의 Red Hat 빌드로 마이그레이션
애플리케이션에 Red Hat OpenShift distributed tracing Platform(Jaeger)을 이미 사용하고 있는 경우 OpenTelemetry 오픈 소스 프로젝트를 기반으로 하는 OpenTelemetry의 Red Hat 빌드로 마이그레이션할 수 있습니다.
Red Hat build of OpenTelemetry는 분산 시스템에서 관찰 기능을 용이하게 하는 API, 라이브러리, 에이전트 및 계측을 제공합니다. OpenTelemetry의 Red Hat 빌드의 OpenTelemetry 수집기는 Jaeger 프로토콜을 수집할 수 있으므로 애플리케이션의 SDK를 변경할 필요가 없습니다.
분산 추적 플랫폼(Jaeger)에서 OpenTelemetry 수집기로 Red Hat 빌드로 마이그레이션하려면 OpenTelemetry 수집기 및 애플리케이션이 추적을 원활하게 보고하도록 구성해야 합니다. 사이드카 및 사이드카 없는 배포를 마이그레이션할 수 있습니다.
7.1. 분산 추적 플랫폼(Jaeger)에서 사이드카를 사용하여 OpenTelemetry의 Red Hat 빌드로 마이그레이션
Red Hat build of OpenTelemetry Operator는 배포 워크로드에 사이드카 삽입을 지원하므로 분산 추적 플랫폼(Jaeger) 사이드카에서 Red Hat 빌드의 OpenTelemetry 사이드카로 마이그레이션할 수 있습니다.
사전 요구 사항
- Red Hat OpenShift 분산 추적 플랫폼(Jaeger)은 클러스터에서 사용됩니다.
- Red Hat build of OpenTelemetry가 설치되어 있습니다.
프로세스
OpenTelemetry 수집기를 사이드카로 구성합니다.
apiVersion: opentelemetry.io/v1alpha1 kind: OpenTelemetryCollector metadata: name: otel namespace: <otel-collector-namespace> spec: mode: sidecar config: | receivers: jaeger: protocols: grpc: thrift_binary: thrift_compact: thrift_http: processors: batch: memory_limiter: check_interval: 1s limit_percentage: 50 spike_limit_percentage: 30 resourcedetection: detectors: [openshift] timeout: 2s exporters: otlp: endpoint: "tempo-<example>-gateway:8090" 1 tls: insecure: true service: pipelines: traces: receivers: [jaeger] processors: [memory_limiter, resourcedetection, batch] exporters: [otlp]
- 1
- 이 끝점은 Tempo Operator를 사용하여 배포된 TempoStack 인스턴스의 게이트웨이를
<example>
가리킵니다.
애플리케이션 실행을 위한 서비스 계정을 생성합니다.
apiVersion: v1 kind: ServiceAccount metadata: name: otel-collector-sidecar
일부 프로세서에 필요한 권한에 대한 클러스터 역할을 생성합니다.
apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRole metadata: name: otel-collector-sidecar rules: 1 - apiGroups: ["config.openshift.io"] resources: ["infrastructures", "infrastructures/status"] verbs: ["get", "watch", "list"]
- 1
resourcedetectionprocessor
에는 인프라 및 인프라/상태에 대한 권한이 필요합니다.
ClusterRoleBinding
을 생성하여 서비스 계정에 대한 권한을 설정합니다.apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRoleBinding metadata: name: otel-collector-sidecar subjects: - kind: ServiceAccount name: otel-collector-deployment namespace: otel-collector-example roleRef: kind: ClusterRole name: otel-collector apiGroup: rbac.authorization.k8s.io
- OpenTelemetry Collector를 사이드카로 배포합니다.
-
Deployment
오브젝트에서"sidecar.jaegertracing.io/inject": "true"
주석을 제거하여 애플리케이션에서 삽입된 Jaeger 에이전트를 제거합니다. -
Deployment
오브젝트의.spec.template.metadata.annotations
필드에sidecar.opentelemetry.io/inject: "true"
주석을 추가하여 OpenTelemetry 사이드카 자동 삽입을 활성화합니다. - 생성된 서비스 계정을 사용하여 애플리케이션이 배포되면 프로세서가 올바른 정보를 가져와서 추적에 추가할 수 있습니다.