3장. 분산 추적 플랫폼(Tempo)


3.1. 설치

분산 추적 플랫폼(Tempo)을 설치하려면 Tempo Operator를 설치하고 사용 사례에 가장 적합한 배포 유형을 선택해야 합니다.

  • 마이크로 서비스 모드의 경우 전용 OpenShift 프로젝트에 TempoStack 인스턴스를 배포합니다.
  • 모놀리식 모드의 경우 전용 OpenShift 프로젝트에 TempoMonolithic 인스턴스를 배포합니다.
중요

오브젝트 스토리지를 사용하려면 TempoStack 또는 TempoMonolithic 인스턴스를 배포하기 전에 지원되는 오브젝트 저장소를 설정하고 오브젝트 저장소 인증 정보에 대한 시크릿을 생성해야 합니다.

3.1.1. Tempo Operator 설치

웹 콘솔 또는 명령줄을 사용하여 Tempo Operator를 설치할 수 있습니다.

3.1.1.1. 웹 콘솔을 사용하여 Tempo Operator 설치

웹 콘솔의 관리자 보기에서 Tempo Operator를 설치할 수 있습니다.

사전 요구 사항

  • 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)에 포함되지 않습니다. 임시(Distributed tracing platform)를 설치하기 전에 지원되는 공급자가 오브젝트 스토리지를 선택하고 설정해야 합니다.

프로세스

  1. Operators OperatorHub 로 이동하여 Tempo Operator 를 검색합니다.
  2. Red Hat에서 제공하는 Tempo Operator 를 선택합니다.

    중요

    다음 선택 사항은 이 Operator의 기본 사전 설정 사항입니다.

    • 업데이트 채널 stable
    • 설치 모드 클러스터의 모든 네임스페이스
    • 설치된 네임스페이스 openshift-tempo-operator
    • 업데이트 승인 자동
  3. 이 네임스페이스에서 Operator 권장 클러스터 모니터링 활성화 확인란을 선택합니다.
  4. 설치 설치 Operator 보기를 선택합니다.

검증

  • 설치된 Operator 페이지의 세부 정보 탭에서 ClusterServiceVersion 세부 정보에서 설치 상태Succeeded인지 확인합니다.

3.1.1.2. CLI를 사용하여 Tempo Operator 설치

명령줄에서 Tempo Operator를 설치할 수 있습니다.

사전 요구 사항

  • cluster-admin 역할의 클러스터 관리자가 활성 OpenShift CLI(oc) 세션입니다.

    작은 정보
    • OpenShift CLI(oc) 버전이 최신 버전인지 확인하고 OpenShift Container Platform 버전과 일치하는지 확인합니다.
    • oc login 을 실행합니다.

      $ oc login --username=<your_username>
  • 지원되는 공급자가 필요한 오브젝트 스토리지 설정 완료: Red Hat OpenShift Data Foundation,MinIO,Amazon S3,Azure Blob Storage,Google Cloud Storage. 자세한 내용은 "오브젝트 스토리지 설정"을 참조하십시오.

    주의

    개체 스토리지는 필수이며 분산 추적 플랫폼(Tempo)에 포함되지 않습니다. 임시(Distributed tracing platform)를 설치하기 전에 지원되는 공급자가 오브젝트 스토리지를 선택하고 설정해야 합니다.

프로세스

  1. 다음 명령을 실행하여 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
  2. 다음 명령을 실행하여 Operator group을 생성합니다.

    $ oc apply -f - << EOF
    apiVersion: operators.coreos.com/v1
    kind: OperatorGroup
    metadata:
      name: openshift-tempo-operator
      namespace: openshift-tempo-operator
    spec:
      upgradeStrategy: Default
    EOF
  3. 다음 명령을 실행하여 서브스크립션을 생성합니다.

    $ 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

3.1.2. TempoStack 인스턴스 설치

웹 콘솔 또는 명령줄을 사용하여 TempoStack 인스턴스를 설치할 수 있습니다.

3.1.2.1. 웹 콘솔을 사용하여 TempoStack 인스턴스 설치

웹 콘솔의 관리자 보기에서 TempoStack 인스턴스를 설치할 수 있습니다.

사전 요구 사항

  • 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)에 포함되지 않습니다. 임시(Distributed tracing platform)를 설치하기 전에 지원되는 공급자가 오브젝트 스토리지를 선택하고 설정해야 합니다.

