2.2. Loki 오브젝트 스토리지


Loki Operator는 AWS S3MinioOpenShift Data Foundation 과 같은 기타 S3 호환 오브젝트 저장소를 지원합니다. Azure,GCSSwift 도 지원됩니다.

Loki 스토리지에 권장되는 nomenclature는 logging-loki- <your_storage_provider>입니다.

다음 표는 각 스토리지 공급자에 대한 LokiStack CR(사용자 정의 리소스) 내의 유형 값을 보여줍니다. 자세한 내용은 스토리지 공급자의 섹션을 참조하십시오.

Expand
표 2.2. 시크릿 유형 빠른 참조
스토리지 공급자보안 유형

AWS

s3

Azure

azure

Google Cloud

gcs

Minio

s3

OpenShift Data Foundation

s3

Swift

swift

2.2.1. AWS 스토리지

사전 요구 사항

프로세스

  • 다음 명령을 실행하여 이름 logging-loki-aws 를 사용하여 오브젝트 스토리지 시크릿을 생성합니다.

    $ oc create secret generic logging-loki-aws \
      --from-literal=bucketnames="<bucket_name>" \
      --from-literal=endpoint="<aws_bucket_endpoint>" \
      --from-literal=access_key_id="<aws_access_key_id>" \
      --from-literal=access_key_secret="<aws_access_key_secret>" \
      --from-literal=region="<aws_region_of_your_bucket>"
    Copy to Clipboard Toggle word wrap

2.2.1.1. STS가 활성화된 클러스터의 AWS 스토리지

클러스터에 STS가 활성화된 경우 CCO(Cloud Credential Operator)는 AWS 토큰을 사용하여 단기 인증을 지원합니다.

다음 명령을 실행하여 Loki 오브젝트 스토리지 보안을 수동으로 생성할 수 있습니다.

$ oc -n openshift-logging create secret generic "logging-loki-aws" \
  --from-literal=bucketnames="<s3_bucket_name>" \
  --from-literal=region="<bucket_region>" \
  --from-literal=audience="<oidc_audience>" 
1
Copy to Clipboard Toggle word wrap
1
선택적 주석, 기본값은 openshift 입니다.

2.2.2. Azure 스토리지

사전 요구 사항

  • Loki Operator를 설치했습니다.
  • OpenShift CLI(oc)를 설치합니다.
  • Azure에 버킷 을 생성했습니다.

프로세스

  • 다음 명령을 실행하여 name logging-loki-azure 를 사용하여 오브젝트 스토리지 시크릿을 생성합니다.

    $ oc create secret generic logging-loki-azure \
      --from-literal=container="<azure_container_name>" \
      --from-literal=environment="<azure_environment>" \ 
    1
    
      --from-literal=account_name="<azure_account_name>" \
      --from-literal=account_key="<azure_account_key>"
    Copy to Clipboard Toggle word wrap
    1
    지원되는 환경 값은 AzureGlobal,AzureChinaCloud,AzureGermanCloud 또는 AzureUSGovernment 입니다.

2.2.2.1. Microsoft Entra Workload ID를 사용하는 클러스터용 Azure 스토리지

클러스터에 Microsoft Entra Workload ID가 활성화된 경우 CCO(Cloud Credential Operator)는 Workload ID를 사용하여 단기 인증을 지원합니다.

다음 명령을 실행하여 Loki 오브젝트 스토리지 보안을 수동으로 생성할 수 있습니다.

$ oc -n openshift-logging create secret generic logging-loki-azure \
--from-literal=environment="<azure_environment>" \
--from-literal=account_name="<storage_account_name>" \
--from-literal=container="<container_name>"
Copy to Clipboard Toggle word wrap

2.2.3. Google Cloud Platform 스토리지

사전 요구 사항

  • Loki Operator를 설치했습니다.
  • OpenShift CLI(oc)를 설치합니다.
  • GCP(Google Cloud Platform)에 프로젝트를 생성했습니다.
  • 동일한 프로젝트에 버킷 을 생성했습니다.
  • GCP 인증을 위해 동일한 프로젝트에 서비스 계정을 생성하셨습니다.

