11.4. 管理命名空间存储桶


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

您可以使用 S3 API 与命名空间存储桶中的对象交互。如需更多信息,请参阅命名空间存储桶中对象的 S3 API 端点

注意

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

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

确保为 Multicloud Object Gateway (MCG)提供的凭证可让您执行 AWS S3 命名空间存储桶操作。您可以使用 AWS 工具 aws-cli 验证所有操作是否可以在目标存储桶上执行。另外,使用这个 MCG 帐户的列表存储桶会显示目标存储桶。

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

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

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

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

11.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
          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。

11.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
          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> --region <aws-region-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 将哪一个存储桶用作其后备存储的目标存储桶,以及随后数据存储和管理。
    <aws-region-name>
    AWS 存储桶区域。
  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 控制台中,进入到 Storage Object Storage Namespace Store 选项卡。
  2. 单击 Create namespace store,以创建要在命名空间存储桶中使用的命名空间存储资源。

    1. 输入 命名空间存储 名称。
    2. 选择供应商和地区。
    3. 选择现有的 secret,或者点击 Swith to credentials 通过输入 secret key 和 secret access key 来创建 secret。
    4. 输入目标存储桶。
    5. Create
  3. 在 Namespace Store 选项卡中,验证新创建的命名空间 存储 是否处于 Ready 状态。
  4. 重复步骤 2 和 3,直到您创建了所有必需的资源量。
  5. 导航到 Bucket Class 选项卡,再单击 Create Bucket Class

    1. 选择 Namespace BucketClass type 单选按钮。
    2. 输入 BucketClass 名称,然后点 Next
    3. 为您的命名空间存储桶选择一个 Namespace Policy Type,然后点 Next

      • 如果您的命名空间策略类型是 Single,则需要选择一个读取资源。
      • 如果您的命名空间策略类型是 Multi,则需要选择读取资源和写入资源。
      • 如果命名空间策略类型是 Cache,则需要选择一个定义命名空间存储桶读取和写入目标的 Hub 命名空间存储。
    4. 选择一个 Read 和 Write NamespaceStore,用于定义命名空间存储桶的读取和写入目标,然后点 Next
    5. 检查您的新 bucket 类详情,然后单击 Create Bucket Class
  6. 导航到 Bucket Class 选项卡,并验证新创建的资源是否处于 Ready 阶段。
  7. 导航到 Object Bucket Claims 选项卡,再点 Create Object Bucket Claim

    1. 为命名空间存储桶输入 ObjectBucketClaim Name
    2. 选择 StorageClass 作为 openshift-storage.noobaa.io
    3. 从列表中选择您之前为命名空间存储创建的 BucketClass默认情况下,选择 noobaa-default-bucket-class
    4. Create。命名空间存储桶与您的命名空间的 Object Bucket Claim 一起创建。
  8. 导航到 Object Bucket Claims 选项卡,并验证创建的 Object Bucket Claim 是否处于 Bound 状态。
  9. 导航到 Object Buckets 选项卡,并验证您的命名空间存储桶是否存在于列表中,且处于 Bound 状态。
返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

Theme

© 2025 Red Hat