Managing hybrid and multicloud resources

Red Hat OpenShift Data Foundation 4.9

Multicloud Object Gateway(NooBaa)를 사용하여 하이브리드 클라우드 또는 다중 클라우드 환경에서 스토리지 리소스를 관리하는 방법에 대한 지침.

초록

이 문서에서는 하이브리드 클라우드 또는 다중 클라우드 환경에서 스토리지 리소스를 관리하는 방법을 설명합니다.

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

Red Hat은 코드, 문서, 웹 속성에서 문제가 있는 용어를 교체하기 위해 최선을 다하고 있습니다. 먼저 마스터(master), 슬레이브(slave), 블랙리스트(blacklist), 화이트리스트(whitelist) 등 네 가지 용어를 교체하고 있습니다. 이러한 변경 작업은 작업 범위가 크므로 향후 여러 릴리스에 걸쳐 점차 구현할 예정입니다. 자세한 내용은 CTO Chris Wright의 메시지를 참조하십시오.

Red Hat 문서에 관한 피드백 제공

문서 개선을 위한 의견을 보내 주십시오. 어떻게 하면 더 잘할 수 있는지 알려주십시오. 피드백을 제공하려면 다음을 수행합니다.

  • 특정 문구에 대한 간단한 의견 작성 방법은 다음과 같습니다.

    1. 문서가 Multi-page HTML 형식으로 표시되는지 확인합니다. 또한 문서 오른쪽 상단에 피드백 버튼이 있는지 확인합니다.
    2. 마우스 커서를 사용하여 주석 처리하려는 텍스트 부분을 강조 표시합니다.
    3. 강조 표시된 텍스트 아래에 표시되는 피드백 추가 팝업을 클릭합니다.
    4. 표시된 지침을 따릅니다.
  • 보다 상세하게 피드백을 제출하려면 다음과 같이 Bugzilla 티켓을 생성하십시오.

    1. Bugzilla 웹 사이트로 이동하십시오.
    2. 구성 요소 섹션에서 문서 를 선택합니다.
    3. 설명 필드에 문서 개선을 위한 제안 사항을 기입하십시오. 관련된 문서의 해당 부분 링크를 알려주십시오.
    4. 버그 제출을 클릭합니다.

1장. Multicloud Object Gateway 정보

MCG(Multicloud Object Gateway)는 OpenShift를 위한 경량 오브젝트 스토리지 서비스로, 사용자가 작게 시작한 다음 필요에 따라 온프레미스, 여러 클러스터 및 클라우드 네이티브 스토리지로 확장할 수 있습니다.

2장. 애플리케이션을 사용하여 Multicloud Object Gateway에 액세스

AWS S3를 대상으로 하는 모든 애플리케이션 또는 AWS S3 SDK(Software Development Kit)를 사용하는 코드로 오브젝트 서비스에 액세스할 수 있습니다. 애플리케이션은 MCG(Multicloud Object Gateway) 끝점, 액세스 키 및 시크릿 액세스 키를 지정해야 합니다. 터미널 또는 MCG CLI를 사용하여 이 정보를 검색할 수 있습니다.

RADOS Object Gateway(RGW) S3 엔드포인트에 액세스하는 방법에 대한 자세한 내용은 RADOS Object Gateway S3 엔드 포인트 액세스를 참조하십시오.

사전 요구 사항

  • 실행 중인 OpenShift Data Foundation Platform.
  • 보다 쉽게 관리할 수 있도록 MCG 명령줄 인터페이스를 다운로드합니다.

    # 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
  • 또는 Download RedHat OpenShift Data Foundation 페이지 ()에 있는 OpenShift Data Foundation RPM에서 MCG 패키지를 설치할 수 있습니다.

    참고

    아키텍처에 따라 올바른 제품 변형을 선택합니다.

다음 두 가지 방법으로 관련 끝점, 액세스 키 및 시크릿 액세스 키에 액세스할 수 있습니다.

예 2.1. 예제

가상 호스트 스타일을 사용하여 MCG 버킷에 액세스
클라이언트 애플리케이션이 https://<bucket-name>.s3-openshift-storage.apps.mycluster-cluster.qe.rh-ocs.com에 액세스하려고 하면
<bucket-name>

MCG 버킷의 이름입니다.

예: https://mcg-test-bucket.s3-openshift-storage.apps.mycluster-cluster.qe.rh-ocs.com

S3 서비스를 가리키도록 mcg-test-bucket.s3-openshift-storage.apps.mycluster-cluster.qe.rh-ocs.com 에 DNS 항목이 필요합니다.

중요

가상 호스트 스타일을 사용하여 클라이언트 애플리케이션을 MCG 버킷을 가리키도록 DNS 항목이 있는지 확인합니다.

2.1. 터미널에서 Multicloud Object Gateway에 액세스

절차

describe 명령을 실행하여 액세스 키(AWS_ACCESS_KEY_ID 값) 및 시크릿 액세스 키(AWS_SECRET_ACCESS_KEY 값)를 포함하여 MCG(Multicloud Object Gateway) 엔드포인트에 대한 정보를 봅니다.

# oc describe noobaa -n openshift-storage

출력은 다음과 유사합니다.

Name:         noobaa
Namespace:    openshift-storage
Labels:       <none>
Annotations:  <none>
API Version:  noobaa.io/v1alpha1
Kind:         NooBaa
Metadata:
  Creation Timestamp:  2019-07-29T16:22:06Z
  Generation:          1
  Resource Version:    6718822
  Self Link:           /apis/noobaa.io/v1alpha1/namespaces/openshift-storage/noobaas/noobaa
  UID:                 019cfb4a-b21d-11e9-9a02-06c8de012f9e
Spec:
Status:
  Accounts:
    Admin:
      Secret Ref:
        Name:           noobaa-admin
        Namespace:      openshift-storage
  Actual Image:         noobaa/noobaa-core:4.0
  Observed Generation:  1
  Phase:                Ready
  Readme:

  Welcome to NooBaa!
  -----------------

  Welcome to NooBaa!
    -----------------
    NooBaa Core Version:
    NooBaa Operator Version:

    Lets get started:

    1. Connect to Management console:

      Read your mgmt console login information (email & password) from secret: "noobaa-admin".

        kubectl get secret noobaa-admin -n openshift-storage -o json | jq '.data|map_values(@base64d)'

      Open the management console service - take External IP/DNS or Node Port or use port forwarding:

        kubectl port-forward -n openshift-storage service/noobaa-mgmt 11443:443 &
        open https://localhost:11443

    2. Test S3 client:

      kubectl port-forward -n openshift-storage service/s3 10443:443 &
1
      NOOBAA_ACCESS_KEY=$(kubectl get secret noobaa-admin -n openshift-storage -o json | jq -r '.data.AWS_ACCESS_KEY_ID|@base64d')
2
      NOOBAA_SECRET_KEY=$(kubectl get secret noobaa-admin -n openshift-storage -o json | jq -r '.data.AWS_SECRET_ACCESS_KEY|@base64d')
      alias s3='AWS_ACCESS_KEY_ID=$NOOBAA_ACCESS_KEY AWS_SECRET_ACCESS_KEY=$NOOBAA_SECRET_KEY aws --endpoint https://localhost:10443 --no-verify-ssl s3'
      s3 ls


    Services:
      Service Mgmt:
        External DNS:
          https://noobaa-mgmt-openshift-storage.apps.mycluster-cluster.qe.rh-ocs.com
          https://a3406079515be11eaa3b70683061451e-1194613580.us-east-2.elb.amazonaws.com:443
        Internal DNS:
          https://noobaa-mgmt.openshift-storage.svc:443
        Internal IP:
          https://172.30.235.12:443
        Node Ports:
          https://10.0.142.103:31385
        Pod Ports:
          https://10.131.0.19:8443
      serviceS3:
        External DNS: 3
          https://s3-openshift-storage.apps.mycluster-cluster.qe.rh-ocs.com
          https://a340f4e1315be11eaa3b70683061451e-943168195.us-east-2.elb.amazonaws.com:443
        Internal DNS:
          https://s3.openshift-storage.svc:443
        Internal IP:
          https://172.30.86.41:443
        Node Ports:
          https://10.0.142.103:31011
        Pod Ports:
          https://10.131.0.19:6443
1
액세스 키 (AWS_ACCESS_KEY_ID 값)
2
시크릿 액세스 키 (AWS_SECRET_ACCESS_KEY 값)
3
MCG 끝점

2.2. MCG 명령줄 인터페이스에서 Multicloud Object Gateway에 액세스

사전 요구 사항

  • MCG 명령줄 인터페이스를 다운로드합니다.

    # 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

절차

status 명령을 실행하여 endpoint, access key, secret access 키에 액세스합니다.

noobaa status -n openshift-storage

출력은 다음과 유사합니다.

INFO[0000] Namespace: openshift-storage
INFO[0000]
INFO[0000] CRD Status:
INFO[0003] ✅ Exists: CustomResourceDefinition "noobaas.noobaa.io"
INFO[0003] ✅ Exists: CustomResourceDefinition "backingstores.noobaa.io"
INFO[0003] ✅ Exists: CustomResourceDefinition "bucketclasses.noobaa.io"
INFO[0004] ✅ Exists: CustomResourceDefinition "objectbucketclaims.objectbucket.io"
INFO[0004] ✅ Exists: CustomResourceDefinition "objectbuckets.objectbucket.io"
INFO[0004]
INFO[0004] Operator Status:
INFO[0004] ✅ Exists: Namespace "openshift-storage"
INFO[0004] ✅ Exists: ServiceAccount "noobaa"
INFO[0005] ✅ Exists: Role "ocs-operator.v0.0.271-6g45f"
INFO[0005] ✅ Exists: RoleBinding "ocs-operator.v0.0.271-6g45f-noobaa-f9vpj"
INFO[0006] ✅ Exists: ClusterRole "ocs-operator.v0.0.271-fjhgh"
INFO[0006] ✅ Exists: ClusterRoleBinding "ocs-operator.v0.0.271-fjhgh-noobaa-pdxn5"
INFO[0006] ✅ Exists: Deployment "noobaa-operator"
INFO[0006]
INFO[0006] System Status:
INFO[0007] ✅ Exists: NooBaa "noobaa"
INFO[0007] ✅ Exists: StatefulSet "noobaa-core"
INFO[0007] ✅ Exists: Service "noobaa-mgmt"
INFO[0008] ✅ Exists: Service "s3"
INFO[0008] ✅ Exists: Secret "noobaa-server"
INFO[0008] ✅ Exists: Secret "noobaa-operator"
INFO[0008] ✅ Exists: Secret "noobaa-admin"
INFO[0009] ✅ Exists: StorageClass "openshift-storage.noobaa.io"
INFO[0009] ✅ Exists: BucketClass "noobaa-default-bucket-class"
INFO[0009] ✅ (Optional) Exists: BackingStore "noobaa-default-backing-store"
INFO[0010] ✅ (Optional) Exists: CredentialsRequest "noobaa-cloud-creds"
INFO[0010] ✅ (Optional) Exists: PrometheusRule "noobaa-prometheus-rules"
INFO[0010] ✅ (Optional) Exists: ServiceMonitor "noobaa-service-monitor"
INFO[0011] ✅ (Optional) Exists: Route "noobaa-mgmt"
INFO[0011] ✅ (Optional) Exists: Route "s3"
INFO[0011] ✅ Exists: PersistentVolumeClaim "db-noobaa-core-0"
INFO[0011] ✅ System Phase is "Ready"
INFO[0011] ✅ Exists:  "noobaa-admin"

#------------------#
#- Mgmt Addresses -#
#------------------#