프로세스

  1. GCP에서 수신한 서비스 계정 인증 정보를 key.json 이라는 파일에 복사합니다.
  2. 다음 명령을 실행하여 이름 logging-loki-gcs 를 사용하여 오브젝트 스토리지 시크릿을 생성합니다.

    $ oc create secret generic logging-loki-gcs \
      --from-literal=bucketname="<bucket_name>" \
      --from-file=key.json="<path/to/key.json>"
    Copy to Clipboard Toggle word wrap

2.2.4. Minio 스토리지

사전 요구 사항

  • Loki Operator를 설치했습니다.
  • OpenShift CLI(oc)를 설치합니다.
  • Minio 가 클러스터에 배포되어 있습니다.
  • Minio에 버킷을 생성했습니다.

프로세스

  • 다음 명령을 실행하여 name logging-loki-minio 를 사용하여 오브젝트 스토리지 시크릿을 생성합니다.

    $ oc create secret generic logging-loki-minio \
      --from-literal=bucketnames="<bucket_name>" \
      --from-literal=endpoint="<minio_bucket_endpoint>" \
      --from-literal=access_key_id="<minio_access_key_id>" \
      --from-literal=access_key_secret="<minio_access_key_secret>"
    Copy to Clipboard Toggle word wrap

2.2.5. OpenShift Data Foundation 스토리지

사전 요구 사항

프로세스

  1. openshift-logging 네임스페이스에 ObjectBucketClaim 사용자 정의 리소스를 생성합니다.

    apiVersion: objectbucket.io/v1alpha1
    kind: ObjectBucketClaim
    metadata:
      name: loki-bucket-odf
      namespace: openshift-logging
    spec:
      generateBucketName: loki-bucket-odf
      storageClassName: openshift-storage.noobaa.io
    Copy to Clipboard Toggle word wrap
  2. 다음 명령을 실행하여 관련 ConfigMap 오브젝트에서 버킷 속성을 가져옵니다.

    BUCKET_HOST=$(oc get -n openshift-logging configmap loki-bucket-odf -o jsonpath='{.data.BUCKET_HOST}')
    BUCKET_NAME=$(oc get -n openshift-logging configmap loki-bucket-odf -o jsonpath='{.data.BUCKET_NAME}')
    BUCKET_PORT=$(oc get -n openshift-logging configmap loki-bucket-odf -o jsonpath='{.data.BUCKET_PORT}')
    Copy to Clipboard Toggle word wrap
  3. 다음 명령을 실행하여 관련 시크릿에서 버킷 액세스 키를 가져옵니다.

    ACCESS_KEY_ID=$(oc get -n openshift-logging secret loki-bucket-odf -o jsonpath='{.data.AWS_ACCESS_KEY_ID}' | base64 -d)
    SECRET_ACCESS_KEY=$(oc get -n openshift-logging secret loki-bucket-odf -o jsonpath='{.data.AWS_SECRET_ACCESS_KEY}' | base64 -d)
    Copy to Clipboard Toggle word wrap
  4. 다음 명령을 실행하여 logging-loki-odf 라는 이름으로 오브젝트 스토리지 시크릿을 생성합니다.

    $ oc create -n openshift-logging secret generic logging-loki-odf \
    --from-literal=access_key_id="<access_key_id>" \
    --from-literal=access_key_secret="<secret_access_key>" \
    --from-literal=bucketnames="<bucket_name>" \
    --from-literal=endpoint="https://<bucket_host>:<bucket_port>"
    Copy to Clipboard Toggle word wrap

2.2.6. Swift 스토리지

사전 요구 사항

  • Loki Operator를 설치했습니다.
  • OpenShift CLI(oc)를 설치합니다.
  • Swift에 버킷 을 생성했습니다.