프로세스

  1. 프로젝트 프로젝트 생성 으로 이동하여 후속 단계에서 생성할 TempoStack 인스턴스에 대해 선택한 프로젝트를 생성합니다.
  2. 워크로드 시크릿 생성 YAML 로 이동하여 TempoStack 인스턴스에 대해 생성한 프로젝트에서 오브젝트 스토리지 버킷에 대한 시크릿을 생성합니다. 자세한 내용은 "오브젝트 스토리지 설정"을 참조하십시오.

    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

  3. TempoStack 인스턴스를 생성합니다.

    참고

    동일한 클러스터의 별도의 프로젝트에서 여러 TempoStack 인스턴스를 생성할 수 있습니다.

    1. Operator 설치된 Operator 로 이동합니다.
    2. TempoStack TempoStack YAML 보기를 선택합니다.
    3. YAML 보기에서 TempoStack 사용자 정의 리소스(CR)를 사용자 지정합니다.

      apiVersion: tempo.grafana.com/v1alpha1
      kind: TempoStack
      metadata:
        name: sample
        namespace: <project_of_tempostack_instance>
      spec:
        storageSize: <value>Gi 1
        storage:
          secret: 2
            name: <secret_name> 3
            type: <secret_provider> 4
          tls: 5
            enabled: true
            caName: <ca_certificate_configmap_name> 6
        template:
          queryFrontend:
            jaegerQuery:
              enabled: true
              ingress:
                route:
                  termination: edge
                type: route
        resources: 7
          total:
            limits:
              memory: <value>Gi
              cpu: <value>m
      1
      Tempo WAL에 대한 영구 볼륨 클레임의 크기입니다. 기본값은 10Gi 입니다.
      2
      사전 요구 사항 중 하나로 설정된 오브젝트 스토리지의 2단계에서 생성한 시크릿입니다.
      3
      시크릿 메타데이터이름 값입니다.
      4
      허용되는 값은 Azure Blob Storage에 azure, Google Cloud Storage용 gcs, Amazon S3, MinIO 또는 Red Hat OpenShift Data Foundation의 경우 s3 입니다.
      5
      선택 사항입니다.
      6
      선택사항: CA 인증서가 포함된 ConfigMap 오브젝트의 이름입니다.
      7
      선택 사항입니다.

      AWS S3 및 MinIO 스토리지에 대한 TempoStack CR의 예

      apiVersion: tempo.grafana.com/v1alpha1
      kind: TempoStack
      metadata:
        name: simplest
        namespace: <project_of_tempostack_instance>
      spec:
        storageSize: 1Gi
        storage: 1
          secret:
            name: minio-test
            type: s3
        resources:
          total:
            limits:
              memory: 2Gi
              cpu: 2000m
        template:
          queryFrontend:
            jaegerQuery: 2
              enabled: true
              ingress:
                route:
                  termination: edge
                type: route

      1
      이 예에서는 오브젝트 스토리지가 사전 요구 사항 중 하나로 설정되었으며 2단계에서 오브젝트 스토리지 보안이 생성되었습니다.
      2
      이 예제에 배포된 스택은 Jaeger UI로 데이터를 시각화할 수 있는 HTTP 및 OpenTelemetry Protocol(OTLP)을 통해 Jaeger Thrift를 수신하도록 구성되어 있습니다.
    4. 생성을 선택합니다.

검증

  1. 프로젝트: 드롭다운 목록을 사용하여 TempoStack 인스턴스의 프로젝트를 선택합니다.
  2. Operator 설치된 Operator로 이동하여 TempoStack 인스턴스의 상태가 Condition: Ready 인지 확인합니다.
  3. 워크로드 Pod 로 이동하여 TempoStack 인스턴스의 모든 구성 요소 Pod가 실행 중인지 확인합니다.
  4. Tempo 콘솔에 액세스합니다.

    1. 네트워킹 경로Ctrl+F 로 이동하여 tempo 를 검색합니다.
    2. 위치 열에서 URL을 열어 Tempo 콘솔에 액세스합니다.

      참고

      Tempo 콘솔은 처음에 Tempo 콘솔 설치 후 추적 데이터를 표시하지 않습니다.

