4.3. 영구 스토리지 구성


중요

미터링은 더 이상 사용되지 않는 기능입니다. 더 이상 사용되지 않는 기능은 여전히 OpenShift Container Platform에 포함되어 있으며 계속 지원됩니다. 그러나 이 기능은 향후 릴리스에서 제거될 예정이므로 새로운 배포에는 사용하지 않는 것이 좋습니다.

OpenShift Container Platform에서 더 이상 사용되지 않거나 삭제된 주요 기능의 최신 목록은 OpenShift Container Platform 릴리스 노트에서 더 이상 사용되지 않고 삭제된 기능 섹션을 참조하십시오.

미터링에는 Metering Operator에서 수집한 데이터를 유지하고 보고서 결과를 저장하기 위해 영구 스토리지가 필요합니다. 다양한 스토리지 공급자 및 스토리지 형식이 지원됩니다. 스토리지 공급자를 선택하고 예제 구성 파일을 수정하여 미터링 설치에 대한 영구 스토리지를 구성합니다.

4.3.1. Amazon S3에 데이터 저장

미터링은 기존 Amazon S3 버킷을 사용하거나 스토리지에 버킷을 생성할 수 있습니다.

참고

Metering 작업은 S3 버킷 데이터를 관리하거나 삭제하지 않습니다. 미터링 데이터를 저장하는 데 사용되는 S3 버킷은 수동으로 정리해야 합니다.

절차

  1. 아래 s3-storage.yaml 파일에서 spec.storage 섹션을 편집합니다.

    s3-storage.yaml 파일의 예

    apiVersion: metering.openshift.io/v1
    kind: MeteringConfig
    metadata:
      name: "operator-metering"
    spec:
      storage:
        type: "hive"
        hive:
          type: "s3"
          s3:
            bucket: "bucketname/path/" 
    1
    
            region: "us-west-1" 
    2
    
            secretName: "my-aws-secret" 
    3
    
            # Set to false if you want to provide an existing bucket, instead of
            # having metering create the bucket on your behalf.
            createBucket: true 
    4
    Copy to Clipboard Toggle word wrap

    1
    데이터를 저장하려는 버킷의 이름을 지정합니다. 선택 사항: 버킷 내 경로를 지정합니다.
    2
    버킷의 리전을 지정합니다.
    3
    data.aws-access-key-iddata.aws-secret-access-key 필드에 AWS 인증 정보를 포함하는 미터링 네임스페이스의 시크릿 이름입니다. 자세한 내용은 아래 Secret 오브젝트 예제를 참조하십시오.
    4
    기존 S3 버킷을 제공하거나 CreateBucket 권한이 있는 IAM 인증 정보를 제공하지 않으려면 이 필드를 false로 설정합니다.
  2. 다음 Secret 오브젝트를 템플릿으로 사용합니다.

    AWS Secret 오브젝트의 예

    apiVersion: v1
    kind: Secret
    metadata:
      name: my-aws-secret
    data:
      aws-access-key-id: "dGVzdAo="
      aws-secret-access-key: "c2VjcmV0Cg=="
    Copy to Clipboard Toggle word wrap

    참고

    aws-access-key-idaws-secret-access-key의 값은 base64로 인코딩되어야 합니다.

  3. 시크릿을 생성합니다.

    $ oc create secret -n openshift-metering generic my-aws-secret \
      --from-literal=aws-access-key-id=my-access-key \
      --from-literal=aws-secret-access-key=my-secret-key
    Copy to Clipboard Toggle word wrap
    참고

    이 명령은 aws-access-key-idaws-secret-access-key 값을 자동으로 base64로 인코딩합니다.

aws-access-key-idaws-secret-access-key 인증 정보에 버킷에 대한 읽기 및 쓰기 권한이 있어야 합니다. 다음 aws/read-write.json 파일은 필요한 권한을 부여하는 IAM 정책을 보여줍니다.

