9장. 오브젝트 버킷 클레임
오브젝트 버킷 클레임은 워크로드에 S3 호환 버킷 백엔드를 요청하는 데 사용할 수 있습니다.
다음과 같은 세 가지 방법으로 오브젝트 버킷 클레임을 생성할 수 있습니다.
오브젝트 버킷 클레임은 새 액세스 키 및 시크릿 액세스 키를 포함하여 버킷에 대한 권한이 있는 NooBaa에서 새 버킷과 애플리케이션 계정을 생성합니다. 애플리케이션 계정은 단일 버킷에만 액세스할 수 있으며 기본적으로 새 버킷을 생성할 수 없습니다.
9.1. 동적 오브젝트 버킷 클레임
영구 볼륨과 유사하게 애플리케이션의 YAML에 OBC(오브젝트 버킷 클레임)의 세부 정보를 추가하고 오브젝트 서비스 끝점, 액세스 키, 구성 맵 및 시크릿 액세스 키를 가져올 수 있습니다. 이 정보를 동적으로 애플리케이션의 환경 변수로 읽을 수 있습니다.
절차
애플리케이션 YAML에 다음 행을 추가합니다.
apiVersion: objectbucket.io/v1alpha1 kind: ObjectBucketClaim metadata: name: <obc-name> spec: generateBucketName: <obc-bucket-name> storageClassName: openshift-storage.noobaa.io
이 라인은 OBC 자체입니다.
-
<obc-name>
을 고유한 OBC 이름으로 바꿉니다. -
<obc-bucket-name>
을 OBC의 고유한 버킷 이름으로 바꿉니다.
-
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
-
<obc-name>
의 모든 인스턴스를 OBC 이름으로 바꿉니다. -
<your application image>
를 애플리케이션 이미지로 바꿉니다.
-
업데이트된 YAML 파일을 적용합니다.
# oc apply -f <yaml.file>
<yaml.file>
을 YAML 파일의 이름으로 바꿉니다.새 구성 맵을 보려면 다음을 실행합니다.
# oc get cm <obc-name> -o yaml
obc-name
을 OBC의 이름으로 바꿉니다.출력에서 다음 환경 변수를 기대할 수 있습니다.
-
BUCKET_HOST
- 애플리케이션에서 사용할 끝점입니다. BUCKET_PORT
- 애플리케이션에 사용 가능한 포트입니다.-
포트는
BUCKET_HOST
와 관련이 있습니다. 예를 들어BUCKET_HOST
가 https://my.example.com 이고BUCKET_PORT
가 443이면 오브젝트 서비스의 끝점이 https://my.example.com:443 여야 합니다.
-
포트는
-
BUCKET_NAME
- 요청되거나 생성된 버킷 이름입니다. -
AWS_ACCESS_KEY_ID
- 인증 정보의 일부인 액세스 키입니다. -
AWS_SECRET_ACCESS_KEY
- 인증 정보의 일부인 보안 액세스 키입니다.
-
AWS_ACCESS_KEY_ID
및 AWS_SECRET_ACCESS_KEY
를 검색합니다. 이름은 AWS S3 API와 호환되도록 사용됩니다. 특히 MCG(Multicloud Object Gateway) 버킷에서 S3 작업을 수행하는 동안 키를 지정해야 합니다. 키는 Base64로 인코딩됩니다. 키를 사용하기 전에 디코딩합니다.
# oc get secret <obc_name> -o yaml
<obc_name>
- 오브젝트 버킷 클레임의 이름을 지정합니다.