3.1.2.2. CLI를 사용하여 TempoStack 인스턴스 설치

명령줄에서 TempoStack 인스턴스를 설치할 수 있습니다.

사전 요구 사항

  • cluster-admin 역할의 클러스터 관리자가 활성 OpenShift CLI(oc) 세션입니다.

    작은 정보
    • OpenShift CLI(oc) 버전이 최신 버전인지 확인하고 OpenShift Container Platform 버전과 일치하는지 확인합니다.
    • oc login 명령을 실행합니다.

      $ oc login --username=<your_username>
  • 지원되는 공급자가 필요한 오브젝트 스토리지 설정 완료: Red Hat OpenShift Data Foundation,MinIO,Amazon S3,Azure Blob Storage,Google Cloud Storage. 자세한 내용은 "오브젝트 스토리지 설정"을 참조하십시오.

    주의

    개체 스토리지는 필수이며 분산 추적 플랫폼(Tempo)에 포함되지 않습니다. 임시(Distributed tracing platform)를 설치하기 전에 지원되는 공급자가 오브젝트 스토리지를 선택하고 설정해야 합니다.

프로세스

  1. 다음 명령을 실행하여 후속 단계에서 생성할 TempoStack 인스턴스에 대해 선택한 프로젝트를 생성합니다.

    $ oc apply -f - << EOF
    apiVersion: project.openshift.io/v1
    kind: Project
    metadata:
      name: <project_of_tempostack_instance>
    EOF
  2. TempoStack 인스턴스에 대해 생성한 프로젝트에서 다음 명령을 실행하여 오브젝트 스토리지 버킷에 대한 시크릿을 생성합니다.

    $ oc apply -f - << EOF
    <object_storage_secret>
    EOF

    자세한 내용은 "오브젝트 스토리지 설정"을 참조하십시오.

    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

  3. 생성한 프로젝트에 TempoStack 인스턴스를 생성합니다.

    참고

    동일한 클러스터의 별도의 프로젝트에서 여러 TempoStack 인스턴스를 생성할 수 있습니다.

    1. TempoStack CR(사용자 정의 리소스)을 사용자 정의합니다.

      apiVersion: tempo.grafana.com/v1alpha1
      kind: TempoStack
      metadata:
        name: sample
        namespace: <project_of_tempostack_instance>
      spec:
        storageSize: <value>Gi 1
        storage:
          secret: 2
            name: <secret_name> 3
            type: <secret_provider> 4
          tls: 5
            enabled: true
            caName: <ca_certificate_configmap_name> 6
        template:
          queryFrontend:
            jaegerQuery:
              enabled: true
              ingress:
                route:
                  termination: edge
                type: route
        resources: 7
          total:
            limits:
              memory: <value>Gi
              cpu: <value>m
      1
      Tempo WAL에 대한 영구 볼륨 클레임의 크기입니다. 기본값은 10Gi 입니다.
      2
      사전 요구 사항 중 하나로 설정된 오브젝트 스토리지의 2단계에서 생성한 시크릿입니다.
      3
      시크릿 메타데이터이름 값입니다.
      4
      허용되는 값은 Azure Blob Storage에 azure, Google Cloud Storage용 gcs, Amazon S3, MinIO 또는 Red Hat OpenShift Data Foundation의 경우 s3 입니다.
      5
      선택 사항입니다.
      6
      선택사항: CA 인증서가 포함된 ConfigMap 오브젝트의 이름입니다.
      7
      선택 사항입니다.

      AWS S3 및 MinIO 스토리지에 대한 TempoStack CR의 예

      apiVersion: tempo.grafana.com/v1alpha1
      kind: TempoStack
      metadata:
        name: simplest
        namespace: <project_of_tempostack_instance>
      spec:
        storageSize: 1Gi
        storage: 1
          secret:
            name: minio-test
            type: s3
        resources:
          total:
            limits:
              memory: 2Gi
              cpu: 2000m
        template:
          queryFrontend:
            jaegerQuery: 2
              enabled: true
              ingress:
                route:
                  termination: edge
                type: route

      1
      이 예에서는 오브젝트 스토리지가 사전 요구 사항 중 하나로 설정되었으며 2단계에서 오브젝트 스토리지 보안이 생성되었습니다.
      2
      이 예제에 배포된 스택은 Jaeger UI로 데이터를 시각화할 수 있는 HTTP 및 OpenTelemetry Protocol(OTLP)을 통해 Jaeger Thrift를 수신하도록 구성되어 있습니다.
    2. 다음 명령을 실행하여 사용자 지정된 CR을 적용합니다.

      $ oc apply -f - << EOF
      <tempostack_cr>
      EOF