aws/read-write.json 파일의 예

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "1",
            "Effect": "Allow",
            "Action": [
                "s3:AbortMultipartUpload",
                "s3:DeleteObject",
                "s3:GetObject",
                "s3:HeadBucket",
                "s3:ListBucket",
                "s3:ListMultipartUploadParts",
                "s3:PutObject"
            ],
            "Resource": [
                "arn:aws:s3:::operator-metering-data/*",
                "arn:aws:s3:::operator-metering-data"
            ]
        }
    ]
}
Copy to Clipboard Toggle word wrap

spec.storage.hive.s3.createBuckettrue로 설정하거나 s3-storage.yaml에 설정하지 않은 경우 버킷 생성 및 삭제 권한이 포함된 aws/read-write-create.json 파일을 사용해야 합니다.

aws/read-write-create.json 파일의 예

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "1",
            "Effect": "Allow",
            "Action": [
                "s3:AbortMultipartUpload",
                "s3:DeleteObject",
                "s3:GetObject",
                "s3:HeadBucket",
                "s3:ListBucket",
                "s3:CreateBucket",
                "s3:DeleteBucket",
                "s3:ListMultipartUploadParts",
                "s3:PutObject"
            ],
            "Resource": [
                "arn:aws:s3:::operator-metering-data/*",
                "arn:aws:s3:::operator-metering-data"
            ]
        }
    ]
}
Copy to Clipboard Toggle word wrap

4.3.2. S3 호환 스토리지에 데이터 저장

Noobaa와 같은 S3 호환 스토리지를 사용할 수 있습니다.

절차

  1. 아래 s3-compatible-storage.yaml 파일 예에서 spec.storage 섹션을 편집합니다.

    s3-compatible-storage.yaml 파일의 예

    apiVersion: metering.openshift.io/v1
    kind: MeteringConfig
    metadata:
      name: "operator-metering"
    spec:
      storage:
        type: "hive"
        hive:
          type: "s3Compatible"
          s3Compatible:
            bucket: "bucketname" 
    1
    
            endpoint: "http://example:port-number" 
    2
    
            secretName: "my-aws-secret" 
    3
    Copy to Clipboard Toggle word wrap

    1
    S3 호환 버킷의 이름을 지정합니다.
    2
    스토리지의 끝점을 지정합니다.
    3
    data.aws-access-key-iddata.aws-secret-access-key 필드에 AWS 인증 정보를 포함하는 미터링 네임스페이스의 시크릿 이름입니다. 자세한 내용은 아래 Secret 오브젝트 예제를 참조하십시오.
  2. 다음 Secret 오브젝트를 템플릿으로 사용합니다.

    S3 호환 Secret 오브젝트의 예

    apiVersion: v1
    kind: Secret
    metadata:
      name: my-aws-secret
    data:
      aws-access-key-id: "dGVzdAo="
      aws-secret-access-key: "c2VjcmV0Cg=="
    Copy to Clipboard Toggle word wrap

4.3.3. Microsoft Azure에 데이터 저장

데이터를 Azure Blob 스토리지에 저장하려면 기존 컨테이너를 사용해야 합니다.

프로세스

  1. azure-blob-storage.yaml 파일에서 spec.storage 섹션을 편집합니다.

    azure-blob-storage.yaml 파일 예

    apiVersion: metering.openshift.io/v1
    kind: MeteringConfig
    metadata:
      name: "operator-metering"
    spec:
      storage:
        type: "hive"
        hive:
          type: "azure"
          azure:
            container: "bucket1" 
    1
    
            secretName: "my-azure-secret" 
    2
    
            rootDirectory: "/testDir" 
    3
    Copy to Clipboard Toggle word wrap

    1
    컨테이너 이름을 지정합니다.
    2
    미터링 네임스페이스에 시크릿을 지정합니다. 자세한 내용은 아래 Secret 오브젝트 예제를 참조하십시오.
    3
    선택 사항: 데이터를 저장하려는 디렉터리를 지정합니다.
  2. 다음 Secret 오브젝트를 템플릿으로 사용합니다.

    Azure Secret 오브젝트의 예

    apiVersion: v1
    kind: Secret
    metadata:
      name: my-azure-secret
    data:
      azure-storage-account-name: "dGVzdAo="
      azure-secret-access-key: "c2VjcmV0Cg=="
    Copy to Clipboard Toggle word wrap

  3. 시크릿을 생성합니다.

    $ oc create secret -n openshift-metering generic my-azure-secret \
      --from-literal=azure-storage-account-name=my-storage-account-name \
      --from-literal=azure-secret-access-key=my-secret-key
    Copy to Clipboard Toggle word wrap