프로세스

  • 다음 명령을 실행하여 이름 logging-loki-swift 를 사용하여 오브젝트 스토리지 시크릿을 생성합니다.

    $ oc create secret generic logging-loki-swift \
      --from-literal=auth_url="<swift_auth_url>" \
      --from-literal=username="<swift_usernameclaim>" \
      --from-literal=user_domain_name="<swift_user_domain_name>" \
      --from-literal=user_domain_id="<swift_user_domain_id>" \
      --from-literal=user_id="<swift_user_id>" \
      --from-literal=password="<swift_password>" \
      --from-literal=domain_id="<swift_domain_id>" \
      --from-literal=domain_name="<swift_domain_name>" \
      --from-literal=container_name="<swift_container_name>"
    Copy to Clipboard Toggle word wrap
  • 선택적으로 다음 명령을 실행하여 프로젝트별 데이터, 지역 또는 둘 다를 제공할 수 있습니다.

    $ oc create secret generic logging-loki-swift \
      --from-literal=auth_url="<swift_auth_url>" \
      --from-literal=username="<swift_usernameclaim>" \
      --from-literal=user_domain_name="<swift_user_domain_name>" \
      --from-literal=user_domain_id="<swift_user_domain_id>" \
      --from-literal=user_id="<swift_user_id>" \
      --from-literal=password="<swift_password>" \
      --from-literal=domain_id="<swift_domain_id>" \
      --from-literal=domain_name="<swift_domain_name>" \
      --from-literal=container_name="<swift_container_name>" \
      --from-literal=project_id="<swift_project_id>" \
      --from-literal=project_name="<swift_project_name>" \
      --from-literal=project_domain_id="<swift_project_domain_id>" \
      --from-literal=project_domain_name="<swift_project_domain_name>" \
      --from-literal=region="<swift_region>"
    Copy to Clipboard Toggle word wrap

2.2.7. 단기 인증 정보를 사용하는 클러스터에 Loki 로그 저장소 배포

일부 스토리지 공급자의 경우 설치 중에 Cloud Credential Operator 유틸리티(ccoctl)를 사용하여 단기 인증 정보를 구현할 수 있습니다. 이러한 인증 정보는 OpenShift Container Platform 클러스터 외부에서 생성 및 관리됩니다. 자세한 내용은 구성 요소에 대한 단기 인증 정보가 있는 수동 모드를 참조하십시오.

참고

이 인증 정보 전략을 사용하는 클러스터에서 Loki Operator의 새 설치 중에 단기 인증 정보 인증을 구성해야 합니다. 이 기능을 사용하기 위해 다른 인증 정보 전략을 사용하는 기존 클러스터를 구성할 수 없습니다.

워크로드 ID 페더레이션을 단기 토큰과 함께 사용하여 클라우드 기반 로그 저장소에 인증할 수 있습니다. 워크로드 ID 페더레이션을 사용하면 클러스터에 수명이 긴 인증 정보를 저장할 필요가 없으므로 인증 정보 유출 위험을 줄이고 시크릿 관리를 단순화할 수 있습니다.

사전 요구 사항

  • 관리자 권한이 있습니다.