검증

  1. 다음 명령을 실행하여 모든 TempoStack componentsstatusRunning 이고 conditionstype: Ready 인지 확인합니다.

    $ oc get tempostacks.tempo.grafana.com simplest -o yaml
  2. 다음 명령을 실행하여 모든 TempoStack 구성 요소 Pod가 실행 중인지 확인합니다.

    $ oc get pods
  3. Tempo 콘솔에 액세스합니다.

    1. 다음 명령을 실행하여 경로 세부 정보를 쿼리합니다.

      $ oc get route
    2. 웹 브라우저에서 https://<route_from_previous_step>을 엽니다.

      참고

      Tempo 콘솔은 처음에 Tempo 콘솔 설치 후 추적 데이터를 표시하지 않습니다.

3.1.3. TempoMonolithic 인스턴스 설치

중요

TempoMonolithic 인스턴스는 기술 프리뷰 기능 전용입니다. 기술 프리뷰 기능은 Red Hat 프로덕션 서비스 수준 계약(SLA)에서 지원되지 않으며 기능적으로 완전하지 않을 수 있습니다. 따라서 프로덕션 환경에서 사용하는 것은 권장하지 않습니다. 이러한 기능을 사용하면 향후 제품 기능을 조기에 이용할 수 있어 개발 과정에서 고객이 기능을 테스트하고 피드백을 제공할 수 있습니다.

Red Hat 기술 프리뷰 기능의 지원 범위에 대한 자세한 내용은 기술 프리뷰 기능 지원 범위를 참조하십시오.

웹 콘솔 또는 명령줄을 사용하여 TempoMonolithic 인스턴스를 설치할 수 있습니다.

TempoMonolithic CR(사용자 정의 리소스)은 모놀리식 모드로 Tempo 배포를 생성합니다. Tempo 배포의 모든 구성 요소(예: compactor, distributor, ingester, querier, 쿼리 프런트 엔드)는 단일 컨테이너에 포함됩니다.

TempoMonolithic 인스턴스는 메모리 내 스토리지, 영구 볼륨 또는 오브젝트 스토리지에 추적을 저장할 수 있도록 지원합니다.

모놀리식 모드의 템포 배포는 소규모 배포, 시연, 테스트 및 Red Hat OpenShift distributed tracing Platform(Jaeger) all-in-one 배포의 마이그레이션 경로로 선호됩니다.

참고

Tempo의 모놀리식 배포는 수평으로 확장되지 않습니다. 수평 확장이 필요한 경우 마이크로 서비스의 Tempo 배포에 TempoStack CR을 사용합니다.

3.1.3.1. 웹 콘솔을 사용하여 TempoMonolithic 인스턴스 설치

중요

TempoMonolithic 인스턴스는 기술 프리뷰 기능 전용입니다. 기술 프리뷰 기능은 Red Hat 프로덕션 서비스 수준 계약(SLA)에서 지원되지 않으며 기능적으로 완전하지 않을 수 있습니다. 따라서 프로덕션 환경에서 사용하는 것은 권장하지 않습니다. 이러한 기능을 사용하면 향후 제품 기능을 조기에 이용할 수 있어 개발 과정에서 고객이 기능을 테스트하고 피드백을 제공할 수 있습니다.

Red Hat 기술 프리뷰 기능의 지원 범위에 대한 자세한 내용은 기술 프리뷰 기능 지원 범위를 참조하십시오.

웹 콘솔의 관리자 보기에서 TempoMonolithic 인스턴스를 설치할 수 있습니다.

사전 요구 사항

  • cluster-admin 역할을 사용하여 클러스터 관리자로 OpenShift Container Platform 웹 콘솔에 로그인되어 있습니다.
  • Red Hat OpenShift Dedicated의 경우 dedicated-admin 역할의 계정을 사용하여 로그인해야 합니다.

