3.2. 개체 스토리지 설정
지원되는 개체 스토리지를 설정할 때 다음 구성 매개변수를 사용할 수 있습니다.
개체 저장소를 사용하려면 지원되는 개체 저장소를 설정하고 TempoStack 또는 TempoMonolithic 인스턴스를 배포하기 전에 개체 저장소 자격 증명에 대한 비밀을 생성해야 합니다.
| 스토리지 공급자 |
|---|
| 시크릿 매개변수 |
|
|
| MinIO |
| MinIO Operator 를 참조하십시오.
|
| Amazon S3 |
|
|
| 보안 토큰 서비스(STS)가 포함된 Amazon S3 |
|
|
| Microsoft Azure Blob Storage |
|
|
| Google Cloud의 Google Cloud Storage |
|
|
3.2.1. 보안 토큰 서비스를 사용하여 Amazon S3 스토리지 설정 링크 복사링크가 클립보드에 복사되었습니다!
보안 토큰 서비스(STS)와 AWS 명령줄 인터페이스(AWS CLI)를 사용하여 Amazon S3 스토리지를 설정할 수 있습니다. 선택적으로 CCO(Cloud Credential Operator)를 사용할 수도 있습니다.
Amazon S3 스토리지 및 STS와 함께 분산 추적 플랫폼을 사용하는 것은 기술 미리 보기 기능에 불과합니다. 기술 프리뷰 기능은 Red Hat 프로덕션 서비스 수준 계약(SLA)에서 지원되지 않으며 기능적으로 완전하지 않을 수 있습니다. 따라서 프로덕션 환경에서 사용하는 것은 권장하지 않습니다. 이러한 기능을 사용하면 향후 제품 기능을 조기에 이용할 수 있어 개발 과정에서 고객이 기능을 테스트하고 피드백을 제공할 수 있습니다.
Red Hat 기술 프리뷰 기능의 지원 범위에 대한 자세한 내용은 기술 프리뷰 기능 지원 범위를 참조하십시오.
사전 요구 사항
- AWS CLI의 최신 버전을 설치했습니다.
- CCO를 사용하려면 클러스터에 CCO를 설치하고 구성해야 합니다.
프로세스
- AWS S3 버킷을 생성합니다.
다음 단계에서 생성할 AWS IAM 역할과
TempoStack또는TempoMonolithic인스턴스의 서비스 계정 간에 신뢰 관계(trust relationship)를 설정하기 위해, AWS Identity and Access Management (AWS IAM) 정책용trust.json파일을 다음과 같이 생성하십시오.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_tempo>:tempo-<tempo_custom_resource_name>"2 "system:serviceaccount:<openshift_project_for_tempo>:tempo-<tempo_custom_resource_name>-query-frontend" ] } } } ] }작은 정보다음 명령을 실행하여 OIDC 공급자의 값을 얻을 수도 있습니다.
$ oc get authentication cluster -o json | jq -r '.spec.serviceAccountIssuer' | sed 's~http[s]*://~~g'생성된
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생성된 AWS IAM 역할에 AWS IAM 정책을 연결합니다. 다음 명령을 실행하면 됩니다.
$ aws iam attach-role-policy \ --role-name "tempo-s3-access" \ --policy-arn "arn:aws:iam::aws:policy/AmazonS3FullAccess"CCO를 사용하지 않는 경우 이 단계를 건너뛰세요. CCO를 사용하는 경우 Tempo Operator에 대한 클라우드 공급자 환경을 구성하세요. 다음 명령을 실행하면 됩니다.
$ oc patch subscription <tempo_operator_sub> \1 -n <tempo_operator_namespace> \2 --type='merge' -p '{"spec": {"config": {"env": [{"name": "ROLEARN", "value": "'"<role_arn>"'"}]}}}'3 OpenShift 컨테이너 플랫폼에서 다음과 같이 키를 사용하여 개체 저장소 비밀을 만듭니다.
apiVersion: v1 kind: Secret metadata: name: <secret_name> stringData: bucket: <s3_bucket_name> region: <s3_region> role_arn: <s3_role_arn> type: Opaque개체 저장소 시크릿이 생성되면 다음과 같이 Distributed Tracing Platform 인스턴스의 관련 사용자 지정 리소스를 업데이트합니다.
TempoStack사용자 정의 리소스 예시apiVersion: tempo.grafana.com/v1alpha1 kind: TempoStack metadata: name: <name> namespace: <namespace> spec: # ... storage: secret:1 name: <secret_name> type: s3 credentialMode: token-cco2 # ...TempoMonolithic사용자 정의 리소스 예시apiVersion: tempo.grafana.com/v1alpha1 kind: TempoMonolithic metadata: name: <name> namespace: <namespace> spec: # ... storage: traces: backend: s3 s3: secret: <secret_name>1 credentialMode: token-cco2 # ...
3.2.2. 보안 토큰 서비스를 사용하여 Azure 저장소 설정 링크 복사링크가 클립보드에 복사되었습니다!
Azure 명령줄 인터페이스(Azure CLI)를 사용하여 보안 토큰 서비스(STS)로 Azure 저장소를 설정할 수 있습니다.
Azure 저장소 및 STS와 함께 분산 추적 플랫폼을 사용하는 것은 기술 미리 보기 기능에 불과합니다. 기술 프리뷰 기능은 Red Hat 프로덕션 서비스 수준 계약(SLA)에서 지원되지 않으며 기능적으로 완전하지 않을 수 있습니다. 따라서 프로덕션 환경에서 사용하는 것은 권장하지 않습니다. 이러한 기능을 사용하면 향후 제품 기능을 조기에 이용할 수 있어 개발 과정에서 고객이 기능을 테스트하고 피드백을 제공할 수 있습니다.
Red Hat 기술 프리뷰 기능의 지원 범위에 대한 자세한 내용은 기술 프리뷰 기능 지원 범위를 참조하십시오.
사전 요구 사항
- Azure CLI의 최신 버전을 설치했습니다.
- Azure 스토리지 계정을 만들었습니다.
- Azure Blob 스토리지 컨테이너를 만들었습니다.
프로세스
다음 명령을 실행하여 Azure 관리 ID를 만듭니다.
$ az identity create \ --name <identity_name> \1 --resource-group <resource_group> \2 --location <region> \3 --subscription <subscription_id>4 Query Frontend를 제외한 Distributed Tracing Platform의 모든 컴포넌트에서 사용할 수 있도록, OpenShift Container Platform 서비스 계정에 대한 페더레이션 ID 자격 증명을 생성하십시오. 다음 명령을 실행하여 이 작업을 수행할 수 있습니다.
$ az identity federated-credential create \1 --name <credential_name> \2 --identity-name <identity_name> \ --resource-group <resource_group> \ --issuer <oidc_provider> \3 --subject <tempo_service_account_subject> \4 --audiences <audience>5 - 1
- 페더레이션 ID 자격 증명을 사용하면 OpenShift Container Platform 서비스 계정에서 시크릿을 저장하거나 Azure 서비스 주체 ID를 사용하지 않고도 Azure 관리 ID로 인증할 수 있습니다.
- 2
- 페더레이션 자격 증명에 대해 선택한 이름입니다.
- 3
- 클러스터에 대한 OpenID Connect(OIDC) 공급자의 URL입니다.
- 4
- 다음 형식을 따르는 클러스터의 서비스 계정 주체:
system:serviceaccount:<namespace>:tempo-<tempostack_instance_name>. - 5
- 페더레이션 ID 자격 증명을 위해 발급된 토큰의 유효성을 검사하는 데 사용될 예상 대상입니다. 일반적으로 이는
api://AzureADTokenExchange로 설정됩니다.
작은 정보다음 명령을 실행하면 클러스터의 OpenID Connect(OIDC) 발급자의 URL을 얻을 수 있습니다.
$ oc get authentication cluster -o json | jq -r .spec.serviceAccountIssuerDistributed Tracing Platform의 Query Frontend 구성 요소에서 사용할 OpenShift Container Platform 서비스 계정에 대한 페더레이션 ID 자격 증명을 만듭니다. 다음 명령을 실행하여 이 작업을 수행할 수 있습니다.
$ az identity federated-credential create \1 --name <credential_name>-frontend \2 --identity-name <identity_name> \ --resource-group <resource_group> \ --issuer <cluster_issuer> \ --subject <tempo_service_account_query_frontend_subject> \3 --audiences <audience> | jq생성된 Azure 관리 ID의 Azure 서비스 주체 ID에 Storage Blob Data Contributor 역할을 할당합니다. 다음 명령을 실행하여 이 작업을 수행할 수 있습니다.
$ az role assignment create \ --assignee <assignee_name> \1 --role "Storage Blob Data Contributor" \ --scope "/subscriptions/<subscription_id>- 1
- 1단계에서 만든 Azure 관리 ID의 Azure 서비스 주체 ID입니다.
작은 정보다음 명령을 실행하면
<assignee_name>값을 얻을 수 있습니다.$ az ad sp list --all --filter "servicePrincipalType eq 'ManagedIdentity'" | jq -r --arg idName <identity_name> '.[] | select(.displayName == $idName) | .appId'`1단계에서 만든 Azure 관리 ID의 클라이언트 ID를 가져옵니다.
CLIENT_ID=$(az identity show \ --name <identity_name> \1 --resource-group <resource_group> \2 --query clientId \ -o tsv)Azure 워크로드 ID 페더레이션(WIF)에 대한 OpenShift Container Platform 시크릿을 만듭니다. 다음 명령을 실행하여 이 작업을 수행할 수 있습니다.
$ oc create -n <tempo_namespace> secret generic azure-secret \ --from-literal=container=<azure_storage_azure_container> \1 --from-literal=account_name=<azure_storage_azure_accountname> \2 --from-literal=client_id=<client_id> \3 --from-literal=audience=<audience> \4 --from-literal=tenant_id=<tenant_id>5 개체 저장소 시크릿이 생성되면 다음과 같이 Distributed Tracing Platform 인스턴스의 관련 사용자 지정 리소스를 업데이트합니다.
TempoStack사용자 정의 리소스 예시apiVersion: tempo.grafana.com/v1alpha1 kind: TempoStack metadata: name: <name> namespace: <namespace> spec: # ... storage: secret:1 name: <secret_name> type: azure # ...- 1
- 이전 단계에서 만든 시크릿입니다.
TempoMonolithic사용자 정의 리소스 예시apiVersion: tempo.grafana.com/v1alpha1 kind: TempoMonolithic metadata: name: <name> namespace: <namespace> spec: # ... storage: traces: backend: azure azure: secret: <secret_name>1 # ...- 1
- 이전 단계에서 만든 시크릿입니다.
3.2.3. 보안 토큰 서비스를 사용하여 Google Cloud 스토리지 설정 링크 복사링크가 클립보드에 복사되었습니다!
Google Cloud CLI를 사용하여 보안 토큰 서비스(STS)로 Google Cloud Storage(GCS)를 설정할 수 있습니다.
GCS 및 STS와 함께 분산 추적 플랫폼을 사용하는 것은 기술 미리 보기 기능에 불과합니다. 기술 프리뷰 기능은 Red Hat 프로덕션 서비스 수준 계약(SLA)에서 지원되지 않으며 기능적으로 완전하지 않을 수 있습니다. 따라서 프로덕션 환경에서 사용하는 것은 권장하지 않습니다. 이러한 기능을 사용하면 향후 제품 기능을 조기에 이용할 수 있어 개발 과정에서 고객이 기능을 테스트하고 피드백을 제공할 수 있습니다.
Red Hat 기술 프리뷰 기능의 지원 범위에 대한 자세한 내용은 기술 프리뷰 기능 지원 범위를 참조하십시오.
사전 요구 사항
- Google Cloud CLI의 최신 버전을 설치했습니다.
프로세스
- Google Cloud에서 GCS 버킷을 만듭니다.
Google의 Identity and Access Management(IAM)를 사용하여 서비스 계정을 만들거나 재사용하세요.
SERVICE_ACCOUNT_EMAIL=$(gcloud iam service-accounts create <iam_service_account_name> \1 --display-name="Tempo Account" \ --project <project_id> \2 --format='value(email)' \ --quiet)프로젝트 수준에서 생성된 서비스 계정에 필요한 Google Cloud 역할을 바인딩합니다. 다음 명령을 실행하여 이 작업을 수행할 수 있습니다.
$ gcloud projects add-iam-policy-binding <project_id> \ --member "serviceAccount:$SERVICE_ACCOUNT_EMAIL" \ --role "roles/storage.objectAdmin"클러스터와 연결된 Google Cloud Workload Identity Pool의
POOL_ID값을 검색합니다. 이 값을 검색하는 방법은 환경에 따라 다르므로 다음 명령은 단지 예시일 뿐입니다.$ OIDC_ISSUER=$(oc get authentication.config cluster -o jsonpath='{.spec.serviceAccountIssuer}') \ && POOL_ID=$(echo "$OIDC_ISSUER" | awk -F'/' '{print $NF}' | sed 's/-oidc$//')IAM 정책 바인딩을 추가합니다. 다음 명령을 실행하면 됩니다.
$ gcloud iam service-accounts add-iam-policy-binding "$SERVICE_ACCOUNT_EMAIL" \1 --role="roles/iam.workloadIdentityUser" \ --member="principal://iam.googleapis.com/projects/<project_number>/locations/global/workloadIdentityPools/<pool_id>/subject/system:serviceaccount:<tempo_namespace>:tempo-<tempo_name>" \ --project=<project_id> \ --quiet \ && gcloud iam service-accounts add-iam-policy-binding "$SERVICE_ACCOUNT_EMAIL" \ --role="roles/iam.workloadIdentityUser" \ --member="principal://iam.googleapis.com/projects/<project_number>/locations/global/workloadIdentityPools/<pool_id>/subject/system:serviceaccount:<tempo_namespace>:tempo-<tempo_name>-query-frontend" \ --project=<project_id> \ --quiet && gcloud storage buckets add-iam-policy-binding "gs://$BUCKET_NAME" \ --role="roles/storage.admin" \ --member="serviceAccount:$SERVICE_ACCOUNT_EMAIL" \ --condition=None- 1
$SERVICE_ACCOUNT_EMAIL은 2단계의 명령 출력입니다.
TempoStack사용자 정의 리소스에서 사용할 스토리지 시크릿의key.json키에 대한 자격 증명 파일을 만듭니다. 다음 명령을 실행하여 이 작업을 수행할 수 있습니다.$ gcloud iam workload-identity-pools create-cred-config \ "projects/<project_number>/locations/global/workloadIdentityPools/<pool_id>/providers/<provider_id>" \ --service-account="$SERVICE_ACCOUNT_EMAIL" \ --credential-source-file=/var/run/secrets/storage/serviceaccount/token \1 --credential-source-type=text \ --output-file=<output_file_path>2 다음 명령을 실행하여 올바른 대상 고객을 확보하세요.
$ gcloud iam workload-identity-pools providers describe "$PROVIDER_NAME" --format='value(oidc.allowedAudiences[0])'다음 명령을 실행하여 분산 추적 플랫폼에 대한 저장소 시크릿을 만듭니다.
$ oc -n <tempo_namespace> create secret generic gcs-secret \ --from-literal=bucketname="<bucket_name>" \1 --from-literal=audience="<audience>" \2 --from-file=key.json=<output_file_path>3 개체 저장소 시크릿이 생성되면 다음과 같이 Distributed Tracing Platform 인스턴스의 관련 사용자 지정 리소스를 업데이트합니다.
TempoStack사용자 정의 리소스 예시apiVersion: tempo.grafana.com/v1alpha1 kind: TempoStack metadata: name: <name> namespace: <namespace> spec: # ... storage: secret:1 name: <secret_name> type: gcs # ...- 1
- 이전 단계에서 만든 시크릿입니다.
TempoMonolithic사용자 정의 리소스 예시apiVersion: tempo.grafana.com/v1alpha1 kind: TempoMonolithic metadata: name: <name> namespace: <namespace> spec: # ... storage: traces: backend: gcs gcs: secret: <secret_name>1 # ...- 1
- 이전 단계에서 만든 시크릿입니다.
3.2.4. IBM Cloud Object Storage 설정 링크 복사링크가 클립보드에 복사되었습니다!
OpenShift CLI( oc )를 사용하여 IBM Cloud Object Storage를 설정할 수 있습니다.
사전 요구 사항
-
OpenShift CLI(
oc)의 최신 버전을 설치했습니다. 자세한 내용은 Configure: CLI 도구 의 "OpenShift CLI 시작하기"를 참조하세요. -
IBM Cloud Command Line Interface(
ibmcloud)의 최신 버전을 설치했습니다. 자세한 내용은 IBM Cloud Docs 의 "IBM Cloud CLI 시작하기"를 참조하세요. IBM Cloud Object Storage를 구성했습니다. 자세한 내용은 IBM Cloud Docs 에서 "플랜 선택 및 인스턴스 생성"을 참조하세요.
- IBM Cloud Platform 계정이 있습니다.
- IBM Cloud Object Storage 플랜을 주문하셨습니다.
- IBM Cloud Object Storage 인스턴스를 생성했습니다.
프로세스
- IBM Cloud에서 오브젝트 저장소 버킷을 생성합니다.
IBM Cloud에서 다음 명령을 실행하여 객체 저장소 버킷에 연결하기 위한 서비스 키를 만듭니다.
$ ibmcloud resource service-key-create <tempo_bucket> Writer \ --instance-name <tempo_bucket> --parameters '{"HMAC":true}'IBM Cloud에서 다음 명령을 실행하여 버킷 자격 증명으로 비밀을 만듭니다.
$ oc -n <namespace> create secret generic <ibm_cos_secret> \ --from-literal=bucket="<tempo_bucket>" \ --from-literal=endpoint="<ibm_bucket_endpoint>" \ --from-literal=access_key_id="<ibm_bucket_access_key>" \ --from-literal=access_key_secret="<ibm_bucket_secret_key>"OpenShift Container Platform에서 다음과 같이 키를 사용하여 개체 저장소 비밀을 만듭니다.
apiVersion: v1 kind: Secret metadata: name: <ibm_cos_secret> stringData: bucket: <tempo_bucket> endpoint: <ibm_bucket_endpoint> access_key_id: <ibm_bucket_access_key> access_key_secret: <ibm_bucket_secret_key> type: OpaqueOpenShift Container Platform에서
TempoStack사용자 정의 리소스의 스토리지 섹션을 다음과 같이 설정합니다.apiVersion: tempo.grafana.com/v1alpha1 kind: TempoStack # ... spec: # ... storage: secret: name: <ibm_cos_secret>1 type: s3 # ...- 1
- IBM Cloud Storage 액세스 및 비밀 키가 포함된 비밀의 이름입니다.