프로세스

  • 다음 옵션 중 하나를 사용하여 인증을 활성화합니다.

    • OpenShift Container Platform 웹 콘솔을 사용하여 Loki Operator를 설치한 경우 시스템은 수명이 짧은 토큰을 사용하는 클러스터를 자동으로 탐지합니다. 역할을 생성하고 Loki Operator에서 보안을 채우는 CredentialsRequest 오브젝트를 생성하는 데 필요한 데이터를 제공하라는 메시지가 표시됩니다.
    • OpenShift CLI(oc)를 사용하여 Loki Operator를 설치한 경우 Subscription 오브젝트를 수동으로 생성해야 합니다. 다음 샘플에 표시된 대로 스토리지 공급자에 적절한 템플릿을 사용합니다. 이 인증 전략은 샘플 내에 표시된 스토리지 공급자만 지원합니다.

      Microsoft Azure 샘플 구독

      apiVersion: operators.coreos.com/v1alpha1
      kind: Subscription
      metadata:
        name: loki-operator
        namespace: openshift-operators-redhat
      spec:
        channel: "stable-6.2"
        installPlanApproval: Manual
        name: loki-operator
        source: redhat-operators
        sourceNamespace: openshift-marketplace
        config:
          env:
            - name: CLIENTID
              value: <your_client_id>
            - name: TENANTID
              value: <your_tenant_id>
            - name: SUBSCRIPTIONID
              value: <your_subscription_id>
            - name: REGION
              value: <your_region>
      Copy to Clipboard Toggle word wrap

      AWS(Amazon Web Services) 샘플 서브스크립션

      apiVersion: operators.coreos.com/v1alpha1
      kind: Subscription
      metadata:
        name: loki-operator
        namespace: openshift-operators-redhat
      spec:
        channel: "stable-6.2"
        installPlanApproval: Manual
        name: loki-operator
        source: redhat-operators
        sourceNamespace: openshift-marketplace
        config:
          env:
          - name: ROLEARN
            value: <role_ARN>
      Copy to Clipboard Toggle word wrap

      GCP(Google Cloud Platform) 샘플 서브스크립션

      apiVersion: operators.coreos.com/v1alpha1
      kind: Subscription
      metadata:
        name: loki-operator
        namespace: openshift-operators-redhat
      spec:
        channel: "stable-6.2"
        installPlanApproval: Manual
        name: loki-operator
        source:  redhat-operators
        sourceNamespace: openshift-marketplace
        config:
          env:
          - name: PROJECT_NUMBER
            value: <your_project_number>
          - name: POOL_ID
            value: <your_pool_id>
          - name: PROVIDER_ID
            value: <your_provider_id>
          - name: SERVICE_ACCOUNT_EMAIL
            value: example@mydomain.iam.gserviceaccount.com
      Copy to Clipboard Toggle word wrap

2.2.7.2. 웹 콘솔을 사용하여 LokiStack 사용자 정의 리소스 생성

OpenShift Container Platform 웹 콘솔을 사용하여 LokiStack CR(사용자 정의 리소스)을 생성할 수 있습니다.

사전 요구 사항

  • 관리자 권한이 있습니다.
  • OpenShift Container Platform 웹 콘솔에 액세스할 수 있습니다.
  • Loki Operator를 설치했습니다.

프로세스

  1. Operator 설치된 Operator 페이지로 이동합니다. 모든 인스턴스 탭을 클릭합니다.
  2. Create new 드롭다운 목록에서 LokiStack 을 선택합니다.
  3. YAML 보기를 선택한 다음 다음 템플릿을 사용하여 LokiStack CR을 생성합니다.

    apiVersion: loki.grafana.com/v1
    kind: LokiStack
    metadata:
      name: logging-loki 
    1
    
      namespace: openshift-logging
    spec:
      size: 1x.small 
    2
    
      storage:
        schemas:
          - effectiveDate: '2023-10-15'
            version: v13
        secret:
          name: logging-loki-s3 
    3
    
          type: s3 
    4
    
          credentialMode: 
    5
    
      storageClassName: <storage_class_name> 
    6
    
      tenants:
        mode: openshift-logging
    Copy to Clipboard Toggle word wrap
    1
    logging-loki 라는 이름을 사용합니다.
    2
    배포 크기를 지정합니다. 로깅 5.8 이상 버전에서 Loki의 프로덕션 인스턴스에 지원되는 크기 옵션은 1x.extra-small, 1x.small, 또는 1x.medium입니다.
    3
    로그 스토리지에 사용되는 시크릿을 지정합니다.
    4
    해당 스토리지 유형을 지정합니다.
    5
    선택적 필드, 로깅 5.9 이상 지원되는 사용자 구성 값은 다음과 같습니다. static 은 Secret에 저장된 인증 정보를 사용하여 지원되는 모든 오브젝트 스토리지 유형에 사용할 수 있는 기본 인증 모드입니다. 인증 정보 소스에서 검색된 단기 토큰에 대한 token입니다. 이 모드에서 정적 구성에는 오브젝트 스토리지에 필요한 인증 정보가 포함되어 있지 않습니다. 대신 서비스를 사용하여 런타임 중에 생성되므로 더 짧은 자격 증명과 훨씬 더 세분화된 제어가 가능합니다. 이 인증 모드는 모든 오브젝트 스토리지 유형에서 지원되지 않습니다. token-cco 는 Loki가 관리 STS 모드에서 실행되고 STS/WIF 클러스터에서 CCO를 사용할 때 기본값입니다.
    6
    임시 스토리지의 스토리지 클래스 이름을 입력합니다. 최상의 성능을 위해서는 블록 스토리지를 할당하는 스토리지 클래스를 지정합니다. oc get storageclasses 명령을 사용하여 클러스터에 사용 가능한 스토리지 클래스를 나열할 수 있습니다.