프로세스

  1. 프로젝트 프로젝트 생성 으로 이동하여 후속 단계에서 생성할 TempoMonolithic 인스턴스에 대해 선택한 프로젝트를 만듭니다.
  2. 추적을 저장하는 데 사용할 지원되는 스토리지 유형(메모리 스토리지, 영구 볼륨 또는 오브젝트 스토리지)을 결정합니다.

    중요

    오브젝트 스토리지는 분산 추적 플랫폼(Tempo)에 포함되지 않으며 Red Hat OpenShift Data Foundation,MinIO,Amazon S3,Azure Blob Storage 또는 Google Cloud Storage 에서 지원되는 공급자의 오브젝트 저장소를 설정해야 합니다.

    또한 오브젝트 스토리지를 선택하려면 TempoMonolithic 인스턴스를 위해 생성한 프로젝트에서 오브젝트 스토리지 버킷에 대한 시크릿을 생성해야 합니다. 워크로드 시크릿 생성 YAML에서 이 작업을 수행할 수 있습니다.

    자세한 내용은 "오브젝트 스토리지 설정"을 참조하십시오.

    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

  3. TempoMonolithic 인스턴스를 생성합니다.

    참고

    동일한 클러스터의 별도의 프로젝트에서 여러 TempoMonolithic 인스턴스를 생성할 수 있습니다.

    1. Operator 설치된 Operator 로 이동합니다.
    2. TempoMonolithic →Temp oMonolithic → YAML 보기를 선택합니다.
    3. YAML 보기에서 TempoMonolithic 사용자 정의 리소스(CR)를 사용자 지정합니다.

      다음 TempoMonolithic CR은 OTLP/gRPC 및 OTLP/HTTP를 통한 추적 수집으로 TempoMonolithic 배포를 생성하여 지원되는 스토리지 유형에 추적을 저장하고 경로를 통해 Jaeger UI를 노출합니다.

      apiVersion: tempo.grafana.com/v1alpha1
      kind: TempoMonolithic
      metadata:
        name: <metadata_name>
        namespace: <project_of_tempomonolithic_instance>
      spec:
        storage:
          traces:
            backend: <supported_storage_type> 1
            size: <value>Gi 2
            s3: 3
              secret: <secret_name> 4
          tls: 5
            enabled: true
            caName: <ca_certificate_configmap_name> 6
        jaegerui:
          enabled: true 7
          route:
            enabled: true 8
        resources: 9
          total:
            limits:
              memory: <value>Gi
              cpu: <value>m
      1
      추적을 저장하기 위한 스토리지 유형: 메모리 내 스토리지, 영구 볼륨 또는 오브젝트 스토리지. 영구 볼륨의 값은 pv 입니다. 오브젝트 스토리지에 허용되는 값은 사용된 오브젝트 저장소 유형에 따라 s3,gcs 또는 azure 입니다. 기본값은 tmpfs in- memory 스토리지의 메모리입니다. 이는 Pod가 종료될 때 데이터가 유지되지 않기 때문에 개발, 테스트, 시연 및 개념 증명 환경에만 적합합니다.
      2
      메모리 내 스토리지의 경우 기본값은 2Gitmpfs 볼륨의 크기를 의미합니다. 영구 볼륨의 경우 이는 영구 볼륨 클레임의 크기입니다. 여기서 기본값은 10Gi 입니다. 오브젝트 스토리지의 경우 Tempo WAL의 영구 볼륨 클레임 크기를 의미합니다. 기본값은 10Gi 입니다.
      3
      선택 사항: 오브젝트 스토리지의 경우 오브젝트 스토리지의 유형입니다. 허용되는 값은 사용된 오브젝트 저장소 유형에 따라 s3,gcsazure 입니다.
      4
      선택 사항: 오브젝트 스토리지의 경우 스토리지 시크릿의 메타데이터에 있는 이름의 값입니다. 스토리지 시크릿은 TempoMonolithic 인스턴스와 동일한 네임스페이스에 있어야 하며 "표 1"에 지정된 필드를 포함해야 합니다. "오브젝트 스토리지 설정" 섹션의 필수 시크릿 매개변수입니다.
      5
      선택 사항입니다.
      6
      선택사항: CA 인증서가 포함된 ConfigMap 오브젝트의 이름입니다.
      7
      Jaeger UI를 활성화합니다.
      8
      Jaeger UI에 대한 경로 생성을 활성화합니다.
      9
      선택 사항입니다.
    4. 생성을 선택합니다.

