10.8. 개체 버킷 클레임

개체 버킷 클레임은 워크로드에 대해 S3 호환 버킷 백엔드를 요청하는 데 사용할 수 있습니다.

다음 세 가지 방법으로 오브젝트 버킷 클레임을 생성할 수 있습니다.

개체 버킷 클레임은 새 액세스 키 및 시크릿 액세스 키를 포함하여 버킷에 대한 권한이 있는 NooBaa에 새 버킷 및 애플리케이션 계정을 생성합니다. 애플리케이션 계정은 단일 버킷에만 액세스할 수 있으며 기본적으로 새 버킷을 생성할 수 없습니다.

10.8.1. 동적 개체 버킷 클레임

영구 볼륨과 유사하게 애플리케이션의 YAML에 개체 버킷 클레임(OBC)의 세부 정보를 추가하고, 오브젝트 서비스 엔드포인트, 액세스 키 및 시크릿에서 사용 가능한 시크릿 액세스 키를 가져올 수 있습니다. 이 정보를 애플리케이션의 환경 변수로 동적으로 읽기가 쉽습니다.

참고

Multicloud Object Gateway 끝점은 OpenShift에서 자체 서명된 인증서를 사용하는 경우에만 자체 서명 인증서를 사용합니다. OpenShift에서 서명된 인증서를 사용하면 Multicloud Object Gateway 엔드포인트 인증서를 서명된 인증서로 자동 대체합니다. 브라우저를 통해 끝점에 액세스하여 Multicloud Object Gateway에서 현재 사용하는 인증서를 가져옵니다. 자세한 내용은 애플리케이션을 사용하여 Multicloud Object Gateway 액세스를 참조하십시오.

절차

  1. 애플리케이션 YAML에 다음 행을 추가합니다.

    apiVersion: objectbucket.io/v1alpha1
    kind: ObjectBucketClaim
    metadata:
      name: <obc-name>
    spec:
      generateBucketName: <obc-bucket-name>
      storageClassName: openshift-storage.noobaa.io

    이 행은 OBC 자체입니다.

    1. <obc-name> 을 고유한 OBC 이름으로 바꿉니다.
    2. <obc-bucket-name> 을 OBC의 고유한 버킷 이름으로 바꿉니다.
  2. YAML 파일에 더 많은 줄을 추가하여 OBC 사용을 자동화할 수 있습니다. 아래 예제는 데이터를 사용한 구성 맵과 인증 정보가 있는 시크릿인 버킷 클레임 결과 간의 매핑입니다. 이 특정 작업은 NooBaa의 개체 버킷을 클레임하여 버킷과 계정을 생성합니다.

    apiVersion: batch/v1
    kind: Job
    metadata:
      name: testjob
    spec:
      template:
        spec:
          restartPolicy: OnFailure
          containers:
            - image: <your application image>
              name: test
              env:
                - name: BUCKET_NAME
                  valueFrom:
                    configMapKeyRef:
                      name: <obc-name>
                      key: BUCKET_NAME
                - name: BUCKET_HOST
                  valueFrom:
                    configMapKeyRef:
                      name: <obc-name>
                      key: BUCKET_HOST
                - name: BUCKET_PORT
                  valueFrom:
                    configMapKeyRef:
                      name: <obc-name>
                      key: BUCKET_PORT
                - name: AWS_ACCESS_KEY_ID
                  valueFrom:
                    secretKeyRef:
                      name: <obc-name>
                      key: AWS_ACCESS_KEY_ID
                - name: AWS_SECRET_ACCESS_KEY
                  valueFrom:
                    secretKeyRef:
                      name: <obc-name>
                      key: AWS_SECRET_ACCESS_KEY
    1. <obc-name> 의 모든 인스턴스를 OBC 이름으로 바꿉니다.
    2. <your 애플리케이션 이미지> 를 애플리케이션 이미지로 바꿉니다.
  3. 업데이트된 YAML 파일을 적용합니다.

    # oc apply -f <yaml.file>

    <yaml.file> 을 YAML 파일의 이름으로 바꿉니다.

  4. 새 구성 맵을 보려면 다음을 실행합니다.

    # oc get cm <obc-name> -o yaml

    obc-name 을 OBC 이름으로 바꿉니다.

    출력에 다음 환경 변수가 있을 수 있습니다.

    • BUCKET_HOST - 애플리케이션에서 사용할 엔드 포인트입니다.
    • BUCKET_PORT - 애플리케이션에 사용할 수 있는 포트입니다.

    • BUCKET_NAME - 요청되거나 생성된 버킷 이름입니다.
    • AWS_ACCESS_KEY_ID - 자격 증명의 일부인 액세스 키입니다.
    • AWS_SECRET_ACCESS_KEY - 자격 증명의 일부인 비밀 액세스 키입니다.