2.2.7.3. CLI를 사용하여 Loki 오브젝트 스토리지의 보안 생성

Loki 오브젝트 스토리지를 구성하려면 보안을 생성해야 합니다. OpenShift CLI(oc)를 사용하여 이 작업을 수행할 수 있습니다.

사전 요구 사항

  • 관리자 권한이 있습니다.
  • Loki Operator를 설치했습니다.
  • OpenShift CLI(oc)를 설치합니다.

프로세스

  • 다음 명령을 실행하여 인증서 및 키 파일이 포함된 디렉터리에 보안을 생성합니다.

    $ oc create secret generic -n openshift-logging <your_secret_name> \
     --from-file=tls.key=<your_key_file>
     --from-file=tls.crt=<your_crt_file>
     --from-file=ca-bundle.crt=<your_bundle_file>
     --from-literal=username=<your_username>
     --from-literal=password=<your_password>
    Copy to Clipboard Toggle word wrap
참고

최상의 결과를 위해 일반 또는 불투명한 보안을 사용하십시오.

검증

  • 다음 명령을 실행하여 보안이 생성되었는지 확인합니다.

    $ oc get secrets
    Copy to Clipboard Toggle word wrap

2.2.8. Loki 로그에 대한 세분화된 액세스

Red Hat OpenShift Logging Operator는 기본적으로 모든 사용자에게 로그에 대한 액세스 권한을 부여하지 않습니다. 관리자는 Operator가 업그레이드되고 이전 구성이 적용되지 않는 한 사용자 액세스를 구성해야 합니다. 구성 및 필요에 따라 다음을 사용하여 로그에 대한 미세 액세스를 구성할 수 있습니다.

  • 클러스터 전체 정책
  • 네임스페이스 범위 정책
  • 사용자 정의 관리자 그룹 생성

관리자는 배포에 적합한 역할 바인딩 및 클러스터 역할 바인딩을 생성해야 합니다. Red Hat OpenShift Logging Operator는 다음과 같은 클러스터 역할을 제공합니다.

  • cluster-logging-application-view 는 애플리케이션 로그를 읽을 수 있는 권한을 부여합니다.
  • cluster-logging-infrastructure-view 는 인프라 로그를 읽을 수 있는 권한을 부여합니다.
  • cluster-logging-audit-view 는 감사 로그를 읽을 수 있는 권한을 부여합니다.

이전 버전에서 업그레이드한 경우 추가 클러스터 역할 logging-application-logs-reader 및 관련 클러스터 역할 바인딩 logging-all-authenticated-application-logs-reader 는 이전 버전과의 호환성을 제공하여 네임스페이스에서 인증된 모든 사용자 읽기 액세스를 허용합니다.

참고

네임스페이스별 액세스 권한이 있는 사용자는 애플리케이션 로그를 쿼리할 때 네임스페이스를 제공해야 합니다.

2.2.8.1. 클러스터 전체 액세스

클러스터 역할 바인딩 리소스는 클러스터 역할을 참조하고 클러스터 전체 권한을 설정합니다.

클러스터 역할 바인딩 예