4.3.4. Google Cloud Storage에 데이터 저장

데이터를 Google Cloud Storage에 저장하려면 기존 버킷을 사용해야 합니다.

프로세스

  1. 아래 gcs-storage.yaml 파일 예에서 spec.storage 섹션을 편집합니다.

    gcs-storage.yaml 파일 예

    apiVersion: metering.openshift.io/v1
    kind: MeteringConfig
    metadata:
      name: "operator-metering"
    spec:
      storage:
        type: "hive"
        hive:
          type: "gcs"
          gcs:
            bucket: "metering-gcs/test1" 
    1
    
            secretName: "my-gcs-secret" 
    2
    Copy to Clipboard Toggle word wrap

    1
    버킷 이름을 지정합니다. 선택적으로 데이터를 저장하려는 버킷 내 디렉터리를 지정할 수 있습니다.
    2
    미터링 네임스페이스에 시크릿을 지정합니다. 자세한 내용은 아래 Secret 오브젝트 예제를 참조하십시오.
  2. 다음 Secret 오브젝트를 템플릿으로 사용합니다.

    Google Cloud Storage Secret 오브젝트의 예

    apiVersion: v1
    kind: Secret
    metadata:
      name: my-gcs-secret
    data:
      gcs-service-account.json: "c2VjcmV0Cg=="
    Copy to Clipboard Toggle word wrap

  3. 시크릿을 생성합니다.

    $ oc create secret -n openshift-metering generic my-gcs-secret \
      --from-file gcs-service-account.json=/path/to/my/service-account-key.json
    Copy to Clipboard Toggle word wrap

4.3.5. 공유 볼륨에 데이터 저장

미터링은 기본적으로 스토리지를 구성하지 않습니다. 그러나 ReadWriteMany PV(영구 볼륨)를 사용하거나 미터링 스토리지에 대한 ReadWriteMany PV를 프로비저닝하는 모든 스토리지 클래스를 사용할 수 있습니다.

참고

NFS를 프로덕션 환경에서 사용하지 않는 것이 좋습니다. RHEL의 NFS 서버를 스토리지 백엔드로 사용하면 미터링 요구 사항을 충족하지 못하고 Metering Operator가 제대로 작동하는 데 필요한 성능을 제공하지 못할 수 있습니다.

마켓플레이스의 다른 NFS 구현에는 PNFS(Parallel Network File System)와 같은 이러한 문제가 발생하지 않을 수 있습니다. pNFS는 분산 및 병렬 기능을 갖춘 NFS 구현입니다. OpenShift Container Platform 핵심 구성 요소에 대해 완료된 테스트에 대한 자세한 내용은 개별 NFS 구현 벤더에 문의하십시오.