중요

AWS_ACCESS_KEY_IDAWS_SECRET_ACCESS_KEY 를 검색합니다. 이름은 AWS S3 API와 호환되도록 사용됩니다. 특히 MCG(Multicloud Object Gateway) 버킷에서 S3 작업을 수행하는 동안 키를 지정해야 합니다. 키는 Base64로 인코딩됩니다. 키를 사용하기 전에 디코딩합니다.

# oc get secret <obc_name> -o yaml
<obc_name>
오브젝트 버킷 클레임의 이름을 지정합니다.

10.8.2. 명령줄 인터페이스를 사용하여 개체 버킷 클레임 생성

명령줄 인터페이스를 사용하여 OBC(오브젝트 버킷 클레임)를 생성할 때 애플리케이션에서 오브젝트 스토리지 서비스를 사용하는 데 필요한 모든 정보가 포함된 구성 맵과 시크릿을 가져옵니다.

사전 요구 사항

  • MCG(Multicloud Object Gateway) 명령줄 인터페이스를 다운로드합니다.

    # subscription-manager repos --enable=rh-odf-4-for-rhel-8-x86_64-rpms
    # yum install mcg
    참고

    서브스크립션 관리자를 사용하여 리포지토리를 활성화하기 위한 적절한 아키텍처를 지정합니다.

    • IBM Power의 경우 다음 명령을 사용합니다.
    # subscription-manager repos --enable=rh-odf-4-for-rhel-8-ppc64le-rpms
    • IBM Z 인프라의 경우 다음 명령을 사용합니다.
    # subscription-manager repos --enable=rh-odf-4-for-rhel-8-s390x-rpms