kind: ClusterRoleBinding
apiVersion: rbac.authorization.k8s.io/v1
metadata:
  name: logging-all-application-logs-reader
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: cluster-logging-application-view 
1

subjects: 
2

- kind: Group
  name: system:authenticated
  apiGroup: rbac.authorization.k8s.io
Copy to Clipboard Toggle word wrap

1
추가 ClusterRolescluster-logging-infrastructure-viewcluster-logging-audit-view 입니다.
2
이 개체가 적용되는 사용자 또는 그룹을 지정합니다.

2.2.8.2. 네임스페이스가 지정된 액세스

RoleBinding 리소스는 ClusterRole 오브젝트와 함께 사용하여 사용자 또는 그룹이 로그에 액세스할 수 있는 네임스페이스를 정의할 수 있습니다.

RoleBinding의 예

kind: RoleBinding
apiVersion: rbac.authorization.k8s.io/v1
metadata:
  name: allow-read-logs
  namespace: log-test-0 
1

roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: cluster-logging-application-view
subjects:
- kind: User
  apiGroup: rbac.authorization.k8s.io
  name: testuser-0
Copy to Clipboard Toggle word wrap

1
RoleBinding 이 적용되는 네임스페이스를 지정합니다.

2.2.8.3. 사용자 정의 관리자 그룹 액세스

광범위한 권한이 필요한 여러 사용자가 포함된 대규모 배포가 있는 경우 adminGroup 필드를 사용하여 사용자 지정 그룹을 생성할 수 있습니다. LokiStack CR의 adminGroups 필드에 지정된 그룹의 멤버인 사용자는 관리자로 간주됩니다.

관리자는 cluster-logging-application-view 역할도 할당한 경우 모든 네임스페이스의 모든 애플리케이션 로그에 액세스할 수 있습니다.

LokiStack CR의 예

apiVersion: loki.grafana.com/v1
kind: LokiStack
metadata:
  name: logging-loki
  namespace: openshift-logging
spec:
  tenants:
    mode: openshift-logging 
1

    openshift:
      adminGroups: 
2

      - cluster-admin
      - custom-admin-group 
3
Copy to Clipboard Toggle word wrap

1
사용자 지정 관리 그룹은 이 모드에서만 사용할 수 있습니다.
2
이 필드에 빈 목록 [] 값을 입력하면 관리자 그룹이 비활성화됩니다.
3
기본 그룹 덮어쓰기(system:cluster-admins,cluster-admin,dedicated-admin)

2.2.9. cluster-admin 사용자 역할의 새 그룹 생성

중요

cluster-admin 사용자로 여러 네임스페이스에 대한 애플리케이션 로그를 쿼리합니다. 여기서 클러스터의 모든 네임스페이스 합계는 5120보다 큰 오류입니다: 입력 크기가 너무 긴 (XXXX > 5120) 오류가 발생했습니다. LokiStack의 로그에 대한 액세스를 보다 효과적으로 제어하려면 cluster-admin 사용자를 cluster-admin 그룹의 멤버로 설정합니다. cluster-admin 그룹이 없는 경우 해당 그룹을 생성하고 원하는 사용자를 추가합니다.

다음 절차에 따라 cluster-admin 권한이 있는 사용자를 위한 새 그룹을 생성합니다.

프로세스

  1. 다음 명령을 입력하여 새 그룹을 생성합니다.

    $ oc adm groups new cluster-admin
    Copy to Clipboard Toggle word wrap
  2. 다음 명령을 입력하여 원하는 사용자를 cluster-admin 그룹에 추가합니다.

    $ oc adm groups add-users cluster-admin <username>
    Copy to Clipboard Toggle word wrap
  3. 다음 명령을 입력하여 cluster-admin 사용자 역할을 그룹에 추가합니다.

    $ oc adm policy add-cluster-role-to-group cluster-admin cluster-admin
    Copy to Clipboard Toggle word wrap
맨 위로 이동
Red Hat logoGithubredditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

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

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

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

Red Hat 소개

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

Theme

© 2025 Red Hat