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