9.8. 개체 버킷 클레임

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

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

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

9.8.1. 동적 개체 버킷 클레임

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

절차

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

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

    이러한 행은 개체 버킷 클레임 자체입니다.

    1. <obc-name> 을 고유한 개체 버킷 클레임 이름으로 바꿉니다.
    2. <obc-bucket-name> 을 개체 버킷 클레임의 고유한 버킷 이름으로 바꿉니다.
  2. YAML 파일에 더 많은 줄을 추가하여 개체 버킷 클레임의 사용을 자동화할 수 있습니다. 아래 예제는 데이터를 사용한 구성 맵과 인증 정보가 있는 시크릿인 버킷 클레임 결과 간의 매핑입니다. 이 특정 작업은 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>의 모든 인스턴스를 오브젝트 버킷 클레임 이름으로 바꿉니다.
    2. <your 애플리케이션 이미지>를 애플리케이션 이미지로 바꿉니다.
  3. 업데이트된 YAML 파일을 적용합니다.

    # oc apply -f <yaml.file>
    1. <yaml.file> 을 YAML 파일의 이름으로 바꿉니다.
  4. 새 구성 맵을 보려면 다음을 실행합니다.

    # oc get cm <obc-name>
    1. obc-name 을 개체 버킷 클레임의 이름으로 바꿉니다.

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

      • 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>
오브젝트 버킷 클레임의 이름을 지정합니다.