ExternalDNS : [https://noobaa-mgmt-openshift-storage.apps.mycluster-cluster.qe.rh-ocs.com https://a3406079515be11eaa3b70683061451e-1194613580.us-east-2.elb.amazonaws.com:443]
ExternalIP  : []
NodePorts   : [https://10.0.142.103:31385]
InternalDNS : [https://noobaa-mgmt.openshift-storage.svc:443]
InternalIP  : [https://172.30.235.12:443]
PodPorts    : [https://10.131.0.19:8443]

#--------------------#
#- Mgmt Credentials -#
#--------------------#

email    : admin@noobaa.io
password : HKLbH1rSuVU0I/souIkSiA==

#----------------#
#- S3 Addresses -#
#----------------#

1
ExternalDNS : [https://s3-openshift-storage.apps.mycluster-cluster.qe.rh-ocs.com https://a340f4e1315be11eaa3b70683061451e-943168195.us-east-2.elb.amazonaws.com:443]
ExternalIP  : []
NodePorts   : [https://10.0.142.103:31011]
InternalDNS : [https://s3.openshift-storage.svc:443]
InternalIP  : [https://172.30.86.41:443]
PodPorts    : [https://10.131.0.19:6443]

#------------------#
#- S3 Credentials -#
#------------------#

2
AWS_ACCESS_KEY_ID     : jVmAsu9FsvRHYmfjTiHV
3
AWS_SECRET_ACCESS_KEY : E//420VNedJfATvVSmDz6FMtsSAzuBv6z180PT5c

#------------------#
#- Backing Stores -#
#------------------#

NAME                           TYPE     TARGET-BUCKET                                               PHASE   AGE
noobaa-default-backing-store   aws-s3   noobaa-backing-store-15dc896d-7fe0-4bed-9349-5942211b93c9   Ready   141h35m32s

#------------------#
#- Bucket Classes -#
#------------------#

NAME                          PLACEMENT                                                             PHASE   AGE
noobaa-default-bucket-class   {Tiers:[{Placement: BackingStores:[noobaa-default-backing-store]}]}   Ready   141h35m33s

#-----------------#
#- Bucket Claims -#
#-----------------#

No OBC's found.
1
엔드포인트
2
액세스 키
3
시크릿 액세스 키

이제 애플리케이션에 연결하기 위해 관련 끝점, 키, 시크릿 액세스 키가 있습니다.

예 2.2. 예제

AWS S3 CLI가 애플리케이션이면 다음 명령에서 OpenShift Data Foundation의 버킷을 나열합니다.

AWS_ACCESS_KEY_ID=<AWS_ACCESS_KEY_ID>
AWS_SECRET_ACCESS_KEY=<AWS_SECRET_ACCESS_KEY>
aws --endpoint <ENDPOINT> --no-verify-ssl s3 ls

3장. Multicloud Object Gateway 콘솔에 사용자 액세스 허용

MCG(Multicloud Object Gateway) 콘솔에 대한 액세스를 사용자에게 허용하려면 사용자가 다음 조건을 충족해야 합니다.

  • user는 cluster-admins 그룹에 있습니다.
  • 사용자는 system:cluster-admins 가상 그룹에 있습니다.

사전 요구 사항

  • 실행 중인 OpenShift Data Foundation Platform.

절차

  1. MCG 콘솔에 대한 액세스를 활성화합니다.

    클러스터에서 다음 단계를 한 번 수행합니다.

    1. cluster-admins 그룹을 만듭니다.

      # oc adm groups new cluster-admins
    2. 그룹을 cluster-admin 역할에 바인딩합니다.

      # oc adm policy add-cluster-role-to-group cluster-admin cluster-admins
  2. cluster-admins 그룹에서 사용자를 추가하거나 제거하여 MCG 콘솔에 대한 액세스를 제어합니다.

    • cluster-admins 그룹에 사용자 세트를 추가하려면 다음을 수행합니다.

      # oc adm groups add-users cluster-admins <user-name> <user-name> <user-name>...

      여기서 <user-name> 은 추가할 사용자의 이름입니다.

      참고

      cluster-admins 그룹에 사용자 집합을 추가하는 경우 OpenShift Data Foundation 대시보드에 대한 액세스를 허용하기 위해 새로 추가된 사용자를 cluster-admin 역할에 바인딩할 필요가 없습니다.

    • cluster-admins 그룹에서 사용자 집합을 제거하려면 다음을 수행합니다.

      # oc adm groups remove-users cluster-admins <user-name> <user-name> <user-name>...

      여기서 <user-name> 은 제거할 사용자의 이름입니다.

검증 단계

  1. OpenShift 웹 콘솔에서 Multicloud Object Gateway Console에 대한 액세스 권한이 있는 사용자로 로그인합니다.
  2. 스토리지OpenShift Data Foundation 으로 이동합니다.
  3. Storage Systems 탭에서 스토리지 시스템을 선택한 다음 개요오브젝트 탭을 클릭합니다.
  4. Multicloud Object Gateway 링크를 선택합니다.
  5. Allow selected permissions 를 클릭합니다.

4장. 하이브리드 또는 멀티클라우드용 스토리지 리소스 추가

4.1. 새 백업 저장소 생성

OpenShift Data Foundation에서 새 백업 저장소를 생성하려면 다음 절차를 사용하십시오.

사전 요구 사항

  • OpenShift Data Foundation에 대한 관리자 액세스 권한

절차

  1. OpenShift 웹 콘솔에서 스토리지OpenShift Data Foundation 을 클릭합니다.
  2. 백업 저장소 탭을 클릭합니다.
  3. 백업 저장소 생성 을 클릭합니다.
  4. 새 백업 저장소 생성 페이지에서 다음을 수행합니다.

    1. 백업 저장소 이름을 입력합니다.
    2. 공급자를 선택합니다.
    3. Region 을 선택합니다.
    4. 끝점을 입력합니다. 이는 선택 사항입니다.
    5. 드롭다운 목록에서 보안을 선택하거나 고유 보안을 생성합니다. 필요한 경우 필요한 시크릿 을 채울 수 있는 자격 증명 보기로 전환 할 수 있습니다.

      OCP 시크릿 생성에 대한 자세한 내용은 Openshift Container Platform 설명서 의 보안 생성 섹션을 참조하십시오.

      각 보조 저장소는 다른 시크릿이 필요합니다. 특정 백업 저장소에 대한 시크릿을 생성하는 방법에 대한 자세한 내용은 4.2절. “MCG 명령줄 인터페이스를 사용하여 하이브리드 또는 멀티클라우드용 스토리지 리소스 추가” 을 참조하고 YAML을 사용하여 스토리지 리소스를 추가하는 절차를 따르십시오.

      참고

      이 메뉴는 Google Cloud 및 로컬 PVC를 제외한 모든 공급자와 관련이 있습니다.

    6. 대상 버킷 을 입력합니다. 대상 버킷은 원격 클라우드 서비스에서 호스팅되는 컨테이너 스토리지입니다. MCG에 시스템에 이 버킷을 사용할 수 있음을 알리는 연결을 만들 수 있습니다.
  5. 백업 저장소 생성 을 클릭합니다.

검증 단계

  1. OpenShift 웹 콘솔에서 스토리지OpenShift Data Foundation 을 클릭합니다.
  2. 백업 저장소 탭을 클릭하여 모든 백업 저장소를 확인합니다.

4.2. MCG 명령줄 인터페이스를 사용하여 하이브리드 또는 멀티클라우드용 스토리지 리소스 추가

MCG(Multicloud Object Gateway)는 클라우드 공급자 및 클러스터에 걸쳐 있는 데이터 프로세스를 간소화합니다.

MCG에서 사용할 수 있는 백업 스토리지를 추가합니다.

배포 유형에 따라 다음 절차 중 하나를 선택하여 백업 스토리지를 생성할 수 있습니다.

VMware 배포의 경우 자세한 내용은 4.3절. “s3 호환 Multicloud Object Gateway 백업 저장소 생성” 로 건너뛰십시오.

4.2.1. AWS 지원 백업 저장소 생성

사전 요구 사항

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

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

    서브스크립션 관리자를 사용하여 리포지토리를 활성화하기 위해 적절한 아키텍처를 지정합니다. 예를 들어 IBM Z 인프라의 경우 다음 명령을 사용합니다.

    # subscription-manager repos --enable=rh-odf-4-for-rhel-8-s390x-rpms
  • 또는 https://access.redhat.com/downloads/content/547/ver=4/rhel---8/4/x86_64/packages에 있는 OpenShift Data Foundation RPM에서 MCG 패키지를 설치할 수 있습니다.

    참고

    아키텍처에 따라 올바른 제품 변형을 선택합니다.

절차

  1. MCG 명령줄 인터페이스에서 다음 명령을 실행합니다.

    noobaa backingstore create aws-s3 <backingstore_name> --access-key=<AWS ACCESS KEY> --secret-key=<AWS SECRET ACCESS KEY> --target-bucket <bucket-name> -n openshift-storage
  1. <backingstore_name> 을 backingstore의 이름으로 바꿉니다.
  2. <AWS ACCESS KEY><AWS SECRET ACCESS KEY> 를 이를 위해 생성한 AWS 액세스 키 ID 및 시크릿 액세스 키로 바꿉니다.
  3. <bucket-name> 을 기존 AWS 버킷 이름으로 교체합니다. 이 인수는 MCG에 백업 저장소에 대한 대상 버킷으로 사용할 버킷을 알려주고 그 이후 데이터 스토리지 및 관리에 사용할 버킷을 알려줍니다.

    출력은 다음과 유사합니다.

    INFO[0001] ✅ Exists: NooBaa "noobaa"
    INFO[0002] ✅ Created: BackingStore "aws-resource"
    INFO[0002] ✅ Created: Secret "backing-store-secret-aws-resource"

YAML을 사용하여 스토리지 리소스를 추가할 수도 있습니다.

  1. 인증 정보를 사용하여 시크릿을 생성합니다.

    apiVersion: v1
    kind: Secret
    metadata:
      name: <backingstore-secret-name>
      namespace: openshift-storage
    type: Opaque
    data:
      AWS_ACCESS_KEY_ID: <AWS ACCESS KEY ID ENCODED IN BASE64>
      AWS_SECRET_ACCESS_KEY: <AWS SECRET ACCESS KEY ENCODED IN BASE64>
    1. Base64를 사용하여 자체 AWS 액세스 키 ID 및 시크릿 액세스 키를 제공하고 <AWS ACCESS KEY ID ENCODED IN BASE64><AWS SECRET ACCESS KEY ENCODED IN BASE64> BASE64>의 결과를 사용해야 합니다.
    2. <backingstore-secret-name> 을 고유한 이름으로 교체합니다.
  2. 특정 백업 저장소에 대해 다음 YAML을 적용합니다.

    apiVersion: noobaa.io/v1alpha1
    kind: BackingStore
    metadata:
      finalizers:
      - noobaa.io/finalizer
      labels:
        app: noobaa
      name: bs
      namespace: openshift-storage
    spec:
      awsS3:
        secret:
          name: <backingstore-secret-name>
          namespace: openshift-storage
        targetBucket: <bucket-name>
      type: aws-s3
    1. <bucket-name> 을 기존 AWS 버킷 이름으로 교체합니다. 이 인수는 MCG에 백업 저장소에 대한 대상 버킷으로 사용할 버킷을 알려주고 그 이후 데이터 스토리지 및 관리에 사용할 버킷을 알려줍니다.
    2. <backingstore-secret-name> 을 이전 단계에서 생성한 보안 이름으로 교체합니다.

4.2.2. IBM COS 지원 백업 저장소 생성

사전 요구 사항

  • 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
  • 또는 https://access.redhat.com/downloads/content/547/ver=4/rhel---8/4/x86_64/packages에 있는 OpenShift Data Foundation RPM에서 MCG 패키지를 설치할 수 있습니다.

    참고

    아키텍처에 따라 올바른 제품 변형을 선택합니다.

절차

  1. MCG 명령줄 인터페이스에서 다음 명령을 실행합니다.

    noobaa backingstore create ibm-cos <backingstore_name> --access-key=<IBM ACCESS KEY> --secret-key=<IBM SECRET ACCESS KEY> --endpoint=<IBM COS ENDPOINT> --target-bucket <bucket-name> -n openshift-storage
    1. <backingstore_name> 을 backingstore의 이름으로 바꿉니다.
    2. <IBM ACCESS KEY>, <IBM SECRET ACCESS KEY>, <IBM COS ENDPOINT> 를 IBM 액세스 키 ID, 시크릿 액세스 키 및 기존 IBM 버킷의 위치에 해당하는 적절한 지역 끝점으로 바꿉니다.

      IBM 클라우드에서 위의 키를 생성하려면 대상 버킷에 대한 서비스 자격 증명을 생성하는 동안 vGPU 자격 증명을 포함해야 합니다.

    3. <bucket-name> 을 기존 IBM 버킷 이름으로 바꿉니다. 이 인수는 MCG에 백업 저장소에 대한 대상 버킷으로 사용할 버킷을 알려주고 그 이후 데이터 스토리지 및 관리에 사용할 버킷을 알려줍니다.

      출력은 다음과 유사합니다.

      INFO[0001] ✅ Exists: NooBaa "noobaa"
      INFO[0002] ✅ Created: BackingStore "ibm-resource"
      INFO[0002] ✅ Created: Secret "backing-store-secret-ibm-resource"

YAML을 사용하여 스토리지 리소스를 추가할 수도 있습니다.

  1. 인증 정보를 사용하여 시크릿을 생성합니다.

    apiVersion: v1
    kind: Secret
    metadata:
      name: <backingstore-secret-name>
      namespace: openshift-storage
    type: Opaque
    data:
      IBM_COS_ACCESS_KEY_ID: <IBM COS ACCESS KEY ID ENCODED IN BASE64>
      IBM_COS_SECRET_ACCESS_KEY: <IBM COS SECRET ACCESS KEY ENCODED IN BASE64>
    1. Base64를 사용하여 자체 IBM COS 액세스 키 ID 및 시크릿 액세스 키를 입력하고 인코딩해야 합니다. <IBM COS ACCESS KEY ID ENCODED IN BASE64><IBM COS ACCESS KEY ENCODED IN BASE64> ACCESS KEY
    2. <backingstore-secret-name> 을 고유한 이름으로 교체합니다.
  2. 특정 백업 저장소에 대해 다음 YAML을 적용합니다.

    apiVersion: noobaa.io/v1alpha1
    kind: BackingStore
    metadata:
      finalizers:
      - noobaa.io/finalizer
      labels:
        app: noobaa
      name: bs
      namespace: openshift-storage
    spec:
      ibmCos:
        endpoint: <endpoint>
        secret:
          name: <backingstore-secret-name>
          namespace: openshift-storage
        targetBucket: <bucket-name>
      type: ibm-cos
    1. <bucket-name> 을 기존 IBM COS 버킷 이름으로 바꿉니다. 이 인수는 MCG에 백업 저장소에 대한 대상 버킷으로 사용할 버킷을 알려주고 그 이후 데이터 스토리지 및 관리에 사용할 버킷을 알려줍니다.
    2. <endpoint> 를 기존 IBM 버킷 이름의 위치에 해당하는 리전 끝점으로 바꿉니다. 이 인수는 Multicloud Object Gateway에 백업 저장소에 사용할 끝점을 알려주고 그 이후 데이터 스토리지 및 관리에 사용할 끝점을 지시합니다.
    3. <backingstore-secret-name> 을 이전 단계에서 생성한 보안 이름으로 교체합니다.

4.2.3. Azure 지원 백업 저장소 생성

사전 요구 사항

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

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

    서브스크립션 관리자를 사용하여 리포지토리를 활성화하기 위해 적절한 아키텍처를 지정합니다. 예를 들어 IBM Z 인프라의 경우 다음 명령을 사용합니다.

    # subscription-manager repos --enable=rh-odf-4-for-rhel-8-s390x-rpms
  • 또는 https://access.redhat.com/downloads/content/547/ver=4/rhel---8/4/x86_64/packages에 있는 OpenShift Data Foundation RPM에서 MCG 패키지를 설치할 수 있습니다.

    참고

    아키텍처에 따라 올바른 제품 변형을 선택합니다.

절차

  1. MCG 명령줄 인터페이스에서 다음 명령을 실행합니다.

    noobaa backingstore create azure-blob <backingstore_name> --account-key=<AZURE ACCOUNT KEY> --account-name=<AZURE ACCOUNT NAME> --target-blob-container <blob container name>
    1. <backingstore_name> 을 backingstore의 이름으로 바꿉니다.
    2. <AZURE ACCOUNT KEY><AZURE ACCOUNT NAME> 을 이 목적을 위해 생성한 AZURE 계정 키 및 계정 이름으로 바꿉니다.
    3. <blob 컨테이너 이름> 을 기존 Azure Blob 컨테이너 이름으로 바꿉니다. 이 인수는 MCG에 백업 저장소에 대한 대상 버킷으로 사용할 버킷을 알려주고 그 이후 데이터 스토리지 및 관리에 사용할 버킷을 알려줍니다.

      출력은 다음과 유사합니다.

      INFO[0001] ✅ Exists: NooBaa "noobaa"
      INFO[0002] ✅ Created: BackingStore "azure-resource"
      INFO[0002] ✅ Created: Secret "backing-store-secret-azure-resource"

YAML을 사용하여 스토리지 리소스를 추가할 수도 있습니다.

  1. 인증 정보를 사용하여 시크릿을 생성합니다.

    apiVersion: v1
    kind: Secret
    metadata:
      name: <backingstore-secret-name>
    type: Opaque
    data:
      AccountName: <AZURE ACCOUNT NAME ENCODED IN BASE64>
      AccountKey: <AZURE ACCOUNT KEY ENCODED IN BASE64>
    1. Base64를 사용하여 자체 Azure 계정 이름과 계정 키를 입력하고 인코딩해야 하며 <AZURE ACCOUNT NAME ENCODED IN BASE64><AZURE ACCOUNT KEY ENCODED IN BASE64> 대신 해당 결과를 사용해야 합니다.
    2. <backingstore-secret-name> 을 고유한 이름으로 교체합니다.
  2. 특정 백업 저장소에 대해 다음 YAML을 적용합니다.

    apiVersion: noobaa.io/v1alpha1
    kind: BackingStore
    metadata:
      finalizers:
      - noobaa.io/finalizer
      labels:
        app: noobaa
      name: bs
      namespace: openshift-storage
    spec:
      azureBlob:
        secret:
          name: <backingstore-secret-name>
          namespace: openshift-storage
        targetBlobContainer: <blob-container-name>
      type: azure-blob
    1. <blob-container-name> 을 기존 Azure Blob 컨테이너 이름으로 바꿉니다. 이 인수는 MCG에 백업 저장소에 대한 대상 버킷으로 사용할 버킷을 알려주고 그 이후 데이터 스토리지 및 관리에 사용할 버킷을 알려줍니다.
    2. <backingstore-secret-name> 을 이전 단계에서 생성한 보안 이름으로 교체합니다.

4.2.4. GCP 지원 백업 저장소 생성

사전 요구 사항

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

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

    서브스크립션 관리자를 사용하여 리포지토리를 활성화하기 위해 적절한 아키텍처를 지정합니다. 예를 들어 IBM Z 인프라의 경우 다음 명령을 사용합니다.

    # subscription-manager repos --enable=rh-odf-4-for-rhel-8-s390x-rpms
  • 또는 https://access.redhat.com/downloads/content/547/ver=4/rhel---8/4/x86_64/packages에 있는 OpenShift Data Foundation RPM에서 MCG 패키지를 설치할 수 있습니다.

    참고

    아키텍처에 따라 올바른 제품 변형을 선택합니다.

절차

  1. MCG 명령줄 인터페이스에서 다음 명령을 실행합니다.

    noobaa backingstore create google-cloud-storage <backingstore_name> --private-key-json-file=<PATH TO GCP PRIVATE KEY JSON FILE> --target-bucket <GCP bucket name>
    1. <backingstore_name> 을 backingstore의 이름으로 바꿉니다.
    2. <PATH GCP PRIVATE KEY JSON FILE> 을 이를 위해 생성된 GCP 개인 키 경로로 바꿉니다.
    3. <GCP 버킷 이름> 을 기존 GCP 오브젝트 스토리지 버킷 이름으로 교체합니다. 이 인수는 MCG에 백업 저장소에 대한 대상 버킷으로 사용할 버킷을 알려주고 그 이후 데이터 스토리지 및 관리에 사용할 버킷을 알려줍니다.

      출력은 다음과 유사합니다.

      INFO[0001] ✅ Exists: NooBaa "noobaa"
      INFO[0002] ✅ Created: BackingStore "google-gcp"
      INFO[0002] ✅ Created: Secret "backing-store-google-cloud-storage-gcp"

YAML을 사용하여 스토리지 리소스를 추가할 수도 있습니다.

  1. 인증 정보를 사용하여 시크릿을 생성합니다.

    apiVersion: v1
    kind: Secret
    metadata:
      name: <backingstore-secret-name>
    type: Opaque
    data:
      GoogleServiceAccountPrivateKeyJson: <GCP PRIVATE KEY ENCODED IN BASE64>
    1. Base64를 사용하여 자체 GCP 서비스 계정 개인 키를 공급 및 인코딩하고 <GCP PRIVATE KEY ENCODED IN BASE64> 대신 결과를 사용해야 합니다.
    2. <backingstore-secret-name> 을 고유한 이름으로 교체합니다.
  2. 특정 백업 저장소에 대해 다음 YAML을 적용합니다.

    apiVersion: noobaa.io/v1alpha1
    kind: BackingStore
    metadata:
      finalizers:
      - noobaa.io/finalizer
      labels:
        app: noobaa
      name: bs
      namespace: openshift-storage
    spec:
      googleCloudStorage:
        secret:
          name: <backingstore-secret-name>
          namespace: openshift-storage
        targetBucket: <target bucket>
      type: google-cloud-storage
    1. <target bucket> 을 기존 Google 스토리지 버킷으로 교체합니다. 이 인수는 MCG에 백업 저장소에 대한 대상 버킷으로 사용할 버킷을 알려주고 그 이후 데이터 스토리지 및 관리에 사용할 버킷을 알려줍니다.
    2. <backingstore-secret-name> 을 이전 단계에서 생성한 보안 이름으로 교체합니다.

4.2.5. 로컬 영구 볼륨 지원 보조 보조 저장소 생성

사전 요구 사항

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

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

    서브스크립션 관리자를 사용하여 리포지토리를 활성화하기 위해 적절한 아키텍처를 지정합니다. 예를 들어 IBM Z 인프라의 경우 다음 명령을 사용합니다.

    # subscription-manager repos --enable=rh-odf-4-for-rhel-8-s390x-rpms
  • 또는 https://access.redhat.com/downloads/content/547/ver=4/rhel---8/4/x86_64/packages에 있는 OpenShift Data Foundation RPM에서 MCG 패키지를 설치할 수 있습니다.

    참고

    아키텍처에 따라 올바른 제품 변형을 선택합니다.

절차

  1. MCG 명령줄 인터페이스에서 다음 명령을 실행합니다.

    noobaa backingstore create  pv-pool <backingstore_name> --num-volumes=<NUMBER OF VOLUMES>  --pv-size-gb=<VOLUME SIZE> --storage-class=<LOCAL STORAGE CLASS>
    1. <backingstore_name> 을 backingstore의 이름으로 바꿉니다.
    2. <NUMBER OF VOLUMES> 를 생성하려는 볼륨 수로 바꿉니다. 볼륨 수를 늘리면 스토리지가 확장됩니다.
    3. <VOLUME SIZE> 를 각 볼륨의 필수 크기(GB)로 바꿉니다.
    4. <LOCAL STORAGE CLASS> 를 로컬 스토리지 클래스로 바꾸고 ocs-storagecluster-ceph-rbd 를 사용하는 것이 좋습니다.

      출력은 다음과 유사합니다.

      INFO[0001] ✅ Exists: NooBaa "noobaa"
      INFO[0002] ✅ Exists: BackingStore "local-mcg-storage"

YAML을 사용하여 스토리지 리소스를 추가할 수도 있습니다.

  1. 특정 백업 저장소에 대해 다음 YAML을 적용합니다.

    apiVersion: noobaa.io/v1alpha1
    kind: BackingStore
    metadata:
      finalizers:
      - noobaa.io/finalizer
      labels:
        app: noobaa
      name: <backingstore_name>
      namespace: openshift-storage
    spec:
       pvPool:
        numVolumes: <NUMBER OF VOLUMES>
        resources:
          requests:
            storage: <VOLUME SIZE>
        storageClass: <LOCAL STORAGE CLASS>
      type: pv-pool
    1. <backingstore_name> 을 backingstore의 이름으로 바꿉니다.
    2. <NUMBER OF VOLUMES> 를 생성하려는 볼륨 수로 바꿉니다. 볼륨 수를 늘리면 스토리지가 확장됩니다.
    3. <VOLUME SIZE> 를 각 볼륨의 필수 크기(GB)로 바꿉니다. G 문자는 그대로 있어야 합니다.
    4. <LOCAL STORAGE CLASS> 를 로컬 스토리지 클래스로 바꾸고 ocs-storagecluster-ceph-rbd 를 사용하는 것이 좋습니다.

4.3. s3 호환 Multicloud Object Gateway 백업 저장소 생성

MCG(Multicloud Object Gateway)는 모든 S3 호환 오브젝트 스토리지를 백업 저장소(예: Red Hat Ceph Storage의 RADOS Object Gateway)로 사용할 수 있습니다. 다음 절차에서는 Red Hat Ceph Storage의 RGW를 위한 S3 호환 MCG 백업 저장소를 생성하는 방법을 보여줍니다. RGW가 배포되면 OpenShift Data Foundation Operator는 MCG에 대한 S3 호환 백업 저장소를 자동으로 생성합니다.

절차

  1. MCG 명령줄 인터페이스에서 다음 명령을 실행합니다.

    noobaa backingstore create s3-compatible rgw-resource --access-key=<RGW ACCESS KEY> --secret-key=<RGW SECRET KEY> --target-bucket=<bucket-name> --endpoint=<RGW endpoint>
    1. <RGW ACCESS KEY><RGW SECRET KEY> 를 가져오려면 RGW 사용자 시크릿 이름을 사용하여 다음 명령을 실행합니다.

      oc get secret <RGW USER SECRET NAME> -o yaml -n openshift-storage
    2. Base64에서 액세스 키 ID와 액세스 키를 디코딩하고 유지합니다.
    3. <RGW USER ACCESS KEY><RGW USER ACCESS KEY> 를 이전 단계에서 디코딩한 적절한 데이터로 바꿉니다.
    4. <bucket-name> 을 기존 RGW 버킷 이름으로 바꿉니다. 이 인수는 MCG에 백업 저장소에 대한 대상 버킷으로 사용할 버킷을 알려주고 그 이후 데이터 스토리지 및 관리에 사용할 버킷을 알려줍니다.
    5. <RGW 끝점> 을 가져오려면 RADOS 오브젝트 게이트웨이 S3 끝점 액세스를 참조하십시오.

      출력은 다음과 유사합니다.

      INFO[0001] ✅ Exists: NooBaa "noobaa"
      INFO[0002] ✅ Created: BackingStore "rgw-resource"
      INFO[0002] ✅ Created: Secret "backing-store-secret-rgw-resource"

YAML을 사용하여 백업 저장소를 생성할 수도 있습니다.

  1. CephObjectStore 사용자를 생성합니다. 또한 RGW 인증 정보가 포함된 시크릿을 생성합니다.

    apiVersion: ceph.rook.io/v1
    kind: CephObjectStoreUser
    metadata:
      name: <RGW-Username>
      namespace: openshift-storage
    spec:
      store: ocs-storagecluster-cephobjectstore
      displayName: "<Display-name>"
    1. <RGW-Username><Display-name> 을 고유한 사용자 이름 및 표시 이름으로 바꿉니다.
  2. S3-호환 백업 저장소에 대해 다음 YAML을 적용합니다.

    apiVersion: noobaa.io/v1alpha1
    kind: BackingStore
    metadata:
      finalizers:
      - noobaa.io/finalizer
      labels:
        app: noobaa
      name: <backingstore-name>
      namespace: openshift-storage
    spec:
      s3Compatible:
        endpoint: <RGW endpoint>
        secret:
          name: <backingstore-secret-name>
          namespace: openshift-storage
        signatureVersion: v4
        targetBucket: <RGW-bucket-name>
      type: s3-compatible
    1. <backingstore-secret-name> 을 이전 단계에서 CephObjectStore 로 생성한 보안 이름으로 교체합니다.
    2. <bucket-name> 을 기존 RGW 버킷 이름으로 바꿉니다. 이 인수는 MCG에 백업 저장소에 대한 대상 버킷으로 사용할 버킷을 알려주고 그 이후 데이터 스토리지 및 관리에 사용할 버킷을 알려줍니다.
    3. <RGW 끝점> 을 가져오려면 RADOS 오브젝트 게이트웨이 S3 끝점 액세스를 참조하십시오.

4.4. 사용자 인터페이스를 사용하여 하이브리드 및 멀티클라우드용 스토리지 리소스 추가

절차

  1. OpenShift 웹 콘솔에서 스토리지OpenShift Data Foundation 을 클릭합니다.
  2. Storage Systems 탭에서 스토리지 시스템을 선택한 다음 개요오브젝트 탭을 클릭합니다.
  3. Multicloud Object Gateway 링크를 선택합니다.
  1. 아래에서 강조 표시된 왼쪽의 리소스 탭을 선택합니다. 채워지는 목록에서 클라우드 리소스 추가 를 선택합니다.

    MCG 추가 클라우드 리소스
  2. 새 연결 추가를 선택합니다.

    MCG에서 새 연결 추가
  3. 관련 네이티브 클라우드 공급자 또는 S3 호환 옵션을 선택하고 세부 정보를 입력합니다.

    MCG 추가 클라우드 연결
  4. 새로 생성된 연결을 선택하고 기존 버킷에 매핑합니다.

    MCG가 기존 버킷에 매핑
  5. 필요에 따라 백업 저장소를 만들려면 이 단계를 반복합니다.
참고

NooBaa UI에서 생성된 리소스는 OpenShift UI 또는 MCG CLI에서 사용할 수 없습니다.

4.5. 새 버킷 클래스 생성

버킷 클래스는 OBC(오브젝트 버킷 클래스)에 대한 계층화 정책 및 데이터 배치를 정의하는 버킷 클래스를 나타내는 CRD입니다.

OpenShift Data Foundation에서 버킷 클래스를 생성하려면 이 절차를 사용하십시오.

절차

  1. OpenShift 웹 콘솔에서 스토리지OpenShift Data Foundation 을 클릭합니다.
  2. 버킷 클래스 탭을 클릭합니다.
  3. Create Bucket Class 를 클릭합니다.
  4. Create new Bucket Class 페이지에서 다음을 수행합니다.

    1. 버킷 클래스 유형을 선택하고 버킷 클래스 이름을 입력합니다.

      1. BucketClass 유형을 선택합니다. 다음 옵션 중 하나를 선택합니다.

        • 표준: MCG(Multicloud Object Gateway)에서 데이터를 소비하고, 축소, 압축 및 암호화됩니다.
        • 네임스페이스: 데이터는 중복 제거, 압축 또는 암호화를 수행하지 않고 네임 스페이스 저장소에 저장됩니다.

          기본적으로 Standard는 선택되어 있습니다.By default, Standard is selected.

      2. 버킷 클래스 이름을 입력합니다.
      3. 다음을 클릭합니다.
    2. 배치 정책에서 계층 1 - 정책 유형을 선택하고 다음을 클릭합니다. 요구 사항에 따라 옵션 중 하나를 선택할 수 있습니다.

      • 스프레드 를 사용하면 선택한 리소스에 걸쳐 데이터를 분산할 수 있습니다.
      • mirror 를 사용하면 선택한 리소스에서 데이터를 완전히 복제할 수 있습니다.
      • Add Tier 를 클릭하여 다른 정책 계층을 추가합니다.
    3. Tier 1 - Policy TypeSpread 로 선택한 경우 사용 가능한 목록에서 백업 저장소 리소스를 하나 이상 선택하고 다음을 클릭합니다. 또는 새 백업 저장소를 만들 수도 있습니다.

      참고

      이전 단계에서 미러링으로 정책 유형을 선택할 때 최소한 2개의 백업 저장소를 선택해야 합니다.

    4. 버킷 클래스 설정을 검토하고 확인합니다.
    5. Create Bucket Class 를 클릭합니다.

검증 단계

  1. OpenShift 웹 콘솔에서 스토리지OpenShift Data Foundation 을 클릭합니다.
  2. 버킷 클래스 탭을 클릭하고 새 버킷 클래스를 검색합니다.

4.6. 버킷 클래스 편집

Openshift 웹 콘솔에서 편집 버튼을 클릭하여 YAML 파일을 통해 버킷 클래스 구성 요소를 편집하려면 다음 절차를 사용하십시오.

사전 요구 사항

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

절차

  1. OpenShift 웹 콘솔에서 스토리지OpenShift Data Foundation 을 클릭합니다.
  2. 버킷 클래스 탭을 클릭합니다.
  3. 편집하려는 Bucket 클래스 옆에 있는 Action Menu (및 작업 메뉴) 를 클릭합니다.
  4. Edit Bucket Class 를 클릭합니다.
  5. YAML 파일로 리디렉션되어 이 파일에서 필요한 변경을 수행하고 저장을 클릭합니다.

4.7. 버킷 클래스의 백업 저장소 편집

다음 절차에 따라 기존 MCG(Multicloud Object Gateway) 버킷 클래스를 편집하여 버킷 클래스에 사용되는 기본 백업 저장소를 변경합니다.

사전 요구 사항

  • OpenShift 웹 콘솔에 대한 관리자 액세스.
  • 버킷 클래스입니다.
  • 백업 저장소.

절차

  1. OpenShift 웹 콘솔에서 스토리지OpenShift Data Foundation 을 클릭합니다.
  2. 버킷 클래스 탭을 클릭합니다.
  3. 편집하려는 Bucket 클래스 옆에 있는 Action Menu (및 작업 메뉴) 를 클릭합니다.

    버킷 클래스 리소스 편집
  4. Edit Bucket Class Resources 를 클릭합니다.
  5. Edit Bucket Class Resources 페이지에서 버킷 클래스에 백업 저장소를 추가하거나 버킷 클래스에서 백업 저장소를 제거하여 버킷 클래스 리소스를 편집합니다. 하나 또는 두 개의 계층과 다른 배치 정책으로 생성된 버킷 클래스 리소스를 편집할 수도 있습니다.

    • 버킷 클래스에 백업 저장소를 추가하려면 백업 저장소의 이름을 선택합니다.
    • 버킷 클래스에서 백업 저장소를 제거하려면 백업 저장소의 이름을 지웁니다.

      버킷 클래스의 백업 저장소 편집
  6. 저장을 클릭합니다.

5장. 네임스페이스 버킷 관리

네임스페이스 버킷을 사용하면 다른 공급자의 데이터 리포지토리를 함께 연결할 수 있으므로 단일 통합 보기를 통해 모든 데이터와 상호 작용할 수 있습니다. 각 공급자와 연결된 오브젝트 버킷을 네임스페이스 버킷에 추가하고 네임스페이스 버킷을 통해 데이터에 액세스하여 모든 오브젝트 버킷을 한 번에 확인합니다. 이를 통해 다른 여러 스토리지 공급자에서 읽는 동안 기본 스토리지 공급자에게 작성할 수 있으므로 새 스토리지 공급자로 마이그레이션하는 비용을 크게 줄일 수 있습니다.

참고

네임스페이스 버킷은 쓰기 대상을 사용할 수 있고 작동하는 경우에만 사용할 수 있습니다.

5.1. 네임 스페이스 버킷의 오브젝트에 대한 Amazon S3 API 끝점

Amazon Simple Storage Service(S3) API를 사용하여 네임스페이스 버킷의 오브젝트와 상호 작용할 수 있습니다.

Red Hat OpenShift Data Foundation 4.6 이후에는 다음과 같은 네임 스페이스 버킷 작업을 지원합니다.

이러한 작업 및 사용 방법에 대한 최신 정보는 Amazon S3 API 참조 문서를 참조하십시오.

5.2. Multicloud Object Gateway CLI 및 YAML을 사용하여 네임스페이스 버킷 추가

네임스페이스 버킷에 대한 자세한 내용은 네임스페이스 버킷 관리를 참조하십시오.

배포 유형 및 YAML 또는 MCG(Multicloud Object Gateway) CLI를 사용할지 여부에 따라 다음 절차 중 하나를 선택하여 네임스페이스 버킷을 추가합니다.

5.2.1. YAML을 사용하여 AWS S3 네임스페이스 버킷 추가

사전 요구 사항

절차

  1. 인증 정보를 사용하여 시크릿을 생성합니다.

    apiVersion: v1
    kind: Secret
    metadata:
      name: <namespacestore-secret-name>
      type: Opaque
    data:
      AWS_ACCESS_KEY_ID: <AWS ACCESS KEY ID ENCODED IN BASE64>
      AWS_SECRET_ACCESS_KEY: <AWS SECRET ACCESS KEY ENCODED IN BASE64>
    1. Base64를 사용하여 자체 AWS 액세스 키 ID 및 시크릿 액세스 키를 제공하고 <AWS ACCESS KEY ID ENCODED IN BASE64><AWS SECRET ACCESS KEY ENCODED IN BASE64> BASE64>의 결과를 사용해야 합니다.
    2. <namespacestore-secret-name> 을 고유한 이름으로 교체합니다.
  2. OpenShift CRD(Custom Resource Definitions)를 사용하여 NamespaceStore 리소스를 생성합니다. NamespaceStore는 MCG 네임 스페이스 버킷의 데이터에 대한 읽기 또는 쓰기 대상으로 사용할 기본 스토리지를 나타냅니다. NamespaceStore 리소스를 생성하려면 다음 YAML을 적용합니다.

    apiVersion: noobaa.io/v1alpha1
    kind: NamespaceStore
    metadata:
      finalizers:
      - noobaa.io/finalizer
      labels:
        app: noobaa
      name: <resource-name>
      namespace: openshift-storage
    spec:
      awsS3:
        secret:
          name: <namespacestore-secret-name>
          namespace: <namespace-secret>
        targetBucket: <target-bucket>
      type: aws-s3
    1. <resource-name> 을 리소스에 지정할 이름으로 교체합니다.
    2. <namespacestore-secret-name> 을 1단계에서 생성된 보안으로 교체합니다.
    3. <namespace-secret> 을 보안을 찾을 수 있는 네임스페이스로 바꿉니다.
    4. <target-bucket> 을 NamespaceStore에 대해 생성한 대상 버킷으로 바꿉니다.
  3. 네임스페이스 버킷에 대한 네임스페이스 정책을 정의하는 네임스페이스 버킷 클래스를 생성합니다. 네임스페이스 정책에는 단일 또는 다중 유형의 유형이 필요합니다.

    • 유형 단일 의 네임스페이스 정책에는 다음 구성이 필요합니다.

      apiVersion: noobaa.io/v1alpha1
      kind: BucketClass
      metadata:
        labels:
          app: noobaa
        name: <my-bucket-class>
        namespace: openshift-storage
      spec:
        namespacePolicy:
          type:
          single:
            resource: <resource>
      • <my-bucket-class> 를 고유한 네임스페이스 버킷 클래스 이름으로 교체합니다.
      • <resource> 를 네임 스페이스 버킷의 읽기 및 쓰기 대상을 정의하는 단일 네임스페이스 저장소의 이름으로 바꿉니다.
    • 유형 multi 의 네임스페이스 정책에는 다음 구성이 필요합니다.

      apiVersion: noobaa.io/v1alpha1
      
      kind: BucketClass
      metadata:
        labels:
          app: noobaa
        name: <my-bucket-class>
        namespace: openshift-storage
      spec:
        namespacePolicy:
          type: Multi
          multi:
            writeResource: <write-resource>
            readResources:
            - <read-resources>
            - <read-resources>
      • <my-bucket-class> 를 고유한 버킷 클래스 이름으로 교체합니다.
      • <write-resource> 를 네임스페이스 버킷의 쓰기 대상을 정의하는 단일 네임스페이스 저장소의 이름으로 교체합니다.
      • <read-resources> 를 네임스페이스 버킷의 읽기 대상을 정의하는 namespace-stores 이름 목록으로 바꿉니다.
  4. 2단계에서 정의된 버킷 클래스를 사용하는 OBC(Object Bucket Class) 리소스를 사용하여 버킷을 생성하려면 다음 YAML을 적용합니다.

    apiVersion: objectbucket.io/v1alpha1
    kind: ObjectBucketClaim
    metadata:
      name: <resource-name>
      namespace: openshift-storage
    spec:
      generateBucketName: <my-bucket>
      storageClassName: openshift-storage.noobaa.io
      additionalConfig:
        bucketclass: <my-bucket-class>
    1. <resource-name> 을 리소스에 지정할 이름으로 교체합니다.
    2. <my-bucket> 을 버킷에 부여하려는 이름으로 교체합니다.
    3. <my-bucket-class> 를 이전 단계에서 만든 버킷 클래스로 바꿉니다.

Operator가 OBC를 프로비저닝하면 MCG에 버킷이 생성되고 Operator는 동일한 이름과 OBC의 동일한 네임스페이스에 Secret 및 ConfigMap을 생성합니다.

5.2.2. YAML을 사용하여 IBM COS 네임스페이스 버킷 추가

사전 요구 사항

절차

  1. 인증 정보를 사용하여 시크릿을 생성합니다.

    apiVersion: v1
    kind: Secret
    metadata:
      name: <namespacestore-secret-name>
      type: Opaque
    data:
      IBM_COS_ACCESS_KEY_ID: <IBM COS ACCESS KEY ID ENCODED IN BASE64>
      IBM_COS_SECRET_ACCESS_KEY: <IBM COS SECRET ACCESS KEY ENCODED IN BASE64>
    1. Base64를 사용하여 자체 IBM COS 액세스 키 ID 및 시크릿 액세스 키를 입력하고 인코딩해야 합니다. <IBM COS ACCESS KEY ID ENCODED IN BASE64><IBM COS ACCESS KEY ENCODED IN BASE64> ACCESS KEY
    2. <namespacestore-secret-name> 을 고유한 이름으로 교체합니다.
  2. OpenShift CRD(Custom Resource Definitions)를 사용하여 NamespaceStore 리소스를 생성합니다. NamespaceStore는 MCG 네임 스페이스 버킷의 데이터에 대한 읽기 또는 쓰기 대상으로 사용할 기본 스토리지를 나타냅니다. NamespaceStore 리소스를 생성하려면 다음 YAML을 적용합니다.

    apiVersion: noobaa.io/v1alpha1
    kind: NamespaceStore
    metadata:
      finalizers:
      - noobaa.io/finalizer
      labels:
        app: noobaa
      name: bs
      namespace: openshift-storage
    spec:
      s3Compatible:
        endpoint: <IBM COS ENDPOINT>
        secret:
          name: <namespacestore-secret-name>
          namespace: <namespace-secret>
        signatureVersion: v2
        targetBucket: <target-bucket>
      type: ibm-cos
    1. <IBM COS ENDPOINT> 를 적절한 IBM COS 엔드포인트로 바꿉니다.
    2. <namespacestore-secret-name> 을 1단계에서 생성된 보안으로 교체합니다.
    3. <namespace-secret> 을 보안을 찾을 수 있는 네임스페이스로 바꿉니다.
    4. <target-bucket> 을 NamespaceStore에 대해 생성한 대상 버킷으로 바꿉니다.
  3. 네임스페이스 버킷에 대한 네임스페이스 정책을 정의하는 네임스페이스 버킷 클래스를 생성합니다. 네임스페이스 정책에는 단일 또는 다중 유형의 유형이 필요합니다.

    • 유형 단일 의 네임스페이스 정책에는 다음 구성이 필요합니다.

      apiVersion: noobaa.io/v1alpha1
      kind: BucketClass
      metadata:
        labels:
          app: noobaa
        name: <my-bucket-class>
        namespace: openshift-storage
      spec:
        namespacePolicy:
          type:
          single:
            resource: <resource>
      • <my-bucket-class> 를 고유한 네임스페이스 버킷 클래스 이름으로 교체합니다.
      • <resource> 를 네임스페이스 버킷의 읽기 및 쓰기 대상을 정의하는 단일 네임스페이스 저장소의 이름으로 바꿉니다.
    • 유형 multi 의 네임스페이스 정책에는 다음 구성이 필요합니다.

      apiVersion: noobaa.io/v1alpha1
      kind: BucketClass
      metadata:
        labels:
          app: noobaa
        name: <my-bucket-class>
        namespace: openshift-storage
      spec:
        namespacePolicy:
          type: Multi
          multi:
            writeResource: <write-resource>
            readResources:
            - <read-resources>
            - <read-resources>
      • <my-bucket-class> 를 고유한 버킷 클래스 이름으로 교체합니다.
      • <write-resource> 를 네임스페이스 버킷의 쓰기 대상을 정의하는 단일 네임스페이스 저장소의 이름으로 교체합니다.
      • <read-resources> 를 네임스페이스 버킷의 읽기 대상을 정의하는 네임스페이스 저장소 이름 목록으로 바꿉니다.
  4. 2단계에서 정의된 버킷 클래스를 사용하는 OBC(Object Bucket Class) 리소스를 사용하여 버킷을 생성하려면 다음 YAML을 적용합니다.

    apiVersion: objectbucket.io/v1alpha1
    kind: ObjectBucketClaim
    metadata:
      name: <resource-name>
      namespace: openshift-storage
    spec:
      generateBucketName: <my-bucket>
      storageClassName: openshift-storage.noobaa.io
      additionalConfig:
        bucketclass: <my-bucket-class>
    1. <resource-name> 을 리소스에 지정할 이름으로 교체합니다.
    2. <my-bucket> 을 버킷에 부여하려는 이름으로 교체합니다.
    3. <my-bucket-class> 를 이전 단계에서 만든 버킷 클래스로 바꿉니다.

Operator가 OBC를 프로비저닝하면 MCG에 버킷이 생성되고 Operator는 동일한 이름과 OBC의 동일한 네임스페이스에 Secret 및 ConfigMap을 생성합니다.

5.2.3. Multicloud Object Gateway CLI를 사용하여 AWS S3 네임스페이스 버킷 추가

사전 요구 사항

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

서브스크립션 관리자를 사용하여 리포지토리를 활성화하기 위해 적절한 아키텍처를 지정합니다. 예를 들어 IBM Z 인프라의 경우 다음 명령을 사용합니다.

# subscription-manager repos --enable=rh-odf-4-for-rhel-8-s390x-rpms

또는 https://access.redhat.com/downloads/content/547/ver=4/rhel---8/4/x86_64/package 에 있는 OpenShift Data Foundation RPM에서 MCG 패키지를 설치할 수 있습니다.

참고

아키텍처에 따라 올바른 제품 변형을 선택합니다.

절차

  1. NamespaceStore 리소스를 생성합니다. NamespaceStore는 MCG 네임 스페이스 버킷의 데이터에 대한 읽기 또는 쓰기 대상으로 사용할 기본 스토리지를 나타냅니다. MCG 명령줄 인터페이스에서 다음 명령을 실행합니다.

    noobaa namespacestore create aws-s3 <namespacestore> --access-key <AWS ACCESS KEY> --secret-key <AWS SECRET ACCESS KEY> --target-bucket <bucket-name> -n openshift-storage
    1. <namespacestore> 를 NamespaceStore의 이름으로 바꿉니다.
    2. <AWS ACCESS KEY><AWS SECRET ACCESS KEY> 를 이를 위해 생성한 AWS 액세스 키 ID 및 시크릿 액세스 키로 바꿉니다.
    3. <bucket-name> 을 기존 AWS 버킷 이름으로 교체합니다. 이 인수는 MCG에 백업 저장소에 대한 대상 버킷으로 사용할 버킷을 알려주고 그 이후 데이터 스토리지 및 관리에 사용할 버킷을 알려줍니다.
  2. 네임스페이스 버킷에 대한 네임스페이스 정책을 정의하는 네임스페이스 버킷 클래스를 생성합니다. 네임스페이스 정책에는 단일 또는 다중 유형의 유형이 필요합니다.

    • 다음 명령을 실행하여 단일 유형의 네임 스페이스 정책으로 네임 스페이스 버킷 클래스를 생성합니다.

      noobaa bucketclass create namespace-bucketclass single <my-bucket-class> --resource <resource> -n openshift-storage
      • <resource-name> 을 리소스를 지정할 이름으로 교체합니다.
      • <my-bucket-class> 를 고유한 버킷 클래스 이름으로 교체합니다.
      • <resource> 를 네임스페이스 버킷의 읽기 및 쓰기 대상을 정의하는 단일 namespace-store로 바꿉니다.
    • 다음 명령을 실행하여 multi 유형의 네임 스페이스 정책으로 네임 스페이스 버킷 클래스를 생성합니다.

      noobaa bucketclass create namespace-bucketclass multi <my-bucket-class> --write-resource <write-resource> --read-resources <read-resources> -n openshift-storage
      • <resource-name> 을 리소스를 지정할 이름으로 교체합니다.
      • <my-bucket-class> 를 고유한 버킷 클래스 이름으로 교체합니다.
      • <write-resource> 를 네임스페이스 버킷의 쓰기 대상을 정의하는 단일 namespace-store로 바꿉니다.
      • <read-resources> 를 네임스페이스 버킷의 읽기 대상을 정의하는 쉼표로 구분된 네임스페이스 저장소 목록으로 바꿉니다.
  3. 다음 명령을 실행하여 2단계에서 정의된 버킷 클래스를 사용하는 OBC(오브젝트 버킷 클래스) 리소스를 사용하여 버킷을 생성합니다.

    noobaa obc create my-bucket-claim -n openshift-storage --app-namespace my-app --bucketclass <custom-bucket-class>
    1. <bucket-name> 을 선택한 버킷 이름으로 바꿉니다.
    2. <custom-bucket-class> 를 2단계에서 생성된 버킷 클래스의 이름으로 바꿉니다.

Operator가 OBC를 프로비저닝하면 MCG에 버킷이 생성되고 Operator는 동일한 이름과 OBC의 동일한 네임스페이스에 Secret 및 ConfigMap을 생성합니다.

5.2.4. Multicloud Object Gateway CLI를 사용하여 IBM COS 네임스페이스 버킷 추가

사전 요구 사항

  • 실행 중인 OpenShift Data Foundation Platform.
  • MCG(Multicloud Object Gateway)에 대한 액세스 권한은 2장 2장, 애플리케이션을 사용하여 Multicloud Object Gateway 액세스를 참조하십시오.
  • MCG 명령줄 인터페이스를 다운로드합니다.

    # 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

    또는 https://access.redhat.com/downloads/content/547/ver=4/rhel---8/4/x86_64/package 에 있는 OpenShift Data Foundation RPM에서 MCG 패키지를 설치할 수 있습니다.

    참고

    아키텍처에 따라 올바른 제품 변형을 선택합니다.

절차

  1. NamespaceStore 리소스를 생성합니다. NamespaceStore는 MCG 네임 스페이스 버킷의 데이터에 대한 읽기 또는 쓰기 대상으로 사용할 기본 스토리지를 나타냅니다. MCG 명령줄 인터페이스에서 다음 명령을 실행합니다.

    noobaa namespacestore create ibm-cos <namespacestore> --endpoint <IBM COS ENDPOINT> --access-key <IBM ACCESS KEY> --secret-key <IBM SECRET ACCESS KEY> --target-bucket <bucket-name> -n openshift-storage
    1. <namespacestore> 를 NamespaceStore의 이름으로 바꿉니다.
    2. <IBM ACCESS KEY>, <IBM SECRET ACCESS KEY>, <IBM COS ENDPOINT> 를 IBM 액세스 키 ID, 시크릿 액세스 키 및 기존 IBM 버킷의 위치에 해당하는 적절한 지역 끝점으로 바꿉니다.
    3. <bucket-name> 을 기존 IBM 버킷 이름으로 바꿉니다. 이 인수는 MCG에 백업 저장소에 대한 대상 버킷으로 사용할 버킷을 알려주고 그 이후 데이터 스토리지 및 관리에 사용할 버킷을 알려줍니다.
  2. 네임스페이스 버킷에 대한 네임스페이스 정책을 정의하는 네임스페이스 버킷 클래스를 생성합니다. 네임스페이스 정책에는 단일 또는 다중 유형의 유형이 필요합니다.

    • 다음 명령을 실행하여 단일 유형의 네임 스페이스 정책으로 네임 스페이스 버킷 클래스를 생성합니다.

      noobaa bucketclass create namespace-bucketclass single <my-bucket-class> --resource <resource> -n openshift-storage
      • <resource-name> 을 리소스를 지정할 이름으로 교체합니다.
      • <my-bucket-class> 를 고유한 버킷 클래스 이름으로 교체합니다.
      • <resource> 를 네임스페이스 버킷의 읽기 및 쓰기 대상을 정의하는 단일 namespace-store로 바꿉니다.
    • 다음 명령을 실행하여 multi 유형의 네임 스페이스 정책으로 네임 스페이스 버킷 클래스를 생성합니다.

      noobaa bucketclass create namespace-bucketclass multi <my-bucket-class> --write-resource <write-resource> --read-resources <read-resources> -n openshift-storage
      • <resource-name> 을 리소스를 지정할 이름으로 교체합니다.
      • <my-bucket-class> 를 고유한 버킷 클래스 이름으로 교체합니다.
      • <write-resource> 를 네임스페이스 버킷의 쓰기 대상을 정의하는 단일 namespace-store로 바꿉니다.
      • <read-resources> 를 네임스페이스 버킷의 읽기 대상을 정의하는 쉼표로 구분된 네임스페이스 저장소 목록으로 바꿉니다.
  3. 다음 명령을 실행하여 2단계에서 정의된 버킷 클래스를 사용하는 OBC(오브젝트 버킷 클래스) 리소스를 사용하여 버킷을 생성합니다.

    noobaa obc create my-bucket-claim -n openshift-storage --app-namespace my-app --bucketclass <custom-bucket-class>
    1. <bucket-name> 을 선택한 버킷 이름으로 바꿉니다.
    2. <custom-bucket-class> 를 2단계에서 생성된 버킷 클래스의 이름으로 바꿉니다.

Operator가 OBC를 프로비저닝하면 MCG에 버킷이 생성되고 Operator는 동일한 이름과 OBC의 동일한 네임스페이스에 Secret 및 ConfigMap을 생성합니다.

5.3. OpenShift Container Platform 사용자 인터페이스를 사용하여 네임스페이스 버킷 추가

OpenShift Data Foundation 4.8 릴리스를 통해 OpenShift Container Platform 사용자 인터페이스를 사용하여 네임스페이스 버킷을 추가할 수 있습니다. 네임스페이스 버킷에 대한 자세한 내용은 네임스페이스 버킷 관리를 참조하십시오.

사전 요구 사항

  • OpenShift Data Foundation Operator를 사용하여 OpenShift Container Platform이 설치되어 있어야 합니다.
  • MCG(Multicloud Object Gateway)에 대한 액세스.

절차

  1. OpenShift 웹 콘솔에 로그인합니다.
  2. 스토리지 → OpenShift Data Foundation을 클릭합니다.
  3. 네임 스페이스 저장소 탭을 클릭하여 네임 스페이스 버킷에 사용할 네임 스페이스 저장소 리소스를 생성합니다.

    1. 네임스페이스 저장소 생성 을 클릭합니다.
    2. 네임스페이스 저장소 이름을 입력합니다.
    3. 공급자를 선택합니다.
    4. region을 선택합니다.
    5. 기존 시크릿을 선택하거나 Switch to credentials 를 클릭하여 보안 키 및 시크릿 액세스 키를 입력하여 시크릿을 생성합니다.
    6. 대상 버킷을 선택합니다.
    7. 생성을 클릭합니다.
    8. namespacestore가 Ready 상태인지 확인합니다.
    9. 원하는 양의 리소스가 있을 때까지 이러한 단계를 반복합니다.
  4. 버킷 클래스 탭 → 새 버킷 클래스 생성을 클릭합니다.

    1. Namespace (네임스페이스) 라디오 버튼을 선택합니다.
    2. 버킷 클래스 이름을 입력합니다.
    3. 설명을 추가합니다(선택 사항).
    4. 다음을 클릭합니다.
  5. 네임스페이스 버킷에 대한 네임스페이스 정책 유형을 선택한 다음 Next 를 클릭합니다.
  6. 대상 리소스를 선택합니다.

    • 네임스페이스 정책 유형이 Single 이면 읽기 리소스를 선택해야 합니다.
    • 네임스페이스 정책 유형이 Multi 인 경우 읽기 리소스와 쓰기 리소스를 선택해야 합니다.
    • 네임스페이스 정책 유형이 Cache 인 경우 네임 스페이스 버킷의 읽기 및 쓰기 대상을 정의하는 Hub 네임 스페이스 저장소를 선택해야 합니다.
  7. 다음을 클릭합니다.
  8. 새 버킷 클래스를 검토한 다음 Create Bucketclass(Bucketclass 만들기 )를 클릭합니다.
  9. BucketClass 페이지에서 새로 생성된 리소스가 생성 단계에 있는지 확인합니다.
  10. OpenShift 웹 콘솔에서 스토리지OpenShift Data Foundation 을 클릭합니다.
  11. 상태 카드에서 Storage System 을 클릭하고 표시되는 팝업에서 스토리지 시스템 링크를 클릭합니다.
  12. 오브젝트 탭에서 Multicloud Object GatewayBucketsNamespace Buckets 탭을 클릭합니다.
  13. Create Namespace Bucket 을 클릭합니다.

    1. 이름 선택 탭에서 네임 스페이스 버킷의 이름을 지정하고 다음을 클릭합니다.
    2. Set Placement 탭에서 다음을 수행합니다.

      1. Read Policy 에서 네임스페이스 버킷이 데이터를 읽도록 5단계에서 생성된 각 네임스페이스 리소스의 확인란을 선택합니다.
      2. 사용 중인 네임스페이스 정책 유형이 Multi 이면 Under Write Policy 인 경우 네임스페이스 버킷이 데이터를 써야 하는 네임스페이스 리소스를 지정합니다.
      3. 다음을 클릭합니다.
    3. 생성을 클릭합니다.

검증

  • 네임 스페이스 버킷이 상태 열에 녹색 확인 표시, 예상 읽기 리소스 수 및 예상되는 쓰기 리소스 이름으로 나열되는지 확인합니다.

6장. 하이브리드 및 멀티클라우드 버킷에 대한 데이터 미러링

MCG(Multicloud Object Gateway)는 클라우드 공급자 및 클러스터에 걸쳐 있는 데이터 프로세스를 간소화합니다.

사전 요구 사항

그런 다음 데이터 관리 정책을 반영하는 버킷 클래스를 만듭니다.

절차

다음 세 가지 방법으로 미러링 데이터를 설정할 수 있습니다.

6.1. MCG 명령줄 인터페이스를 사용하여 데이터를 미러링하기 위한 버킷 클래스 생성

  1. MCG(Multicloud Object Gateway) 명령줄 인터페이스에서 다음 명령을 실행하여 미러링 정책으로 버킷 클래스를 생성합니다.

    $ noobaa bucketclass create placement-bucketclass mirror-to-aws --backingstores=azure-resource,aws-resource --placement Mirror
  2. 새로 생성된 버킷 클래스를 새 버킷 클레임으로 설정하여 두 위치 간에 미러링될 새 버킷을 생성합니다.

    $ noobaa obc create  mirrored-bucket --bucketclass=mirror-to-aws

6.2. YAML을 사용하여 데이터를 미러링하기 위한 버킷 클래스 생성

  1. 다음 YAML을 적용합니다. 이 YAML은 로컬 Ceph 스토리지와 AWS 간에 데이터를 미러링하는 하이브리드 예입니다.

    apiVersion: noobaa.io/v1alpha1
    kind: BucketClass
    metadata:
      labels:
        app: noobaa
      name: <bucket-class-name>
      namespace: openshift-storage
    spec:
      placementPolicy:
        tiers:
        - backingStores:
          - <backing-store-1>
          - <backing-store-2>
          placement: Mirror
  2. 표준 OBC(오브젝트 버킷 클레임)에 다음 행을 추가합니다.

    additionalConfig:
      bucketclass: mirror-to-aws

    OBC에 대한 자세한 내용은 9장. 오브젝트 버킷 클레임 를 참조하십시오.

6.3. 사용자 인터페이스를 사용하여 데이터를 미러링하도록 버킷 구성

  1. OpenShift 웹 콘솔에서 스토리지OpenShift Data Foundation 을 클릭합니다.
  2. 상태 카드에서 Storage System 을 클릭하고 표시되는 팝업에서 스토리지 시스템 링크를 클릭합니다.
  3. Object 탭에서 Multicloud Object Gateway 링크를 클릭합니다.
  4. NooBaa 페이지에서 왼쪽의 버킷 아이콘을 클릭합니다. 버킷 목록을 볼 수 있습니다.

    MCG noobaa 버킷 아이콘
  5. 업데이트하려는 버킷을 클릭합니다.
  6. 계층 1 리소스 편집 을 클릭합니다.

    MCG edit tier 1 리소스
  7. 미러 를 선택하고 이 버킷에 사용할 관련 리소스를 확인합니다. 다음 예제에서 AWS에 있는 noobaa-default-backing-store 와 AWS에 있는 AWS-backingstore 간의 데이터가 미러링됩니다.

    MCG 미러 관련 리소스
  8. 저장을 클릭합니다.
참고

NooBaa UI에서 생성된 리소스는 OpenShift UI 또는 MCG(Multicloud Object Gateway) CLI에서 사용할 수 없습니다.

7장. Multicloud Object Gateway의 버킷 정책

OpenShift Data Foundation은 AWS S3 버킷 정책을 지원합니다. 버킷 정책을 사용하면 사용자에게 버킷 및 오브젝트에 대한 액세스 권한을 부여할 수 있습니다.

7.1. 버킷 정책 정보

버킷 정책은 AWS S3 버킷 및 오브젝트에 권한을 부여할 수 있는 액세스 정책 옵션입니다. 버킷 정책은 JSON 기반 액세스 정책 언어를 사용합니다. 액세스 정책 언어에 대한 자세한 내용은 AWS Access Policy Language Overview 를 참조하십시오.

7.2. 버킷 정책 사용

사전 요구 사항

절차

MCG에서 버킷 정책을 사용하려면 다음을 수행합니다.

  1. JSON 형식으로 버킷 정책을 생성합니다. 다음 예제를 참조하십시오.

    {
        "Version": "NewVersion",
        "Statement": [
            {
                "Sid": "Example",
                "Effect": "Allow",
                "Principal": [
                        "john.doe@example.com"
                ],
                "Action": [
                    "s3:GetObject"
                ],
                "Resource": [
                    "arn:aws:s3:::john_bucket"
                ]
            }
        ]
    }

    버킷 정책에는 액세스 권한과 관련하여 사용 가능한 많은 요소가 있습니다.

    이러한 요소 및 액세스 권한을 제어하는 데 사용할 수 있는 방법에 대한 예제에 대한 자세한 내용은 AWS Access Policy Language 개요 를 참조하십시오.

    버킷 정책 예제에 대한 자세한 내용은 AWS Bucket Policy Examples 를 참조하십시오.

    S3 사용자 생성에 대한 지침은 7.3절. “Multicloud Object Gateway에서 AWS S3 사용자 생성” 에서 확인할 수 있습니다.

  2. AWS S3 클라이언트를 사용하여 put-bucket-policy 명령을 사용하여 버킷 정책을 S3 버킷에 적용합니다.

    # aws --endpoint ENDPOINT --no-verify-ssl s3api put-bucket-policy --bucket MyBucket --policy BucketPolicy
    1. ENDPOINT 를 S3 끝점으로 교체합니다.
    2. MyBucket 을 버킷으로 교체하여 정책을 설정합니다.
    3. BucketPolicy 를 버킷 정책 JSON 파일로 교체합니다.
    4. 기본 자체 서명된 인증서를 사용하는 경우 --no-verify-ssl 을 추가합니다.

      예를 들면 다음과 같습니다.

      # aws --endpoint https://s3-openshift-storage.apps.gogo44.noobaa.org --no-verify-ssl s3api put-bucket-policy -bucket MyBucket --policy file://BucketPolicy

      put-bucket-policy 명령에 대한 자세한 내용은 AWS CLI 명령 참조에서 put-bucket-policy 를 참조하십시오.

      참고

      principal 요소는 버킷과 같이 리소스에 대한 액세스 허용 또는 거부된 사용자를 지정합니다. 현재 NooBaa 계정만 보안 주체로 사용할 수 있습니다. 객체 버킷 클레임의 경우 NooBaa는 obc-account.<generated bucket name>@noobaa.io.io 계정을 자동으로 생성합니다.

      참고

      버킷 정책 조건은 지원되지 않습니다.

7.3. Multicloud Object Gateway에서 AWS S3 사용자 생성

사전 요구 사항

절차

  1. OpenShift 웹 콘솔에서 스토리지OpenShift Data Foundation 을 클릭합니다.
  2. 상태 카드에서 Storage System 을 클릭하고 표시되는 팝업에서 스토리지 시스템 링크를 클릭합니다.
  3. Object 탭에서 Multicloud Object Gateway 링크를 클릭합니다.
  4. 계정 탭에서 계정 생성 을 클릭합니다.

    MCG 계정 생성 버튼
  5. S3 Access only 을 선택하고 계정 이름 (예: john.doe@example.com)을 제공합니다. mailto:john.doe@example.com 다음을 클릭합니다.

    MCG Create account s3 user
  6. S3 기본 배치 (예: noobaa-default-backing-store )를 선택합니다. 버킷 권한 을 선택합니다. 특정 버킷 또는 모든 버킷을 선택할 수 있습니다. 생성을 클릭합니다.

    MCG Create account s3 user2

8장. Multicloud Object Gateway 버킷 및 버킷 클래스 복제

버킷 간 데이터 복제를 통해 복원력이 향상되고 협업 옵션이 향상됩니다. 이러한 버킷은 지원되는 스토리지 솔루션(S3, Azure 등) 또는 네임스페이스 버킷(PV 풀 및 GCP이 지원되지 않는 경우)에서 지원하는 데이터 버킷일 수 있습니다.

버킷 복제 정책은 복제 규칙 목록으로 구성됩니다. 각 규칙은 대상 버킷을 정의하고 오브젝트 키 접두사를 기반으로 필터를 지정할 수 있습니다. 두 번째 버킷에 보완 복제 정책을 구성하면 양방향 복제가 발생합니다.

사전 요구 사항

  • 실행 중인 OpenShift Data Foundation Platform.
  • MCG(Multicloud Object Gateway)에 대한 액세스는 애플리케이션을 사용하여 Multicloud Object Gateway 액세스를 참조하십시오.
  • MCG 명령줄 인터페이스를 다운로드합니다.

    # 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
  • 또는 https://access.redhat.com/downloads/content/547/ver=4/rhel---8/4/x86_64/packages의 OpenShift Data Foundation RPM에서 mcg 패키지를 설치할 수 있습니다.

    중요

    아키텍처에 따라 올바른 제품 변형을 선택합니다.

    참고

    특정 MCG 기능은 특정 MCG 버전에서만 사용할 수 있으며 MCG의 기능을 완전히 사용하려면 적절한 MCG CLI 도구 버전을 사용해야 합니다.

버킷을 복제하려면 다른 버킷에 버킷 복제를 참조하십시오.

버킷 클래스 복제 정책을 설정하려면 버킷 클래스 복제 정책 설정을 참조하십시오.

8.1. 다른 버킷에 버킷 복제

다음과 같은 두 가지 방법으로 버킷 복제 정책을 설정할 수 있습니다.

8.1.1. MCG 명령줄 인터페이스를 사용하여 다른 버킷에 버킷 복제

특정 복제 정책이 필요한 MCG(Multicloud Object Gateway) 버킷이 필요한 애플리케이션에서는 OBC(오브젝트 버킷 클레임)를 생성하고 JSON 파일에서 복제 정책 매개 변수를 정의할 수 있습니다.

절차

  • MCG 명령줄 인터페이스에서 다음 명령을 실행하여 특정 복제 정책으로 OBC를 생성합니다.

    noobaa obc create <bucket-claim-name> -n openshift-storage --replication-policy /path/to/json-file.json
    <bucket-claim-name>
    버킷 클레임의 이름을 지정합니다.
    /path/to/json-file.json

    복제 정책을 정의하는 JSON 파일의 경로입니다.

    JSON 파일의 예:

    [{ "rule_id": "rule-1", "destination_bucket": "first.bucket", "filter": {"prefix": "repl"}}]
    "prefix"
    은 선택 사항입니다. 복제해야 하는 오브젝트 키의 접두사이며, 비어 있을 수도 있습니다(예: {"prefix": ""} ).

    예 8.1. 예제

    noobaa obc create my-bucket-claim -n openshift-storage --replication-policy /path/to/json-file.json

8.1.2. YAML을 사용하여 다른 버킷에 버킷 복제

특정 복제 정책이 필요한 MCG(Multicloud Object Gateway) 데이터 버킷이 필요한 애플리케이션에서는 OBC(오브젝트 버킷 클레임)를 생성하고 spec.additionalConfig.replication-policy 매개변수를 OBC에 추가할 수 있습니다.

절차

  • 다음 YAML을 적용합니다.

    apiVersion: objectbucket.io/v1alpha1
    kind: ObjectBucketClaim
    metadata:
      name: <desired-bucket-claim>
      namespace: <desired-namespace>
    spec:
      generateBucketName: <desired-bucket-name>
      storageClassName: openshift-storage.noobaa.io
      additionalConfig:
        replication-policy: [{ "rule_id": "<rule id>", "destination_bucket": "first.bucket", "filter": {"prefix": "<object name prefix>"}}]
    <desired-bucket-claim>
    버킷 클레임의 이름을 지정합니다.
    <desired-namespace>
    네임스페이스를 지정합니다.
    <desired-bucket-name>
    버킷 이름의 접두사를 지정합니다.
    "rule_id"
    규칙의 ID 번호를 지정합니다(예: {"rule_id": "rule-1"} ).
    "destination_bucket"
    대상 버킷의 이름을 지정합니다(예: {"destination_bucket": "first.bucket"} ).
    "prefix"
    은 선택 사항입니다. 복제해야 하는 오브젝트 키의 접두사이며, 비어 있을 수도 있습니다(예: {"prefix": ""} ).

추가 정보

8.2. 버킷 클래스 복제 정책 설정

특정 버킷 클래스에서 생성된 모든 버킷에 자동으로 적용되는 복제 정책을 설정할 수 있습니다. 다음 두 가지 방법으로 이 작업을 수행할 수 있습니다.

8.2.1. MCG 명령줄 인터페이스를 사용하여 버킷 클래스 복제 정책 설정

특정 복제 정책이 필요한 Multicloud Object Gateway(MCG) 버킷 클래스가 필요한 애플리케이션은 버킷 클래스를 생성하고 JSON 파일에 replication-policy 매개 변수를 정의할 수 있습니다.

두 가지 유형의 버킷 클래스에 대해 버킷 클래스 복제 정책을 설정할 수 있습니다.

  • 배치
  • 네임스페이스

절차

  • MCG 명령줄 인터페이스에서 다음 명령을 실행합니다.

    noobaa -n openshift-storage bucketclass create placement-bucketclass <bucketclass-name> --backingstores <backingstores> --replication-policy=/path/to/json-file.json
    <bucketclass-name>
    버킷 클래스의 이름을 지정합니다.
    <BackingStores>
    백업 저장소의 이름을 지정합니다. 쉼표로 구분된 여러 백업 저장소를 전달할 수 있습니다.
    /path/to/json-file.json

    복제 정책을 정의하는 JSON 파일의 경로입니다.

    JSON 파일의 예:

    [{ "rule_id": "rule-1", "destination_bucket": "first.bucket", "filter": {"prefix": "repl"}}]
    "prefix"
    은 선택 사항입니다. 복제해야 하는 오브젝트 키의 접두사이며, 비어 있을 수도 있습니다(예: {"prefix": ""} ).

    예 8.2. 예제

    noobaa -n openshift-storage bucketclass create placement-bucketclass bc --backingstores azure-blob-ns --replication-policy=/path/to/json-file.json

    이 예제에서는 JSON 파일에 정의된 특정 복제 정책을 사용하여 배치 버킷 클래스를 생성합니다.

8.2.2. YAML을 사용하여 버킷 클래스 복제 정책 설정

특정 복제 정책이 필요한 Multicloud Object Gateway(MCG) 버킷 클래스가 필요한 애플리케이션은 spec.replicationPolicy 필드를 사용하여 버킷 클래스를 생성할 수 있습니다.

절차

  1. 다음 YAML을 적용합니다.

    apiVersion: noobaa.io/v1alpha1
    kind: BucketClass
    metadata:
      labels:
        app: <desired-app-label>
      name: <desired-bucketclass-name>
      namespace: <desired-namespace>
    spec:
      placementPolicy:
        tiers:
        - backingstores:
          - <backingstore>
          placement: Spread
      replicationPolicy: [{ "rule_id": "<rule id>", "destination_bucket": "first.bucket", "filter": {"prefix": "<object name prefix>"}}]

    이 YAML은 배치 버킷 클래스를 생성하는 예입니다. 버킷에 업로드된 각 Object 버킷 클레임(OBC) 오브젝트는 접두사를 기반으로 필터링되며 first.bucket.bucket에 복제됩니다.

    <desired-app-label>
    앱의 레이블을 지정합니다.
    <desired-bucketclass-name>
    버킷 클래스 이름을 지정합니다.
    <desired-namespace>
    버킷 클래스가 생성되는 네임스페이스를 지정합니다.
    <BackingStore>
    백업 저장소의 이름을 지정합니다. 여러 개의 백업 저장소를 전달할 수 있습니다.
    "rule_id"
    규칙의 ID 번호를 지정합니다(예: '{"rule_id": "rule-1"} ).
    "destination_bucket"
    대상 버킷의 이름을 지정합니다(예: {"destination_bucket": "first.bucket"} ).
    "prefix"
    은 선택 사항입니다. 복제해야 하는 오브젝트 키의 접두사이며, 비어 있을 수도 있습니다(예: {"prefix": ""} ).

9장. 오브젝트 버킷 클레임

오브젝트 버킷 클레임은 워크로드에 S3 호환 버킷 백엔드를 요청하는 데 사용할 수 있습니다.

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

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

9.1. 동적 오브젝트 버킷 클레임

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

절차

  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 application image> 를 애플리케이션 이미지로 바꿉니다.
  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>
오브젝트 버킷 클레임의 이름을 지정합니다.

9.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 끝점 정보가 포함되어 있습니다.

9.3. OpenShift 웹 콘솔을 사용하여 오브젝트 버킷 클레임 생성

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

사전 요구 사항

  • OpenShift 웹 콘솔에 대한 관리 액세스.
  • 애플리케이션에서 OBC와 통신하려면 구성 맵과 시크릿을 사용해야 합니다. 이에 대한 자세한 내용은 9.1절. “동적 오브젝트 버킷 클레임” 을 참조하십시오.

절차

  1. OpenShift 웹 콘솔에 로그인합니다.
  2. 왼쪽 탐색 모음에서 스토리지오브젝트 버킷 클레임 → 오브젝트 버킷 클레임 생성 을 클릭합니다.

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

      내부 모드
      오브젝트 버킷 클레임 마법사 생성

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

      • OCS-storagecluster-ceph-rgw 는 Ceph Object Gateway(RGW)를 사용합니다.
      • openshift-storage.nooba.io 는 MCG(Multicloud Object Gateway)를 사용합니다.
      외부 모드
      오브젝트 버킷 클레임 마법사 생성

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

      • OCS-external-storagecluster-ceph-rgw 는 RGW를 사용합니다.
      • openshift-storage.nooba.io 는 MCG를 사용합니다.

        참고

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

    2. 생성을 클릭합니다.

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

      오브젝트 버킷 클레임 세부 정보 페이지

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

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

사전 요구 사항

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

절차

  1. 왼쪽 탐색 모음에서 스토리지 → 오브젝트 버킷 클레임 을 클릭합니다.
  2. 생성한 OBC 옆에 있는 Action 메뉴 (octets) 를 클릭합니다.

    1. 드롭다운 메뉴에서 Attach to Deployment 를 선택합니다.

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

      배포 이름 목록

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

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

사전 요구 사항

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

절차

  1. OpenShift 웹 콘솔에 로그인합니다.
  2. 왼쪽 탐색 모음에서 스토리지 → 오브젝트 버킷을 클릭합니다.

    오브젝트 버킷 페이지

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

  3. 세부 정보를 표시하려는 오브젝트 버킷을 선택합니다. 오브젝트 버킷 세부 정보 페이지로 이동합니다.

9.6. 오브젝트 버킷 클레임 삭제

사전 요구 사항

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

절차

  1. 왼쪽 탐색 모음에서 스토리지 → 오브젝트 버킷 클레임 을 클릭합니다.
  2. 삭제하려는 OBC (오브젝트 버킷 클레임) 옆에 있는 Action 메뉴(octets)를 클릭합니다.

    배포에 MCG OBC 작업 메뉴 연결
    1. Delete Object Bucket Claim 을 선택합니다.
    2. 삭제를 클릭합니다.

10장. 오브젝트 버킷에 대한 캐싱 정책

캐시 버킷은 허브 대상과 캐시 대상이 있는 네임스페이스 버킷입니다. hub 대상은 S3 호환 큰 오브젝트 스토리지 버킷입니다. 캐시 버킷은 MCG(Local Multicloud Object Gateway) 버킷입니다. AWS 버킷 또는 IBM COS 버킷을 캐시하는 캐시 버킷을 생성할 수 있습니다.

10.1. AWS 캐시 버킷 생성

사전 요구 사항

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

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

    서브스크립션 관리자를 사용하여 리포지토리를 활성화하기 위해 적절한 아키텍처를 지정합니다. IBM Z 인프라의 경우 다음 명령을 사용합니다.

    # subscription-manager repos --enable=rh-odf-4-for-rhel-8-s390x-rpms

    또는 https://access.redhat.com/downloads/content/547/ver=4/rhel---8/4/x86_64/package 에 있는 OpenShift Data Foundation RPM에서 MCG 패키지를 설치할 수 있습니다.

    참고

    아키텍처에 따라 올바른 제품 변형을 선택합니다.

절차

  1. NamespaceStore 리소스를 생성합니다. NamespaceStore는 MCG 네임 스페이스 버킷의 데이터에 대한 읽기 또는 쓰기 대상으로 사용할 기본 스토리지를 나타냅니다. MCG 명령줄 인터페이스에서 다음 명령을 실행합니다.

    noobaa namespacestore create aws-s3 <namespacestore> --access-key <AWS ACCESS KEY> --secret-key <AWS SECRET ACCESS KEY> --target-bucket <bucket-name>
    1. <namespacestore> 를 namespacestore의 이름으로 바꿉니다.
    2. <AWS ACCESS KEY><AWS SECRET ACCESS KEY> 를 이를 위해 생성한 AWS 액세스 키 ID 및 시크릿 액세스 키로 바꿉니다.
    3. <bucket-name> 을 기존 AWS 버킷 이름으로 교체합니다. 이 인수는 MCG에 백업 저장소에 대한 대상 버킷으로 사용할 버킷을 알려주고 그 이후 데이터 스토리지 및 관리에 사용할 버킷을 알려줍니다.

      YAML을 적용하여 스토리지 리소스를 추가할 수도 있습니다. 먼저 인증 정보를 사용하여 보안을 생성합니다.

      apiVersion: v1
      kind: Secret
      metadata:
        name: <namespacestore-secret-name>
      type: Opaque
      data:
        AWS_ACCESS_KEY_ID: <AWS ACCESS KEY ID ENCODED IN BASE64>
        AWS_SECRET_ACCESS_KEY: <AWS SECRET ACCESS KEY ENCODED IN BASE64>

      Base64를 사용하여 자체 AWS 액세스 키 ID 및 시크릿 액세스 키를 제공하고 <AWS ACCESS KEY ID ENCODED IN BASE64><AWS SECRET ACCESS KEY ENCODED IN BASE64> BASE64>의 결과를 사용해야 합니다.

      <namespacestore-secret-name> 을 고유한 이름으로 교체합니다.

      다음 YAML을 적용합니다.

      apiVersion: noobaa.io/v1alpha1
      kind: NamespaceStore
      metadata:
        finalizers:
        - noobaa.io/finalizer
        labels:
          app: noobaa
        name: <namespacestore>
        namespace: openshift-storage
      spec:
        awsS3:
          secret:
            name: <namespacestore-secret-name>
            namespace: <namespace-secret>
          targetBucket: <target-bucket>
        type: aws-s3
    4. <namespacestore> 를 고유한 이름으로 교체합니다.
    5. <namespacestore-secret-name> 을 이전 단계에서 생성한 보안으로 교체합니다.
    6. <namespace-secret> 을 이전 단계에서 보안을 생성하는 데 사용되는 네임스페이스로 교체합니다.
    7. <target-bucket> 을 namespacestore에 대해 생성한 AWS S3 버킷으로 바꿉니다.
  2. 다음 명령을 실행하여 버킷 클래스를 생성합니다.

    noobaa bucketclass create namespace-bucketclass cache <my-cache-bucket-class> --backingstores <backing-store> --hub-resource <namespacestore>
    1. <my-cache-bucket-class> 를 고유한 버킷 클래스 이름으로 교체합니다.
    2. <backing-store> 를 관련 백업 저장소로 바꿉니다. 이 필드에서 쉼표로 구분된 백업 저장소를 하나 이상 나열할 수 있습니다.
    3. <namespacestore> 를 이전 단계에서 생성한 namespacestore로 바꿉니다.
  3. 다음 명령을 실행하여 2단계에서 정의된 버킷 클래스를 사용하는 OBC(오브젝트 버킷 클레임) 리소스를 사용하여 버킷을 생성합니다.

    noobaa obc create <my-bucket-claim> my-app --bucketclass <custom-bucket-class>
    1. <my-bucket-claim> 을 고유 이름으로 교체합니다.
    2. <custom-bucket-class> 를 2단계에서 생성된 버킷 클래스의 이름으로 바꿉니다.

10.2. IBM COS 캐시 버킷 생성

사전 요구 사항

  • 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

    또는 https://access.redhat.com/downloads/content/547/ver=4/rhel---8/4/x86_64/package 에 있는 OpenShift Data Foundation RPM에서 MCG 패키지를 설치할 수 있습니다.

    참고

    아키텍처에 따라 올바른 제품 변형을 선택합니다.

절차

  1. NamespaceStore 리소스를 생성합니다. NamespaceStore는 MCG 네임 스페이스 버킷의 데이터에 대한 읽기 또는 쓰기 대상으로 사용할 기본 스토리지를 나타냅니다. MCG 명령줄 인터페이스에서 다음 명령을 실행합니다.

    noobaa namespacestore create ibm-cos <namespacestore> --endpoint <IBM COS ENDPOINT> --access-key <IBM ACCESS KEY> --secret-key <IBM SECRET ACCESS KEY> --target-bucket <bucket-name>
    1. <namespacestore> 를 NamespaceStore의 이름으로 바꿉니다.
    2. <IBM ACCESS KEY>, <IBM SECRET ACCESS KEY>, <IBM COS ENDPOINT> 를 IBM 액세스 키 ID, 시크릿 액세스 키 및 기존 IBM 버킷의 위치에 해당하는 적절한 지역 끝점으로 바꿉니다.
    3. <bucket-name> 을 기존 IBM 버킷 이름으로 바꿉니다. 이 인수는 MCG에 백업 저장소에 대한 대상 버킷으로 사용할 버킷을 알려주고 그 이후 데이터 스토리지 및 관리에 사용할 버킷을 알려줍니다.

      YAML을 적용하여 스토리지 리소스를 추가할 수도 있습니다. 먼저 인증 정보를 사용하여 보안을 생성합니다.

      apiVersion: v1
      kind: Secret
      metadata:
        name: <namespacestore-secret-name>
      type: Opaque
      data:
        IBM_COS_ACCESS_KEY_ID: <IBM COS ACCESS KEY ID ENCODED IN BASE64>
        IBM_COS_SECRET_ACCESS_KEY: <IBM COS SECRET ACCESS KEY ENCODED IN BASE64>

      Base64를 사용하여 자체 IBM COS 액세스 키 ID 및 시크릿 액세스 키를 입력하고 인코딩해야 합니다. <IBM COS ACCESS KEY ID ENCODED IN BASE64><IBM COS ACCESS KEY ENCODED IN BASE64> ACCESS KEY

      <namespacestore-secret-name> 을 고유한 이름으로 교체합니다.

      다음 YAML을 적용합니다.

      apiVersion: noobaa.io/v1alpha1
      kind: NamespaceStore
      metadata:
        finalizers:
        - noobaa.io/finalizer
        labels:
          app: noobaa
        name: <namespacestore>
        namespace: openshift-storage
      spec:
        s3Compatible:
          endpoint: <IBM COS ENDPOINT>
          secret:
            name: <backingstore-secret-name>
            namespace: <namespace-secret>
          signatureVersion: v2
          targetBucket: <target-bucket>
        type: ibm-cos
    4. <namespacestore> 를 고유한 이름으로 교체합니다.
    5. <IBM COS ENDPOINT> 를 적절한 IBM COS 엔드포인트로 바꿉니다.
    6. <backingstore-secret-name> 을 이전 단계에서 생성한 보안으로 교체합니다.
    7. <namespace-secret> 을 이전 단계에서 보안을 생성하는 데 사용되는 네임스페이스로 교체합니다.
    8. <target-bucket> 을 namespacestore에 대해 생성한 AWS S3 버킷으로 바꿉니다.
  2. 다음 명령을 실행하여 버킷 클래스를 생성합니다.

    noobaa bucketclass create namespace-bucketclass cache <my-bucket-class> --backingstores <backing-store> --hubResource <namespacestore>
    1. <my-bucket-class> 를 고유한 버킷 클래스 이름으로 교체합니다.
    2. <backing-store> 를 관련 백업 저장소로 바꿉니다. 이 필드에서 쉼표로 구분된 백업 저장소를 하나 이상 나열할 수 있습니다.
    3. <namespacestore> 를 이전 단계에서 생성한 namespacestore로 바꿉니다.
  3. 다음 명령을 실행하여 2단계에서 정의된 버킷 클래스를 사용하는 Object Bucket Claim 리소스를 사용하여 버킷을 생성합니다.

    noobaa obc create <my-bucket-claim> my-app --bucketclass <custom-bucket-class>
    1. <my-bucket-claim> 을 고유 이름으로 교체합니다.
    2. <custom-bucket-class> 를 2단계에서 생성된 버킷 클래스의 이름으로 바꿉니다.

11장. 끝점을 추가하여 멀티 클라우드 오브젝트 게이트웨이 성능 확장

MCG(Multicloud Object Gateway) 성능은 환경에 따라 다를 수 있습니다. 경우에 따라 특정 애플리케이션에는 S3 끝점 스케일링을 통해 쉽게 해결할 수 있는 더 빠른 성능이 필요합니다.

MCG 리소스 풀은 기본적으로 활성화된 두 가지 유형의 서비스를 제공하는 NooBaa 데몬 컨테이너 그룹입니다.

  • 스토리지 서비스
  • S3 끝점 서비스

S3 끝점 서비스

S3 끝점은 MCG에서 높은 데이터 다이제스트를 처리하는 MCG(Multicloud Object Gateway)가 기본적으로 제공하는 서비스입니다. 엔드포인트 서비스는 인라인 데이터 청크, 중복 제거, 압축 및 암호화를 처리하고 MCG에서 데이터 배치 명령을 허용합니다.

11.1. MultiCloud Object Gateway 끝점 자동 스케일링

MCG(MultiCloud Object Gateway) 엔드포인트 수는 MCG S3 서비스의 부하가 증가하거나 감소할 때 자동으로 확장됩니다. OpenShift Data Foundation 클러스터는 하나의 활성 MCG 끝점과 함께 배포됩니다. 각 MCG 끝점 Pod는 기본적으로 요청과 일치하는 제한이 있는 1개의 CPU 및 2Gi 메모리 요청으로 구성됩니다. 끝점의 CPU 로드가 일관된 기간 동안 80% 이상의 사용 임계값을 초과하면 첫 번째 끝점에서 부하를 줄입니다. 두 끝점의 평균 CPU 부하가 일관된 기간 동안 80% 임계값 아래로 떨어지면 끝점 중 하나가 삭제됩니다. 이 기능을 사용하면 MCG의 성능 및 서비스 가능성이 향상됩니다.

11.2. 스토리지 노드를 사용하여 Multicloud Object Gateway 확장

사전 요구 사항

  • MCG(Multicloud Object Gateway)에 액세스할 수 있는 OpenShift Container Platform에서 실행 중인 OpenShift Data Foundation 클러스터입니다.

MCG의 스토리지 노드는 하나 이상의 PV(영구 볼륨)에 연결된 NooBaa 데몬 컨테이너이며 로컬 오브젝트 서비스 데이터 스토리지에 사용됩니다. NooBaa 데몬은 Kubernetes 노드에 배포할 수 있습니다. 이 작업은 StatefulSet Pod로 구성된 Kubernetes 풀을 생성하여 수행할 수 있습니다.

절차

  1. OpenShift 웹 콘솔에 로그인합니다.
  2. MCG 사용자 인터페이스에서 개요스토리지 리소스 추가 를 클릭합니다.
  3. 창에서 Kubernetes 풀 배포를 클릭합니다.
  4. Create Pool 단계에서 향후 설치된 노드에 대한 대상 풀을 생성합니다.
  5. Configure 단계에서 요청된 Pod 수 및 각 PV의 크기를 구성합니다. 새 포드마다 하나의 PV를 생성해야 합니다.
  6. 검토 단계에서는 새 풀의 세부 정보를 찾아 로컬 또는 외부 배포라는 배포 방법을 선택할 수 있습니다. 로컬 배포를 선택하면 Kubernetes 노드가 클러스터 내에 배포됩니다. 외부 배포를 선택하면 외부에서 실행할 YAML 파일이 제공됩니다.
  7. 모든 노드는 첫 번째 단계에서 선택한 풀에 할당되며 리소스 → 스토리지 리소스 → 리소스 이름에서 확인할 수 있습니다.

12장. RADOS 오브젝트 게이트웨이 S3 엔드 포인트 액세스

사용자는 RADOS Object Gateway(RGW) 엔드포인트에 직접 액세스할 수 있습니다.

사전 요구 사항

  • 실행 중인 OpenShift Data Foundation Platform

절차

  1. oc get service 명령을 실행하여 RGW 서비스 이름을 가져옵니다.

    $ oc get service -n openshift-storage
    
    NAME                                               TYPE      CLUSTER-IP     EXTERNAL-IP  PORT(S)        AGE
    
    (...)
    
    rook-ceph-rgw-ocs-storagecluster-cephobjectstore  ClusterIP  172.30.145.254   <none>   80/TCP,443/TCP   5d7h
    
    (...)
  2. oc expose 명령을 실행하여 RGW 서비스를 노출합니다.

    $ oc expose svc/<RGW service name> --hostname=<route name>
    1. <RGW-service name> 을 이전 단계의 RGW 서비스 이름으로 바꿉니다.
    2. <route name> 을 RGW 서비스를 위해 생성할 경로로 바꿉니다.

      예를 들면 다음과 같습니다.

      $ oc expose svc/rook-ceph-rgw-ocs-storagecluster-cephobjectstore --hostname=rook-ceph-rgw-ocs.ocp.host.example.com
  3. oc get route 명령을 실행하여 oc expose 가 성공했으며 RGW 경로가 있는지 확인합니다.

    $ oc get route -n openshift-storage

    출력 예:

    NAME                                               HOST/PORT                                PATH
    rook-ceph-rgw-ocs-storagecluster-cephobjectstore   rook-ceph-rgw-ocs.ocp.host.example.com
    
    SERVICES                                           PORT         TERMINATION   WILDCARD
    rook-ceph-rgw-ocs-storagecluster-cephobjectstore   http         <none>

검증

  • ENDPOINT 를 확인하려면 다음 명령을 실행합니다.

    aws s3 --no-verify-ssl --endpoint <ENDPOINT> ls

    <ENDPOINT> 를 3단계의 명령에서 얻은 경로로 바꿉니다.

    예를 들면 다음과 같습니다.

    $ aws s3 --no-verify-ssl --endpoint http://rook-ceph-rgw-ocs.ocp.host.example.com ls
중요

기본 사용자 ocs-storagecluster-cephobjectstoreuser 의 액세스 키 및 시크릿을 가져오려면 다음 명령을 실행합니다.

  • 액세스 키:

    $ oc get secret rook-ceph-object-user-ocs-storagecluster-cephobjectstore-ocs-storagecluster-cephobjectstoreuser -n openshift-storage -o yaml | grep -w "AccessKey:" | head -n1 | awk '{print $2}' | base64 --decode
  • Secret 키:

    $ oc get secret rook-ceph-object-user-ocs-storagecluster-cephobjectstore-ocs-storagecluster-cephobjectstoreuser -n openshift-storage -o yaml | grep -w "SecretKey:" | head -n1 | awk '{print $2}' | base64 --decode