10.4. 管理命名空间存储桶


命名空间存储桶可让您将不同提供程序上的数据存储库连接在一起,以便您可以通过统一视图与所有数据交互。将与各个提供程序关联的对象存储桶添加到命名空间存储桶,并通过命名空间存储桶访问您的数据,以一次性查看所有对象存储桶。这可让您在读取多个其他存储提供商的同时写入您首选的存储供应商,从而显著降低迁移至新存储提供商的成本。

注意

只有其写入目标可用且可正常运行时,才能使用命名空间存储桶。

您可以使用 Amazon Simple Storage Service(S3) API 与命名空间存储桶中的对象交互。

Red Hat OpenShift Data Foundation 4.6 之后支持以下命名空间存储桶操作:

有关这些操作及其使用方法的最新信息,请参阅 Amazon S3 API 参考文档。

如需有关命名空间存储桶的更多信息,请参阅管理命名空间存储桶

根据部署的类型以及是否使用 YAML 或 Multicloud 对象网关 CLI,选择以下流程之一来添加命名空间存储桶:

10.4.2.1. 使用 YAML 添加 AWS S3 命名空间存储桶

先决条件

流程

  1. 使用凭证创建 secret:

    apiVersion: v1
    kind: Secret
    metadata:
      name: <namespacestore-secret-name>
      type: Opaque
    data:
      AWS_ACCESS_KEY_ID: <AWS ACCESS KEY ID ENCODED IN BASE64>
      AWS_SECRET_ACCESS_KEY: <AWS SECRET ACCESS KEY ENCODED IN BASE64>
    Copy to Clipboard Toggle word wrap

    其中 <namespacestore-secret-name> 是一个唯一的 NamespaceStore 名称。

    您必须使用 Base64 提供并编码您自己的 AWS 访问密钥 ID 和 secret 访问密钥,并使用其结果替换 <AWS ACCESS KEY ID ENCODED IN BASE64><AWS SECRET ACCESS KEY ENCODED IN BASE64>

  2. 使用 OpenShift 自定义资源定义(CRD)创建 NamespaceStore 资源。

    NamespaceStore 代表底层存储,用作 MCG 命名空间存储桶中数据的读取写入目标。

    要创建 NamespaceStore 资源,请应用以下 YAML:

    apiVersion: noobaa.io/v1alpha1
    kind: NamespaceStore
    metadata:
      finalizers:
      - noobaa.io/finalizer
      labels:
        app: noobaa
      name: <resource-name>
      namespace: openshift-storage
    spec:
      awsS3:
        secret:
          name: <namespacestore-secret-name>
          namespace: <namespace-secret>
        targetBucket: <target-bucket>
      type: aws-s3
    Copy to Clipboard Toggle word wrap
    <resource-name>
    您要提供给资源的名称。
    <namespacestore-secret-name>
    上一步中创建的 secret。
    <namespace-secret>
    包括 secret 的命名空间。
    <target-bucket>
    为 NamespaceStore 创建的目标存储桶。
  3. 创建一个命名空间存储桶类,为命名空间存储桶定义命名空间策略。命名空间策略的类型需要是 singlemulti

    • 一个类型为 single 的命名空间策略需要以下配置:

      apiVersion: noobaa.io/v1alpha1
      kind: BucketClass
      metadata:
        labels:
          app: noobaa
        name: <my-bucket-class>
        namespace: openshift-storage
      spec:
        namespacePolicy:
          type:
          single:
            resource: <resource>
      Copy to Clipboard Toggle word wrap
      <my-bucket-class>
      唯一的命名空间存储桶类名称。
      <resource>
      定义命名空间存储桶的读写目标的单个 NamespaceStore 的名称。
    • 一个类型为 multi 的命名空间策略需要以下配置:

      apiVersion: noobaa.io/v1alpha1
      
      kind: BucketClass
      metadata:
        labels:
          app: noobaa
        name: <my-bucket-class>
        namespace: openshift-storage
      spec:
        namespacePolicy:
          type: Multi
          multi:
            writeResource: <write-resource>
            readResources:
            - <read-resources>
            - <read-resources>
      Copy to Clipboard Toggle word wrap
      <my-bucket-class>
      唯一的存储桶类名称。
      <write-resource>
      定义命名空间存储桶 写入 目标的单个 NamespaceStore。
      <read-resources>
      定义命名空间存储桶的读取目标的 NamespaceStore 的名称列表。
  4. 使用以下 YAML 使用上一步中定义的存储桶类(OBC)资源,创建存储桶:

    apiVersion: objectbucket.io/v1alpha1
    kind: ObjectBucketClaim
    metadata:
      name: <resource-name>
      namespace: openshift-storage
    spec:
      generateBucketName: <my-bucket>
      storageClassName: openshift-storage.noobaa.io
      additionalConfig:
        bucketclass: <my-bucket-class>
    Copy to Clipboard Toggle word wrap
    <resource-name>
    您要提供给资源的名称。
    <my-bucket>
    您要提供给存储桶的名称。
    <my-bucket-class>
    上一步中创建的 bucket 类。