검증

  1. Project: 드롭다운 목록을 사용하여 TempoMonolithic 인스턴스의 프로젝트를 선택합니다.
  2. Operator 설치된 Operator로 이동하여 TempoMonolithic 인스턴스의 상태가 Condition: Ready 인지 확인합니다.
  3. 워크로드 Pod 로 이동하여 TempoMonolithic 인스턴스의 Pod가 실행 중인지 확인합니다.
  4. Jaeger UI에 액세스합니다.

    1. 네트워킹 경로Ctrl+F 로 이동하여 jaegerui 를 검색합니다.

      참고

      Jaeger UI는 tempo-<metadata_name_of_TempoMonolithic_CR>-jaegerui 경로를 사용합니다.

    2. 위치 열에서 URL을 열어 Jaeger UI에 액세스합니다.
  5. TempoMonolithic 인스턴스의 Pod가 준비되면 클러스터 내부의 tempo-<metadata_name_of_TempoMonolithic_CR>:4317 (OTLP/gRPC) 및 tempo-<metadata_name_of_TempoMonolithic_CR>:4318 (OTLP/HTTP) 끝점으로 추적을 보낼 수 있습니다.

    Tempo API는 클러스터 내부의 tempo-<metadata_name_of_TempoMonolithic_CR>:3200 끝점에서 사용할 수 있습니다.

3.1.3.2. CLI를 사용하여 TempoMonolithic 인스턴스 설치

중요

TempoMonolithic 인스턴스는 기술 프리뷰 기능 전용입니다. 기술 프리뷰 기능은 Red Hat 프로덕션 서비스 수준 계약(SLA)에서 지원되지 않으며 기능적으로 완전하지 않을 수 있습니다. 따라서 프로덕션 환경에서 사용하는 것은 권장하지 않습니다. 이러한 기능을 사용하면 향후 제품 기능을 조기에 이용할 수 있어 개발 과정에서 고객이 기능을 테스트하고 피드백을 제공할 수 있습니다.

Red Hat 기술 프리뷰 기능의 지원 범위에 대한 자세한 내용은 기술 프리뷰 기능 지원 범위를 참조하십시오.

명령줄에서 TempoMonolithic 인스턴스를 설치할 수 있습니다.

사전 요구 사항

  • cluster-admin 역할의 클러스터 관리자가 활성 OpenShift CLI(oc) 세션입니다.

    작은 정보
    • OpenShift CLI(oc) 버전이 최신 버전인지 확인하고 OpenShift Container Platform 버전과 일치하는지 확인합니다.
    • oc login 명령을 실행합니다.

      $ oc login --username=<your_username>

