4장. 분산 추적 플랫폼(Tempo)
4.1. 분산 추적 플랫폼(Tempo) 설치
Tempo Operator는 기술 프리뷰 기능 전용입니다. 기술 프리뷰 기능은 Red Hat 프로덕션 서비스 수준 계약(SLA)에서 지원되지 않으며 기능적으로 완전하지 않을 수 있습니다. 따라서 프로덕션 환경에서 사용하는 것은 권장하지 않습니다. 이러한 기능을 사용하면 향후 제품 기능을 조기에 이용할 수 있어 개발 과정에서 고객이 기능을 테스트하고 피드백을 제공할 수 있습니다.
Red Hat 기술 프리뷰 기능의 지원 범위에 대한 자세한 내용은 기술 프리뷰 기능 지원 범위를 참조하십시오.
분산 추적 플랫폼(Tempo)을 설치하려면 다음 단계를 수행해야 합니다.
- 지원되는 오브젝트 스토리지를 설정합니다.
- Tempo Operator 설치합니다.
- 오브젝트 스토리지 인증 정보에 대한 시크릿을 생성합니다.
- TempoStack 인스턴스에 대한 네임스페이스를 생성합니다.
-
TempoStack
사용자 지정 리소스를 생성하여 TempoStack 인스턴스를 하나 이상 배포합니다.
4.1.1. 웹 콘솔에서 분산 추적 플랫폼(Tempo) 설치
웹 콘솔의 관리자 보기에서 임시(Distributed tracing platform)를 설치할 수 있습니다.
사전 요구 사항
-
cluster-admin
역할을 사용하여 클러스터 관리자로 OpenShift Container Platform 웹 콘솔에 로그인되어 있습니다. -
Red Hat OpenShift Dedicated의 경우
dedicated-admin
역할의 계정을 사용하여 로그인해야 합니다. - 오브젝트 스토리지 공급자( Red Hat OpenShift Data Foundation,MinIO,Amazon S3,Azure Blob Storage,Google Cloud Storage )를 사용하고 있습니다.
절차
Tempo Operator를 설치합니다.
-
Operators
OperatorHub 로 이동하여 Tempo Operator
를 검색합니다. OpenShift Operator for Tempo
설치 설치 Operator 보기로 이동하여 Tempo Operator 를 선택합니다. 중요이렇게 하면 기본 사전 설정을 사용하여 Operator가 설치됩니다.
-
업데이트 채널
stable -
설치 모드
클러스터의 모든 네임스페이스 -
설치된 네임스페이스
openshift-tempo-operator -
업데이트 승인
자동
-
업데이트 채널
- 설치된 Operator 페이지의 세부 정보 탭에서 ClusterServiceVersion 세부 정보에서 설치 상태가 Succeeded인지 확인합니다.
-
Operators
-
후속 단계에서 생성할 TempoStack 인스턴스에 대해 선택한 프로젝트를 생성합니다. 홈
프로젝트 프로젝트 생성. TempoStack 인스턴스에 대해 생성한 프로젝트에서 오브젝트 스토리지 버킷에 대한 시크릿을 생성합니다. 워크로드
시크릿 → 생성 YAML에서. 표 4.1. 필수 시크릿 매개변수 스토리지 공급자 시크릿 매개변수
name: tempostack-dev-odf # example
bucket: <bucket_name> # requires an ObjectBucketClaim
endpoint: https://s3.openshift-storage.svc
access_key_id: <data_foundation_access_key_id>
access_key_secret: <data_foundation_access_key_secret>
MinIO
MinIO Operator 를 참조하십시오.
name: tempostack-dev-minio # example
bucket: <minio_bucket_name> # MinIO documentation
endpoint: <minio_bucket_endpoint>
access_key_id: <minio_access_key_id>
access_key_secret: <minio_access_key_secret>
Amazon S3
name: tempostack-dev-s3 # example
bucket: <s3_bucket_name> # Amazon S3 documentation
endpoint: <s3_bucket_endpoint>
access_key_id: <s3_access_key_id>
access_key_secret: <s3_access_key_secret>
Microsoft Azure Blob Storage
name: tempostack-dev-azure # example
container: <azure_blob_storage_container_name> # Microsoft Azure documentation
account_name: <azure_blob_storage_account_name>
account_key: <azure_blob_storage_account_key>
GCP(Google Cloud Platform)의 Google Cloud Storage
name: tempostack-dev-gcs # example
bucketname: <google_cloud_storage_bucket_name> # requires a bucket created in a GCP project
key.json: <path/to/key.json> # requires a service account in the bucket’s GCP project for GCP authentication
Amazon S3 및 MinIO 스토리지의 시크릿 예
apiVersion: v1 kind: Secret metadata: name: minio-test stringData: endpoint: http://minio.minio.svc:9000 bucket: tempo access_key_id: tempo access_key_secret: <secret> type: Opaque
TempoStack 인스턴스를 생성합니다.
참고동일한 클러스터의 별도의 프로젝트에서 여러 TempoStack 인스턴스를 생성할 수 있습니다.
-
Operator
설치된 Operator 로 이동합니다. -
TempoStack
TempoStack YAML 보기를 선택합니다. YAML 보기에서
TempoStack
사용자 정의 리소스(CR)를 사용자 지정합니다.apiVersion: tempo.grafana.com/v1alpha1 kind: TempoStack metadata: name: sample namespace: <project_of_tempostack_instance> spec: storageSize: 1Gi storage: secret: name: <secret-name> 1 type: <secret-provider> 2 template: queryFrontend: jaegerQuery: enabled: true ingress: route: termination: edge type: route
AWS S3 및 MinIO 스토리지에 대한 TempoStack CR의 예
apiVersion: tempo.grafana.com/v1alpha1 kind: TempoStack metadata: name: simplest namespace: <project_of_tempostack_instance> spec: storageSize: 1Gi storage: secret: name: minio-test type: s3 resources: total: limits: memory: 2Gi cpu: 2000m template: queryFrontend: jaegerQuery: enabled: true ingress: route: termination: edge type: route
이 예제에 배포된 스택은 Jaeger UI로 데이터를 시각화할 수 있는 HTTP 및 OpenTelemetry Protocol(OTLP)을 통해 Jaeger Thrift를 수신하도록 구성되어 있습니다.
- 생성을 선택합니다.
-
Operator
검증
- 프로젝트: 드롭다운 목록을 사용하여 TempoStack 인스턴스의 프로젝트를 선택합니다.
-
Operator
설치된 Operator로 이동하여 TempoStack 인스턴스의 상태가 Condition: Ready 인지 확인합니다. -
워크로드
Pod 로 이동하여 TempoStack 인스턴스의 모든 구성 요소 Pod가 실행 중인지 확인합니다. Tempo 콘솔에 액세스합니다.
-
네트워킹
경로 및 Ctrl+F 로 이동하여 tempo
를 검색합니다. - 위치 열에서 URL을 열어 Tempo 콘솔에 액세스합니다.
웹 콘솔의 클러스터 관리자 인증 정보를 사용하려면 OpenShift로 로그인을 선택합니다.
참고Tempo 콘솔은 처음에 Tempo 콘솔 설치 후 추적 데이터를 표시하지 않습니다.
-
네트워킹
4.1.2. CLI를 사용하여 분산 추적 플랫폼(Tempo) 설치
명령줄에서 분산 추적 플랫폼(Tempo)을 설치할 수 있습니다.
사전 요구 사항
cluster-admin
역할의 클러스터 관리자가 활성 OpenShift CLI(oc
) 세션입니다.작은 정보-
OpenShift CLI(
oc
) 버전이 최신 버전인지 확인하고 OpenShift Container Platform 버전과 일치하는지 확인합니다. oc login
을 실행합니다.$ oc login --username=<your_username>
-
OpenShift CLI(
- 오브젝트 스토리지 공급자( Red Hat OpenShift Data Foundation,MinIO,Amazon S3,Azure Blob Storage,Google Cloud Storage )를 사용하고 있습니다.
절차
Tempo Operator를 설치합니다.
다음 명령을 실행하여 Tempo Operator에 대한 프로젝트를 생성합니다.
$ oc apply -f - << EOF apiVersion: project.openshift.io/v1 kind: Project metadata: labels: kubernetes.io/metadata.name: openshift-tempo-operator openshift.io/cluster-monitoring: "true" name: openshift-tempo-operator EOF
다음 명령을 실행하여 operator 그룹을 생성합니다.
$ oc apply -f - << EOF apiVersion: operators.coreos.com/v1 kind: OperatorGroup metadata: name: openshift-tempo-operator namespace: openshift-tempo-operator spec: upgradeStrategy: Default EOF
다음 명령을 실행하여 서브스크립션을 생성합니다.
$ oc apply -f - << EOF apiVersion: operators.coreos.com/v1alpha1 kind: Subscription metadata: name: tempo-product namespace: openshift-tempo-operator spec: channel: stable installPlanApproval: Automatic name: tempo-product source: redhat-operators sourceNamespace: openshift-marketplace EOF
다음 명령을 실행하여 Operator 상태를 확인합니다.
$ oc get csv -n openshift-tempo-operator
후속 단계에서 생성할 TempoStack 인스턴스에 대해 선택한 프로젝트를 생성합니다.
메타데이터 없이 표준 입력에서 프로젝트를 생성하려면 다음을 수행합니다.
$ oc new-project <project_of_tempostack_instance>
메타데이터를 사용하여 표준 입력에서 프로젝트를 생성하려면 다음을 수행합니다.
$ oc apply -f - << EOF apiVersion: project.openshift.io/v1 kind: Project metadata: name: <project_of_tempostack_instance> EOF
TempoStack 인스턴스에 대해 생성한 프로젝트에서 다음 명령 중 하나를 실행하여 오브젝트 스토리지 버킷에 대한 시크릿을 생성합니다.
YAML 파일에서 보안을 생성하려면 다음을 수행합니다.
$ oc apply -f <secret_file>.yaml
표준 입력에서 보안을 생성하려면 다음을 수행합니다.
$ oc apply -f - << EOF <object_storage_secret> EOF
표 4.2. 필수 시크릿 매개변수 스토리지 공급자 시크릿 매개변수
name: tempostack-dev-odf # example
bucket: <bucket_name> # requires an ObjectBucketClaim
endpoint: https://s3.openshift-storage.svc
access_key_id: <data_foundation_access_key_id>
access_key_secret: <data_foundation_access_key_secret>
MinIO
MinIO Operator 를 참조하십시오.
name: tempostack-dev-minio # example
bucket: <minio_bucket_name> # MinIO documentation
endpoint: <minio_bucket_endpoint>
access_key_id: <minio_access_key_id>
access_key_secret: <minio_access_key_secret>
Amazon S3
name: tempostack-dev-s3 # example
bucket: <s3_bucket_name> # Amazon S3 documentation
endpoint: <s3_bucket_endpoint>
access_key_id: <s3_access_key_id>
access_key_secret: <s3_access_key_secret>
Microsoft Azure Blob Storage
name: tempostack-dev-azure # example
container: <azure_blob_storage_container_name> # Microsoft Azure documentation
account_name: <azure_blob_storage_account_name>
account_key: <azure_blob_storage_account_key>
GCP(Google Cloud Platform)의 Google Cloud Storage
name: tempostack-dev-gcs # example
bucketname: <google_cloud_storage_bucket_name> # requires a bucket created in a GCP project
key.json: <path/to/key.json> # requires a service account in the bucket’s GCP project for GCP authentication
Amazon S3 및 MinIO 스토리지의 시크릿 예
apiVersion: v1 kind: Secret metadata: name: minio-test stringData: endpoint: http://minio.minio.svc:9000 bucket: tempo access_key_id: tempo access_key_secret: <secret> type: Opaque
TempoStack 인스턴스에 대해 생성한 프로젝트에서 TempoStack 인스턴스를 생성합니다.
참고동일한 클러스터의 별도의 프로젝트에서 여러 TempoStack 인스턴스를 생성할 수 있습니다.
TempoStack
CR(사용자 정의 리소스)을 사용자 정의합니다.apiVersion: tempo.grafana.com/v1alpha1 kind: TempoStack metadata: name: sample namespace: <project_of_tempostack_instance> spec: storageSize: 1Gi storage: secret: name: <secret-name> 1 type: <secret-provider> 2 template: queryFrontend: jaegerQuery: enabled: true ingress: route: termination: edge type: route
AWS S3 및 MinIO 스토리지용 TempoStack CR
apiVersion: tempo.grafana.com/v1alpha1 kind: TempoStack metadata: name: simplest namespace: project_of_tempostack_instance spec: storageSize: 1Gi storage: secret: name: minio-test type: s3 resources: total: limits: memory: 2Gi cpu: 2000m template: queryFrontend: jaegerQuery: enabled: true ingress: route: termination: edge type: route
이 예제에 배포된 스택은 Jaeger UI로 데이터를 시각화할 수 있는 HTTP 및 OpenTelemetry Protocol(OTLP)을 통해 Jaeger Thrift를 수신하도록 구성되어 있습니다.
다음 명령을 실행하여 사용자 지정된 CR을 적용합니다.
$ oc apply -f - << EOF <TempoStack_custom_resource> EOF
검증
다음 명령을 실행하여 모든 TempoStack
components
의status
가Running
이고conditions
가type: Ready
인지 확인합니다.$ oc get tempostacks.tempo.grafana.com simplest -o yaml
다음 명령을 실행하여 모든 TempoStack 구성 요소 Pod가 실행 중인지 확인합니다.
$ oc get pods
Tempo 콘솔에 액세스합니다.
다음 명령을 실행하여 경로 세부 정보를 쿼리합니다.
$ export TEMPO_URL=$(oc get route -n <control_plane_namespace> tempo -o jsonpath='{.spec.host}')
-
웹 브라우저에서
https://<route_from_previous_step>
을 엽니다. 웹 콘솔의 클러스터 관리자 인증 정보를 사용하여 로그인합니다.
참고Tempo 콘솔은 처음에 Tempo 콘솔 설치 후 추적 데이터를 표시하지 않습니다.