8.7. 对象 Bucket 声明
Object Bucket Claim 可以用来为您的工作负载请求 S3 兼容存储桶后端。
您可以通过三种方式创建对象 BucketClaim:
对象 bucket 声明在 NooBaa 中创建一个新 bucket 和应用帐户,其具有存储桶的权限,包括新的 access key 和 secret access key。应用程序帐户仅允许访问单个存储桶,默认情况下无法创建新的存储桶。
8.7.1. 动态对象 Bucket 声明
与持久卷类似,您可以将 Object Bucket 声明的详细信息添加到应用的 YAML 中,并获取配置映射和机密中可用的对象服务端点、访问密钥和 secret 访问密钥。可在应用程序的环境变量中动态阅读此信息。
流程
在应用程序 YAML 中添加以下行:
apiVersion: objectbucket.io/v1alpha1 kind: ObjectBucketClaim metadata: name: <obc-name> spec: generateBucketName: <obc-bucket-name> storageClassName: openshift-storage.noobaa.io
这些行是对象 Bucket 声明本身。
-
将
<obc-name>
替换为唯一的对象 Bucket Claim 名称。 -
将
<obc-bucket-name>
替换为 Object Bucket Claim 的唯一存储桶名称。
-
将
您可以在 YAML 文件中添加更多行来自动使用 Object Bucket Claim。以下示例是存储桶声明结果之间的映射,这是一个带有凭证数据和 secret 的配置映射。此特定作业将从 NooBaa 声明 Object Bucket,这将创建一个存储桶和帐户。
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> 的所有实例替换为您的对象 Bucket Claim 名称。
- 将 <your application image> 替换为您的应用程序镜像。
应用更新的 YAML 文件:
# oc apply -f <yaml.file>
-
将
<yaml.file>
替换为 YAML 文件的名称。
-
将
要查看新配置映射,请运行以下命令:
# oc get cm <obc-name>
将
obc-name
替换为对象 Bucket Claim 的名称。您可以在输出中预期以下环境变量:
-
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
- 属于凭据的 Secret 访问密钥
-