10.8. 对象 Bucket 声明
Object Bucket Claim 可以用来为您的工作负载请求 S3 兼容存储桶后端。
您可以通过三种方式创建对象 Bucket 声明:
对象 bucket 声明在 NooBaa 中创建一个新 bucket 和应用帐户,其具有存储桶的权限,包括新的 access key 和 secret access key。应用程序帐户仅允许访问单个存储桶,默认情况下无法创建新的存储桶。
10.8.1. 动态对象 Bucket 声明
与持久卷类似,您可以将 Object Bucket 声明(OBC)的详细信息添加到应用的 YAML 中,并获取配置映射和机密中可用的对象服务端点、访问密钥和 secret 访问密钥。可在应用程序的环境变量中动态阅读此信息。
只有在 OpenShift 使用自签名证书时,多云对象网关端点才会使用自签名证书。在 OpenShift 中使用签名证书自动将 Multicloud Object Gateway 端点证书替换为签名证书。通过浏览器访问端点,获取多云对象网关当前使用的证书。如需更多信息,请参阅使用应用程序访问多云对象网关。
流程
在应用程序 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。以下示例是存储桶声明结果之间的映射,这是一个带有凭证数据和 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>
的所有实例替换为您的 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
- 属于凭据的 Secret 访问密钥。
-
获取 AWS_ACCESS_KEY_ID
和 AWS_SECRET_ACCESS_KEY
。使用名称以便与 AWS S3 API 兼容。您需要在执行 S3 操作时指定密钥,特别是从多云对象网关(MCG)存储桶中读取、写入或列表时。密钥以 Base64 编码。解码密钥,然后才能使用它们。
# oc get secret <obc_name> -o yaml
<obc_name>
- 指定对象存储桶声明的名称。