프로세스

  1. 다음 명령을 실행하여 후속 단계에서 생성할 TempoMonolithic 인스턴스에 대해 선택한 프로젝트를 생성합니다.

    $ oc apply -f - << EOF
    apiVersion: project.openshift.io/v1
    kind: Project
    metadata:
      name: <project_of_tempomonolithic_instance>
    EOF
  2. 추적을 저장하는 데 사용할 지원되는 스토리지 유형(메모리 스토리지, 영구 볼륨 또는 오브젝트 스토리지)을 결정합니다.

    중요

    오브젝트 스토리지는 분산 추적 플랫폼(Tempo)에 포함되지 않으며 Red Hat OpenShift Data Foundation,MinIO,Amazon S3,Azure Blob Storage 또는 Google Cloud Storage 에서 지원되는 공급자의 오브젝트 저장소를 설정해야 합니다.

    또한 오브젝트 스토리지를 선택하려면 TempoMonolithic 인스턴스를 위해 생성한 프로젝트에서 오브젝트 스토리지 버킷에 대한 시크릿을 생성해야 합니다. 다음 명령을 실행하여 이 작업을 수행할 수 있습니다.

    $ oc apply -f - << EOF
    <object_storage_secret>
    EOF

    자세한 내용은 "오브젝트 스토리지 설정"을 참조하십시오.

    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

  3. 사용자가 만든 프로젝트에 TempoMonolithic 인스턴스를 만듭니다.

    작은 정보

    동일한 클러스터의 별도의 프로젝트에서 여러 TempoMonolithic 인스턴스를 생성할 수 있습니다.

    1. TempoMonolithic 사용자 정의 리소스(CR)를 사용자 지정합니다.

      다음 TempoMonolithic CR은 OTLP/gRPC 및 OTLP/HTTP를 통한 추적 수집으로 TempoMonolithic 배포를 생성하여 지원되는 스토리지 유형에 추적을 저장하고 경로를 통해 Jaeger UI를 노출합니다.

      apiVersion: tempo.grafana.com/v1alpha1
      kind: TempoMonolithic
      metadata:
        name: <metadata_name>
        namespace: <project_of_tempomonolithic_instance>
      spec:
        storage:
          traces:
            backend: <supported_storage_type> 1
            size: <value>Gi 2
            s3: 3
              secret: <secret_name> 4
          tls: 5
            enabled: true
            caName: <ca_certificate_configmap_name> 6
        jaegerui:
          enabled: true 7
          route:
            enabled: true 8
        resources: 9
          total:
            limits:
              memory: <value>Gi
              cpu: <value>m
      1
      추적을 저장하기 위한 스토리지 유형: 메모리 내 스토리지, 영구 볼륨 또는 오브젝트 스토리지. 영구 볼륨의 값은 pv 입니다. 오브젝트 스토리지에 허용되는 값은 사용된 오브젝트 저장소 유형에 따라 s3,gcs 또는 azure 입니다. 기본값은 tmpfs in- memory 스토리지의 메모리입니다. 이는 Pod가 종료될 때 데이터가 유지되지 않기 때문에 개발, 테스트, 시연 및 개념 증명 환경에만 적합합니다.
      2
      메모리 내 스토리지의 경우 기본값은 2Gitmpfs 볼륨의 크기를 의미합니다. 영구 볼륨의 경우 이는 영구 볼륨 클레임의 크기입니다. 여기서 기본값은 10Gi 입니다. 오브젝트 스토리지의 경우 Tempo WAL의 영구 볼륨 클레임 크기를 의미합니다. 기본값은 10Gi 입니다.
      3
      선택 사항: 오브젝트 스토리지의 경우 오브젝트 스토리지의 유형입니다. 허용되는 값은 사용된 오브젝트 저장소 유형에 따라 s3,gcsazure 입니다.
      4
      선택 사항: 오브젝트 스토리지의 경우 스토리지 시크릿의 메타데이터에 있는 이름의 값입니다. 스토리지 시크릿은 TempoMonolithic 인스턴스와 동일한 네임스페이스에 있어야 하며 "표 1"에 지정된 필드를 포함해야 합니다. "오브젝트 스토리지 설정" 섹션의 필수 시크릿 매개변수입니다.
      5
      선택 사항입니다.
      6
      선택사항: CA 인증서가 포함된 ConfigMap 오브젝트의 이름입니다.
      7
      Jaeger UI를 활성화합니다.
      8
      Jaeger UI에 대한 경로 생성을 활성화합니다.
      9
      선택 사항입니다.
    2. 다음 명령을 실행하여 사용자 지정된 CR을 적용합니다.

      $ oc apply -f - << EOF
      <tempomonolithic_cr>
      EOF

검증

  1. 다음 명령을 실행하여 모든 TempoMonolithic 구성 요소의 상태가 Running 이고 조건이 type: Ready 인지 확인합니다.

    $ oc get tempomonolithic.tempo.grafana.com <metadata_name_of_tempomonolithic_cr> -o yaml
  2. 다음 명령을 실행하여 TempoMonolithic 인스턴스의 포드가 실행 중인지 확인합니다.

    $ oc get pods
  3. Jaeger UI에 액세스합니다.

    1. 다음 명령을 실행하여 tempo-<metadata_name_of_tempomonolithic_cr>-jaegerui 경로에 대한 경로 세부 정보를 쿼리합니다.

      $ oc get route
    2. 웹 브라우저에서 https://<route_from_previous_step>을 엽니다.
  4. TempoMonolithic 인스턴스의 Pod가 준비되면 클러스터 내부의 tempo-<metadata_name_of_tempomonolithic_cr>:4317 (OTLP/gRPC) 및 tempo-<metadata_name_of_tempomonolithic_cr>:4318 (OTLP/HTTP) 끝점에 추적을 보낼 수 있습니다.

    Tempo API는 클러스터 내부의 tempo-<metadata_name_of_tempomonolithic_cr>:3200 끝점에서 사용할 수 있습니다.