프로세스

  1. 스토리지에 대한 ReadWriteMany 영구 볼륨을 사용하도록 shared-storage.yaml 파일을 수정합니다.

    apiVersion: metering.openshift.io/v1
    kind: MeteringConfig
    metadata:
      name: "operator-metering"
    spec:
      storage:
        type: "hive"
        hive:
          type: "sharedPVC"
          sharedPVC:
            claimName: "metering-nfs" 
    1
    
            # Uncomment the lines below to provision a new PVC using the specified storageClass. 
    2
    
            # createPVC: true
            # storageClass: "my-nfs-storage-class"
            # size: 5Gi
    Copy to Clipboard Toggle word wrap

    아래 설정 옵션 중 하나를 선택합니다.

    1
    storage.hive.sharedPVC.claimName을 기존 ReadWriteMany 영구 볼륨 클레임(PVC) 이름으로 설정합니다. 동적 볼륨 프로비저닝이 없거나 영구 볼륨 생성 방법에 대한 더 많은 제어가 필요한 경우 이 구성이 필요합니다.
    2
    storage.hive.sharedPVC.createPVCtrue로 설정하고 storage.hive.sharedPVC.storageClass를 ReadWriteMany 액세스 모드가 있는 스토리지 클래스 이름으로 설정합니다. 이 설정은 동적 볼륨 프로비저닝을 사용하여 자동으로 볼륨을 생성합니다.
  2. 미터링을 위해 NFS 서버를 배포하는 데 필요한 다음 리소스 오브젝트를 생성합니다. oc create -f <file-name>.yaml 명령을 사용하여 오브젝트 YAML 파일을 생성합니다.

    1. PersistentVolume 리소스 오브젝트를 구성합니다.

      nfs_persistentvolume.yaml 예제 파일

      apiVersion: v1
      kind: PersistentVolume
      metadata:
        name: nfs
        labels:
          role: nfs-server
      spec:
        capacity:
          storage: 5Gi
        accessModes:
        - ReadWriteMany
        storageClassName: nfs-server 
      1
      
        nfs:
          path: "/"
          server: REPLACEME
        persistentVolumeReclaimPolicy: Delete
      Copy to Clipboard Toggle word wrap

      1
      [kind: StorageClass].metadata.name 필드 값.
    2. nfs-server 역할을 사용하여 Pod 리소스 오브젝트를 구성합니다.

      nfs_server.yaml 예제 파일

      apiVersion: v1
      kind: Pod
      metadata:
        name: nfs-server
        labels:
          role: nfs-server
      spec:
        containers:
          - name: nfs-server
            image: <image_name> 
      1
      
            imagePullPolicy: IfNotPresent
            ports:
              - name: nfs
                containerPort: 2049
            securityContext:
              privileged: true
            volumeMounts:
            - mountPath: "/mnt/data"
              name: local
        volumes:
          - name: local
            emptyDir: {}
      Copy to Clipboard Toggle word wrap

      1
      NFS 서버 이미지를 설치합니다.
    3. nfs-server 역할을 사용하여 Service 리소스 오브젝트를 구성합니다.

      nfs_service.yaml 예제 파일

      apiVersion: v1
      kind: Service
      metadata:
        name: nfs-service
        labels:
          role: nfs-server
      spec:
        ports:
        - name: 2049-tcp
          port: 2049
          protocol: TCP
          targetPort: 2049
        selector:
          role: nfs-server
        sessionAffinity: None
        type: ClusterIP
      Copy to Clipboard Toggle word wrap

    4. StorageClass 리소스 오브젝트를 구성합니다.

      nfs_storageclass.yaml 예제 파일

      apiVersion: storage.k8s.io/v1
      kind: StorageClass
      metadata:
        name: nfs-server 
      1
      
      provisioner: example.com/nfs
      parameters:
        archiveOnDelete: "false"
      reclaimPolicy: Delete
      volumeBindingMode: Immediate
      Copy to Clipboard Toggle word wrap

      1
      [kind: PersistentVolume].spec.storageClassName 필드 값입니다.
주의

NFS 스토리지 및 관련 리소스 오브젝트의 구성은 미터링 스토리지에 사용하는 NFS 서버 이미지에 따라 다릅니다.

맨 위로 이동
Red Hat logoGithubredditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

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

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

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

Red Hat 소개

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

Theme

© 2025 Red Hat