절차

  1. 명령줄 인터페이스를 사용하여 새 버킷 및 자격 증명의 세부 정보를 생성합니다. 다음 명령을 실행합니다.

    # noobaa obc create <obc-name> -n openshift-storage

    <obc-name> 을 고유한 OBC 이름으로 바꿉니다(예: myappobc ).

    또한 --app-namespace 옵션을 사용하여 OBC 구성 맵과 시크릿이 생성되는 네임스페이스(예: myapp-namespace )를 지정할 수 있습니다.

    출력 예:

    INFO[0001] ✅ Created: ObjectBucketClaim "test21obc"

    MCG 명령줄-인터페이스에서 필요한 구성을 생성하고 OpenShift에 새 OBC에 대해 알립니다.

  2. 다음 명령을 실행하여 OBC를 확인합니다.

    # oc get obc -n openshift-storage

    출력 예:

    NAME        STORAGE-CLASS                 PHASE   AGE
    test21obc   openshift-storage.noobaa.io   Bound   38s
  3. 다음 명령을 실행하여 새 OBC에 대한 YAML 파일을 확인합니다.

    # oc get obc test21obc -o yaml -n openshift-storage

    출력 예:

    apiVersion: objectbucket.io/v1alpha1
    kind: ObjectBucketClaim
    metadata:
      creationTimestamp: "2019-10-24T13:30:07Z"
      finalizers:
      - objectbucket.io/finalizer
      generation: 2
      labels:
        app: noobaa
        bucket-provisioner: openshift-storage.noobaa.io-obc
        noobaa-domain: openshift-storage.noobaa.io
      name: test21obc
      namespace: openshift-storage
      resourceVersion: "40756"
      selfLink: /apis/objectbucket.io/v1alpha1/namespaces/openshift-storage/objectbucketclaims/test21obc
      uid: 64f04cba-f662-11e9-bc3c-0295250841af
    spec:
      ObjectBucketName: obc-openshift-storage-test21obc
      bucketName: test21obc-933348a6-e267-4f82-82f1-e59bf4fe3bb4
      generateBucketName: test21obc
      storageClassName: openshift-storage.noobaa.io
    status:
      phase: Bound
  4. openshift-storage 네임스페이스 내에서 이 OBC를 사용할 구성 맵과 시크릿을 찾을 수 있습니다. CM 및 시크릿의 이름은 OBC와 동일합니다. 다음 명령을 실행하여 보안을 확인합니다.

    # oc get -n openshift-storage secret test21obc -o yaml

    출력 예:

    Example output:
    apiVersion: v1
    data:
      AWS_ACCESS_KEY_ID: c0M0R2xVanF3ODR3bHBkVW94cmY=
      AWS_SECRET_ACCESS_KEY: Wi9kcFluSWxHRzlWaFlzNk1hc0xma2JXcjM1MVhqa051SlBleXpmOQ==
    kind: Secret
    metadata:
      creationTimestamp: "2019-10-24T13:30:07Z"
      finalizers:
      - objectbucket.io/finalizer
      labels:
        app: noobaa
        bucket-provisioner: openshift-storage.noobaa.io-obc
        noobaa-domain: openshift-storage.noobaa.io
      name: test21obc
      namespace: openshift-storage
      ownerReferences:
      - apiVersion: objectbucket.io/v1alpha1
        blockOwnerDeletion: true
        controller: true
        kind: ObjectBucketClaim
        name: test21obc
        uid: 64f04cba-f662-11e9-bc3c-0295250841af
      resourceVersion: "40751"
      selfLink: /api/v1/namespaces/openshift-storage/secrets/test21obc
      uid: 65117c1c-f662-11e9-9094-0a5305de57bb
    type: Opaque

    시크릿은 S3 액세스 자격 증명을 제공합니다.

  5. 구성 맵을 보려면 다음 명령을 실행합니다.

    # oc get -n openshift-storage cm test21obc -o yaml

    출력 예:

    apiVersion: v1
    data:
      BUCKET_HOST: 10.0.171.35
      BUCKET_NAME: test21obc-933348a6-e267-4f82-82f1-e59bf4fe3bb4
      BUCKET_PORT: "31242"
      BUCKET_REGION: ""
      BUCKET_SUBREGION: ""
    kind: ConfigMap
    metadata:
      creationTimestamp: "2019-10-24T13:30:07Z"
      finalizers:
      - objectbucket.io/finalizer
      labels:
        app: noobaa
        bucket-provisioner: openshift-storage.noobaa.io-obc
        noobaa-domain: openshift-storage.noobaa.io
      name: test21obc
      namespace: openshift-storage
      ownerReferences:
      - apiVersion: objectbucket.io/v1alpha1
        blockOwnerDeletion: true
        controller: true
        kind: ObjectBucketClaim
        name: test21obc
        uid: 64f04cba-f662-11e9-bc3c-0295250841af
      resourceVersion: "40752"
      selfLink: /api/v1/namespaces/openshift-storage/configmaps/test21obc
      uid: 651c6501-f662-11e9-9094-0a5305de57bb

    구성 맵에는 애플리케이션의 S3 끝점 정보가 포함되어 있습니다.

10.8.3. OpenShift 웹 콘솔을 사용하여 개체 버킷 클레임 생성

OpenShift 웹 콘솔을 사용하여 OBC(오브젝트 버킷 클레임)를 생성할 수 있습니다.

사전 요구 사항

  • OpenShift 웹 콘솔에 대한 관리 액세스.
  • 애플리케이션이 OBC와 통신하려면 configmap 및 secret을 사용해야 합니다. 이에 대한 자세한 내용은 10.8.1절. “동적 개체 버킷 클레임” 의 내용을 참조하십시오.