3.1.4. 오브젝트 스토리지 설정

지원되는 오브젝트 스토리지를 설정할 때 다음 구성 매개변수를 사용할 수 있습니다.

표 3.1. 필수 시크릿 매개변수
스토리지 공급자

시크릿 매개변수

Red Hat OpenShift Data Foundation

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>

Amazon S3 with Security Token Service (STS)

name: tempostack-dev-s3 # example

bucket: <s3_bucket_name> # Amazon S3 documentation

region: <s3_region>

role_arn: <s3_role_arn>

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

3.1.4.1. 보안 토큰 서비스를 사용하여 Amazon S3 스토리지 설정

AWS CLI(명령줄 인터페이스)를 사용하여 STS(Security Token Service)를 사용하여 Amazon S3 스토리지를 설정할 수 있습니다.

중요

보안 토큰 서비스를 사용하는 Amazon S3 스토리지는 기술 프리뷰 기능 전용입니다. 기술 프리뷰 기능은 Red Hat 프로덕션 서비스 수준 계약(SLA)에서 지원되지 않으며 기능적으로 완전하지 않을 수 있습니다. 따라서 프로덕션 환경에서 사용하는 것은 권장하지 않습니다. 이러한 기능을 사용하면 향후 제품 기능을 조기에 이용할 수 있어 개발 과정에서 고객이 기능을 테스트하고 피드백을 제공할 수 있습니다.

Red Hat 기술 프리뷰 기능의 지원 범위에 대한 자세한 내용은 기술 프리뷰 기능 지원 범위를 참조하십시오.

사전 요구 사항

  • 최신 버전의 AWS CLI가 설치되어 있습니다.

프로세스

  1. AWS S3 버킷을 생성합니다.
  2. TempoStack 인스턴스의 서비스 계정으로 다음 단계에서 생성된 AWS IAM 역할에 대한 신뢰 관계를 설정할 AWS IAM 정책에 대해 다음 trust.json 파일을 생성합니다.

    {
        "Version": "2012-10-17",
        "Statement": [
          {
            "Effect": "Allow",
            "Principal": {
              "Federated": "arn:aws:iam::${<aws_account_id>}:oidc-provider/${<oidc_provider>}" 1
            },
            "Action": "sts:AssumeRoleWithWebIdentity",
            "Condition": {
              "StringEquals": {
                "${OIDC_PROVIDER}:sub": [
                  "system:serviceaccount:${<openshift_project_for_tempostack>}:tempo-${<tempostack_cr_name>}" 2
                  "system:serviceaccount:${<openshift_project_for_tempostack>}:tempo-${<tempostack_cr_name>}-query-frontend"
               ]
             }
           }
         }
        ]
    }
    1
    OpenShift Container Platform에서 구성한 OIDC 공급자입니다. 다음 명령을 실행하여 구성된 OIDC 공급자 값을 가져올 수 있습니다. $ oc get authentication cluster -o json | jq -r '.spec.serviceAccountIssuer' | sed 'shttp[s]*://~g'.
    2
    TempoStack 인스턴스를 생성하려는 네임스페이스입니다.
  3. 생성한 trust.json 정책 파일을 연결하여 AWS IAM 역할을 생성합니다.

    $ aws iam create-role \
          --role-name "tempo-s3-access" \
          --assume-role-policy-document "file:///tmp/trust.json" \
          --query Role.Arn \
          --output text
  4. AWS IAM 정책을 생성된 역할에 연결합니다.

    $ aws iam attach-role-policy \
          --role-name "tempo-s3-access" \
          --policy-arn "arn:aws:iam::aws:policy/AmazonS3FullAccess"
  5. OpenShift Container Platform에서 다음과 같이 키를 사용하여 오브젝트 스토리지 보안을 생성합니다.

    apiVersion: v1
    kind: Secret
    metadata:
      name: minio-test
    stringData:
      bucket: <s3_bucket_name>
      region: <s3_region>
      role_arn: <s3_role_arn>
    type: Opaque

3.1.5. 추가 리소스

Red Hat logoGithubRedditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

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

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

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

Red Hat 소개

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

© 2024 Red Hat, Inc.