在 Operator 置备 OBC 后,会在 MCG 中创建存储桶,Operator 会创建一个具有相同名称的 SecretConfigMap,并在与 OBC 相同的命名空间中创建 Secret 和 ConfigMap。

10.4.2.2. 使用 YAML 添加 IBM COS 命名空间存储桶

先决条件

流程

  1. 使用凭证创建 secret:

    apiVersion: v1
    kind: Secret
    metadata:
      name: <namespacestore-secret-name>
      type: Opaque
    data:
      IBM_COS_ACCESS_KEY_ID: <IBM COS ACCESS KEY ID ENCODED IN BASE64>
      IBM_COS_SECRET_ACCESS_KEY: <IBM COS SECRET ACCESS KEY ENCODED IN BASE64>
    Copy to Clipboard Toggle word wrap
    <namespacestore-secret-name>

    唯一的 NamespaceStore 名称。

    您必须使用 Base64 提供和编码您自己的 IBM COS 访问密钥 ID 和 secret 访问密钥,并使用其结果替代 <IBM COS ACCESS KEY ID ENCODED IN BASE64><IBM COS SECRET ACCESS KEY ENCODED IN BASE64>

  2. 使用 OpenShift 自定义资源定义(CRD)创建 NamespaceStore 资源。

    NamespaceStore 代表底层存储,用作 MCG 命名空间存储桶中数据的读取写入目标。

    要创建 NamespaceStore 资源,请应用以下 YAML:

    apiVersion: noobaa.io/v1alpha1
    kind: NamespaceStore
    metadata:
      finalizers:
      - noobaa.io/finalizer
      labels:
        app: noobaa
      name: bs
      namespace: openshift-storage
    spec:
      s3Compatible:
        endpoint: <IBM COS ENDPOINT>
        secret:
          name: <namespacestore-secret-name>
          namespace: <namespace-secret>
        signatureVersion: v2
        targetBucket: <target-bucket>
      type: ibm-cos
    Copy to Clipboard Toggle word wrap
    <IBM COS ENDPOINT>
    适当的 IBM COS 端点。
    <namespacestore-secret-name>
    上一步中创建的 secret。
    <namespace-secret>
    包括 secret 的命名空间。
    <target-bucket>
    为 NamespaceStore 创建的目标存储桶。
  3. 创建一个命名空间存储桶类,为命名空间存储桶定义命名空间策略。命名空间策略的类型需要是 singlemulti

    • 一个类型为 single 的命名空间策略需要以下配置:

      apiVersion: noobaa.io/v1alpha1
      kind: BucketClass
      metadata:
        labels:
          app: noobaa
        name: <my-bucket-class>
        namespace: openshift-storage
      spec:
        namespacePolicy:
          type:
          single:
            resource: <resource>
      Copy to Clipboard Toggle word wrap
      <my-bucket-class>
      唯一的命名空间存储桶类名称。
      <resource>
      定义命名空间存储桶的目标的单个 NamespaceStore 的名称。
    • 类型为 multi 的命名空间策略需要以下配置:

      apiVersion: noobaa.io/v1alpha1
      kind: BucketClass
      metadata:
        labels:
          app: noobaa
        name: <my-bucket-class>
        namespace: openshift-storage
      spec:
        namespacePolicy:
          type: Multi
          multi:
            writeResource: <write-resource>
            readResources:
            - <read-resources>
            - <read-resources>
      Copy to Clipboard Toggle word wrap
      <my-bucket-class>
      唯一的存储桶类名称。
      <write-resource>
      定义命名空间存储桶写入目标的单个 NamespaceStore。
      <read-resources>
      NamespaceStores 名称列表,用于定义命名空间存储桶的读取目标。
  4. 要使用上一步中定义的 bucket 类的 Object Bucket Class (OBC) 资源创建存储桶,请应用以下 YAML:

    apiVersion: objectbucket.io/v1alpha1
    kind: ObjectBucketClaim
    metadata:
      name: <resource-name>
      namespace: openshift-storage
    spec:
      generateBucketName: <my-bucket>
      storageClassName: openshift-storage.noobaa.io
      additionalConfig:
        bucketclass: <my-bucket-class>
    Copy to Clipboard Toggle word wrap
    <resource-name>
    您要提供给资源的名称。
    <my-bucket>
    您要提供给存储桶的名称。
    <my-bucket-class>

    上一步中创建的 bucket 类。

    在 Operator 置备 OBC 后,会在 MCG 中创建存储桶,Operator 会创建一个具有相同名称的 SecretConfigMap,并在与 OBC 相同的命名空间中创建 Secret 和 ConfigMap。

