第 8 章 对象 Bucket 声明

Object Bucket Claim 可以用来为您的工作负载请求 S3 兼容存储桶后端。

您可以通过三种方式创建对象 BucketClaim:

对象 bucket 声明在 NooBaa 中创建一个新 bucket 和应用帐户,其具有存储桶的权限,包括新的 access key 和 secret access key。应用程序帐户仅允许访问单个存储桶,默认情况下无法创建新的存储桶。

8.1. 动态对象 Bucket 声明

与持久卷类似,您可以将 Object Bucket 声明的详细信息添加到应用的 YAML 中,并获取配置映射和机密中可用的对象服务端点、访问密钥和 secret 访问密钥。可在应用程序的环境变量中动态阅读此信息。

流程

  1. 在应用程序 YAML 中添加以下行:

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

    这些行是对象 Bucket 声明本身。

    1. <obc-name> 替换为唯一的对象 Bucket Claim 名称。
    2. <obc-bucket-name> 替换为 Object Bucket Claim 的唯一存储桶名称。
  2. 您可以在 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
    1. 将 <obc-name> 的所有实例替换为您的对象 Bucket Claim 名称。
    2. 将 <your 应用程序 image> 替换为您的应用程序镜像。
  3. 应用更新的 YAML 文件:

    # oc apply -f <yaml.file>
    1. <yaml.file> 替换为 YAML 文件的名称。
  4. 要查看新配置映射,请运行以下命令:

    # oc get cm <obc-name>
    1. obc-name 替换为对象 Bucket Claim 的名称。

      您可以在输出中预期以下环境变量:

      • BUCKET_HOST - 要在应用程序中使用的端点
      • BUCKET_PORT - 应用程序可用的端口

      • BUCKET_NAME - 请求或生成的存储桶名称
      • AWS_ACCESS_KEY_ID - 作为凭据一部分的访问密钥
      • aws_SECRET_ACCESS_KEY - 属于凭据的 Secret 访问密钥