절차

  1. OpenShift 웹 콘솔에 로그인합니다.
  2. 왼쪽 네비게이션 바에서 스토리지개체 버킷 클레임 → 개체 버킷 클레임 생성을 클릭합니다.

    1. 오브젝트 버킷 클레임의 이름을 입력하고 드롭다운 메뉴에서 배포(내부 또는 외부)를 기반으로 적절한 스토리지 클래스를 선택합니다.

      내부 모드
      개체 버킷 클레임 생성 마법사

      배포 후에 생성된 다음 스토리지 클래스를 사용할 수 있습니다.

      • oCS-storagecluster-ceph-rgw 는 Ceph Object Gateway(RGW)를 사용합니다.
      • openshift-storage.noobaa.io 는 MCG(Multicloud Object Gateway)를 사용합니다.
      외부 모드
      개체 버킷 클레임 생성 마법사

      배포 후에 생성된 다음 스토리지 클래스를 사용할 수 있습니다.

      • oCS-external-storagecluster-ceph-rgw 에서 RGW 사용
      • openshift-storage.noobaa.io 는 MCG를 사용합니다.

        참고

        RGW OBC 스토리지 클래스는 OpenShift Data Foundation 버전 4.5의 새로운 설치에서만 사용할 수 있습니다. 이전 OpenShift Data Foundation 릴리스에서 업그레이드된 클러스터에는 적용되지 않습니다.

    2. 생성을 클릭합니다.

      OBC를 생성하면 세부 정보 페이지로 리디렉션됩니다.

      개체 버킷 클레임 세부 정보 페이지

10.8.4. 배포에 오브젝트 버킷 클레임 연결

생성되고 나면 OBC(오브젝트 버킷 클레임)를 특정 배포에 연결할 수 있습니다.

사전 요구 사항

  • OpenShift 웹 콘솔에 대한 관리 액세스.

절차

  1. 왼쪽 네비게이션 바에서 스토리지개체 버킷 클레임 을 클릭합니다.
  2. 생성한 OBC 옆에 있는 작업 메뉴(kube) 를 클릭합니다.

    1. 드롭다운 메뉴에서 Attach to Deployment (배포에 연결)를 선택합니다.

      배포에 개체 버킷 클레임 연결
    2. Deployment Name(배포 이름) 목록에서 원하는 배포를 선택한 다음 Attach(연결 )를 클릭합니다.

      배포 이름 목록

10.8.5. OpenShift 웹 콘솔을 사용하여 오브젝트 버킷 보기

OpenShift 웹 콘솔을 사용하여 OBC(오브젝트 버킷 클레임)에 대해 생성된 개체 버킷의 세부 정보를 볼 수 있습니다.

사전 요구 사항

  • OpenShift 웹 콘솔에 대한 관리 액세스.

절차

  1. OpenShift 웹 콘솔에 로그인합니다.
  2. 왼쪽 네비게이션 바에서 스토리지개체 버킷을 클릭합니다.

    개체 버킷 페이지

    또는 특정 OBC의 세부 정보 페이지로 이동하고 리소스 링크를 클릭하여 해당 OBC의 개체 버킷을 볼 수도 있습니다.

  3. 세부 정보를 볼 개체 버킷을 선택합니다. 오브젝트 버킷 세부 정보 페이지로 이동합니다.

10.8.6. 개체 버킷 클레임 삭제

사전 요구 사항

  • OpenShift 웹 콘솔에 대한 관리 액세스.

절차

  1. 왼쪽 네비게이션 바에서 스토리지개체 버킷 클레임 을 클릭합니다.
  2. 삭제할 OBC (오브젝트 버킷 클레임) 옆에 있는 작업 메뉴(kube)를 클릭합니다.

    MCG OBC 작업 메뉴 첨부
    1. 개체 버킷 클레임 삭제를 선택합니다.
    2. 삭제를 클릭합니다.