先决条件

  • 安装了带有 OpenShift Data Foundation operator 的 OpenShift Container Platform。
  • 访问多云对象网关(MCG),请参阅第 2 章,使用应用程序访问多云对象网关
  • 下载 MCG 命令行界面:
# subscription-manager repos --enable=rh-odf-4-for-rhel-8-x86_64-rpms
# yum install mcg
Copy to Clipboard Toggle word wrap
注意

指定适当的架构,以使用订阅管理器启用存储库。例如,如果是 IBM Z 基础架构,请使用以下命令:

# subscription-manager repos --enable=rh-odf-4-for-rhel-8-s390x-rpms
Copy to Clipboard Toggle word wrap

另外,您还可以从位于 https://access.redhat.com/downloads/content/547/ver=4/rhel---8/4/x86_64/package的 OpenShift Data Foundation RPM 安装 MCG 软件包。

注意

根据您的架构选择正确的产品变体。

流程

  1. 在 MCG 命令行界面中,创建一个 NamespaceStore 资源。

    NamespaceStore 代表底层存储,用作 MCG 命名空间存储桶中数据的读取写入目标。

    $ noobaa namespacestore create aws-s3 <namespacestore> --access-key <AWS ACCESS KEY> --secret-key <AWS SECRET ACCESS KEY> --target-bucket <bucket-name> -n openshift-storage
    Copy to Clipboard Toggle word wrap
    <namespacestore>
    NamespaceStore 的名称。
    <AWS ACCESS KEY><AWS SECRET ACCESS KEY>
    您创建的 AWS 访问密钥 ID 和 secret 访问密钥。
    <bucket-name>
    现有 AWS 存储桶名称。此参数告知 MCG 将哪一个存储桶用作其后备存储的目标存储桶,以及随后数据存储和管理。
  2. 创建一个命名空间存储桶类,为命名空间存储桶定义命名空间策略。命名空间策略可以是 singlemulti

    • 创建一个命名空间存储桶类,其命名空间策略类型为 single

      $ noobaa bucketclass create namespace-bucketclass single <my-bucket-class> --resource <resource> -n openshift-storage
      Copy to Clipboard Toggle word wrap
      <resource-name>
      要为资源指定名称。
      <my-bucket-class>
      唯一的存储桶类名称。
      <resource>
      定义命名空间存储桶的目标的单个 NamespaceStore 的名称。
    • 创建一个命名空间存储桶类,其命名空间策略类型为 multi

      $ noobaa bucketclass create namespace-bucketclass multi <my-bucket-class> --write-resource <write-resource> --read-resources <read-resources> -n openshift-storage
      Copy to Clipboard Toggle word wrap
      <resource-name>
      要为资源指定名称。
      <my-bucket-class>
      唯一的存储桶类名称。
      <write-resource>
      定义命名空间存储桶的写入目标的单个 namespace-store。
      <read-resources>s
      命名空间存储列表,用逗号隔开,用于定义命名空间存储桶的读取目标。
  3. 使用上一步中定义的 bucket 类的对象 Bucket Class(OBC)资源创建存储桶。

    $ noobaa obc create my-bucket-claim -n openshift-storage --app-namespace my-app --bucketclass <custom-bucket-class>
    Copy to Clipboard Toggle word wrap
    <bucket-name>
    您选择的存储桶名称。
    <custom-bucket-class>
    上一步中创建的 bucket 类的名称。

    在 Operator 置备 OBC 后,会在 MCG 中创建存储桶,Operator 会创建一个具有相同名称的 SecretConfigMap,并在与 OBC 相同的命名空间中创建 Secret 和 ConfigMap。

先决条件

  • 安装了带有 OpenShift Data Foundation operator 的 OpenShift Container Platform。
  • 访问多云对象网关(MCG),请参阅第 2 章,使用应用程序访问多云对象网关
  • 下载 MCG 命令行界面:

    # subscription-manager repos --enable=rh-odf-4-for-rhel-8-x86_64-rpms
    # yum install mcg
    Copy to Clipboard Toggle word wrap
    注意

    指定适当的架构,以使用订阅管理器启用存储库。

    • 对于 IBM Power,使用以下命令:
    # subscription-manager repos --enable=rh-odf-4-for-rhel-8-ppc64le-rpms
    Copy to Clipboard Toggle word wrap
    • 对于 IBM Z 基础架构,使用以下命令:
    # subscription-manager repos --enable=rh-odf-4-for-rhel-8-s390x-rpms
    Copy to Clipboard Toggle word wrap

    另外,您还可以从位于 https://access.redhat.com/downloads/content/547/ver=4/rhel---8/4/x86_64/package的 OpenShift Data Foundation RPM 安装 MCG 软件包。

    注意

    根据您的架构选择正确的产品变体。

流程

  1. 在 MCG 命令行界面中,创建一个 NamespaceStore 资源。

    NamespaceStore 代表底层存储,用作 MCG 命名空间存储桶中数据的读取写入目标。

    $ noobaa namespacestore create ibm-cos <namespacestore> --endpoint <IBM COS ENDPOINT> --access-key <IBM ACCESS KEY> --secret-key <IBM SECRET ACCESS KEY> --target-bucket <bucket-name> -n openshift-storage
    Copy to Clipboard Toggle word wrap
    <namespacestore>
    NamespaceStore 的名称。
    <IBM ACCESS KEY>, <IBM SECRET ACCESS KEY>, <IBM COS ENDPOINT>
    IBM 访问密钥 ID、secret 访问密钥和适当的区域端点,对应于现有 IBM 存储桶的位置。
    <bucket-name>
    现有 IBM 存储桶名称。此参数告知 MCG 将哪一个存储桶用作其后备存储的目标存储桶,以及随后数据存储和管理。
  2. 创建一个命名空间存储桶类,为命名空间存储桶定义命名空间策略。命名空间策略的类型需要是 singlemulti

    • 创建一个命名空间存储桶类,其命名空间策略类型为 single

      $ noobaa bucketclass create namespace-bucketclass single <my-bucket-class> --resource <resource> -n openshift-storage
      Copy to Clipboard Toggle word wrap
      <resource-name>
      要为资源指定名称。
      <my-bucket-class>
      唯一的存储桶类名称。
      <resource>
      定义命名空间存储桶的目标的单个 NamespaceStore 的名称。
    • 创建一个命名空间存储桶类,其命名空间策略类型为 multi

      $ noobaa bucketclass create namespace-bucketclass multi <my-bucket-class> --write-resource <write-resource> --read-resources <read-resources> -n openshift-storage
      Copy to Clipboard Toggle word wrap
      <resource-name>
      要为资源指定名称。
      <my-bucket-class>
      唯一的存储桶类名称。
      <write-resource>
      定义命名空间存储桶的写入目标的单个 namespace-store。
      <read-resources>
      以逗号分隔的 NamespaceStore 列表,用于定义命名空间存储桶的读取目标。
  3. 使用以前步骤中定义的 bucket 类的对象 Bucket Class(OBC)资源创建存储桶。

    $ noobaa obc create my-bucket-claim -n openshift-storage --app-namespace my-app --bucketclass <custom-bucket-class>
    Copy to Clipboard Toggle word wrap
    <bucket-name>
    您选择的存储桶名称。
    <custom-bucket-class>
    上一步中创建的 bucket 类的名称。

在 Operator 置备 OBC 后,会在 MCG 中创建存储桶,Operator 会创建一个具有相同名称的 SecretConfigMap,并在与 OBC 相同的命名空间中创建 Secret 和 ConfigMap。

您可以使用 OpenShift Container Platform 用户界面添加命名空间存储桶如需有关命名空间存储桶的更多信息,请参阅管理命名空间存储桶

先决条件

  • 安装了带有 OpenShift Data Foundation operator 的 OpenShift Container Platform。
  • 访问多云对象网关(MCG)。

流程

  1. 登录 OpenShift Web 控制台。
  2. Storage Data Foundation
  3. Namespace Store 选项卡创建要在命名空间存储桶中使用的 namespacestore 资源。

    1. 单击 Create namespace store
    2. 输入命名空间存储名称。
    3. 选择一个供应商。
    4. 选择一个地区。
    5. 选择现有的 secret,或者点击 Swith to credentials 通过输入 secret key 和 secret access key 来创建 secret。
    6. 选择目标存储桶。
    7. Create
    8. 验证 namespacestore 是否处于 Ready 状态。
    9. 重复这些步骤,直到您拥有所需的资源量。
  4. 点击 Bucket Class 选项卡 Create a new Bucket Class

    1. 选择 Namespace 单选按钮。
    2. 输入 Bucket 类名称。
    3. (可选)添加描述。
    4. Next
  5. 为您的命名空间存储桶选择一个命名空间策略类型,然后单击 Next
  6. 选择目标资源。

    • 如果您的命名空间策略类型是 Single,则需要选择一个读取资源。
    • 如果您的命名空间策略类型是 Multi,则需要选择读取资源和写入资源。
    • 如果命名空间策略类型是 Cache,则需要选择一个定义命名空间存储桶读取和写入目标的 Hub 命名空间存储。
  7. Next
  8. 检查您的新 bucket 类,然后点击 Create Bucketclass
  9. BucketClass 页面中,验证新创建的资源是否处于 Created 阶段。
  10. 在 OpenShift Web 控制台中,点 Storage Data Foundation
  11. Status 卡中,单击 Storage System,再单击弹出窗口中的 storage 系统链接。
  12. Object 选项卡中,点 Multicloud Object Gateway Buckets Namespace Buckets 选项卡。
  13. Create Namespace Bucket

    1. Choose Name 选项卡中,为命名空间存储桶指定一个名称,然后点 Next
    2. Set Placement 标签页中:

      1. Read Policy 下,选择在上一步中创建的每个命名空间资源的复选框,命名空间存储桶应该从中读取数据。
      2. 如果您使用的命名空间策略类型是 Multi,在 Write Policy 下指定要将数据写入的命名空间资源。
      3. Next
    3. Create

验证步骤

  • 验证命名空间存储桶是否在 State 列中带有绿色勾号、预期的读取资源和预期的写入资源名称。
返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2025 Red Hat