11.4. 管理命名空间存储桶
命名空间存储桶可让您将不同提供程序上的数据存储库连接在一起,以便您可以通过统一视图与所有数据交互。将与各个提供程序关联的对象存储桶添加到命名空间存储桶,并通过命名空间存储桶访问您的数据,以一次性查看所有对象存储桶。这可让您在读取多个其他存储提供商的同时写入您首选的存储供应商,从而显著降低迁移至新存储提供商的成本。
您可以使用 S3 API 与命名空间存储桶中的对象交互。如需更多信息,请参阅命名空间存储桶中对象的 S3 API 端点。
只有其写入目标可用且可正常运行时,才能使用命名空间存储桶。
11.4.1. 命名空间存储桶中对象的 Amazon 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 参考文档。
11.4.2. 使用 Multicloud 对象网关 CLI 和 YAML 添加命名空间存储桶 复制链接链接已复制到粘贴板!
如需有关命名空间存储桶的更多信息,请参阅管理命名空间存储桶。
根据部署的类型以及是否使用 YAML 或 Multicloud 对象网关 CLI,选择以下流程之一来添加命名空间存储桶:
11.4.2.1. 使用 YAML 添加 AWS S3 命名空间存储桶 复制链接链接已复制到粘贴板!
先决条件
- 安装了带有 OpenShift Data Foundation operator 的 OpenShift Container Platform。
访问多云对象网关(MCG)。
如需更多信息,请参阅第 2 章,使用应用程序访问多云对象网关。
流程
使用凭证创建 secret:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 其中
<namespacestore-secret-name>
是一个唯一的 NamespaceStore 名称。您必须使用
Base64
提供并编码您自己的 AWS 访问密钥 ID 和 secret 访问密钥,并使用其结果替换<AWS ACCESS KEY ID ENCODED IN BASE64>
和<AWS SECRET ACCESS KEY ENCODED IN BASE64>
。使用 OpenShift 自定义资源定义(CRD)创建 NamespaceStore 资源。
NamespaceStore 代表底层存储,用作 MCG 命名空间存储桶中数据的
读取
或写入
目标。要创建 NamespaceStore 资源,请应用以下 YAML:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow <resource-name>
- 您要提供给资源的名称。
<namespacestore-secret-name>
- 上一步中创建的 secret。
<namespace-secret>
- 包括 secret 的命名空间。
<target-bucket>
- 为 NamespaceStore 创建的目标存储桶。
创建一个命名空间存储桶类,为命名空间存储桶定义命名空间策略。命名空间策略的类型需要是
single
或multi
。一个类型为
single
的命名空间策略需要以下配置:Copy to Clipboard Copied! Toggle word wrap Toggle overflow <my-bucket-class>
- 唯一的命名空间存储桶类名称。
<resource>
- 定义命名空间存储桶的读写目标的单个 NamespaceStore 的名称。
一个类型为
multi
的命名空间策略需要以下配置:Copy to Clipboard Copied! Toggle word wrap Toggle overflow <my-bucket-class>
- 唯一的存储桶类名称。
<write-resource>
-
定义命名空间存储桶
写入
目标的单个 NamespaceStore。 <read-resources>
-
定义命名空间存储桶的
读取
目标的 NamespaceStore 的名称列表。
使用以下 YAML 使用上一步中定义的存储桶类(OBC)资源,创建存储桶:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow <resource-name>
- 您要提供给资源的名称。
<my-bucket>
- 您要提供给存储桶的名称。
<my-bucket-class>
- 上一步中创建的 bucket 类。
在 Operator 置备 OBC 后,会在 MCG 中创建存储桶,Operator 会创建一个具有相同名称的 Secret
和 ConfigMap
,并在与 OBC 相同的命名空间中创建 Secret 和 ConfigMap。
11.4.2.2. 使用 YAML 添加 IBM COS 命名空间存储桶 复制链接链接已复制到粘贴板!
先决条件
- 安装了带有 OpenShift Data Foundation operator 的 OpenShift Container Platform。
- 访问多云对象网关(MCG),请参阅第 2 章,使用应用程序访问多云对象网关
流程
使用凭证创建 secret:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow <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>
。
使用 OpenShift 自定义资源定义(CRD)创建 NamespaceStore 资源。
NamespaceStore 代表底层存储,用作 MCG 命名空间存储桶中数据的
读取
或写入
目标。要创建 NamespaceStore 资源,请应用以下 YAML:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow <IBM COS ENDPOINT>
- 适当的 IBM COS 端点。
<namespacestore-secret-name>
- 上一步中创建的 secret。
<namespace-secret>
- 包括 secret 的命名空间。
<target-bucket>
- 为 NamespaceStore 创建的目标存储桶。
创建一个命名空间存储桶类,为命名空间存储桶定义命名空间策略。命名空间策略的类型需要是
single
或multi
。一个类型为
single
的命名空间策略需要以下配置:Copy to Clipboard Copied! Toggle word wrap Toggle overflow <my-bucket-class>
- 唯一的命名空间存储桶类名称。
<resource>
-
定义命名空间存储桶的
读
和写
目标的单个 NamespaceStore 的名称。
类型为
multi
的命名空间策略需要以下配置:Copy to Clipboard Copied! Toggle word wrap Toggle overflow <my-bucket-class>
- 唯一的存储桶类名称。
<write-resource>
- 定义命名空间存储桶写入目标的单个 NamespaceStore。
<read-resources>
-
NamespaceStores 名称列表,用于定义命名空间存储桶的
读取
目标。
要使用上一步中定义的 bucket 类的 Object Bucket Class (OBC) 资源创建存储桶,请应用以下 YAML:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow <resource-name>
- 您要提供给资源的名称。
<my-bucket>
- 您要提供给存储桶的名称。
<my-bucket-class>
上一步中创建的 bucket 类。
在 Operator 置备 OBC 后,会在 MCG 中创建存储桶,Operator 会创建一个具有相同名称的
Secret
和ConfigMap
,并在与 OBC 相同的命名空间中创建 Secret 和 ConfigMap。
11.4.2.3. 使用 Multicloud 对象网关 CLI 添加 AWS S3 命名空间存储桶 复制链接链接已复制到粘贴板!
先决条件
- 安装了带有 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
# subscription-manager repos --enable=rh-odf-4-for-rhel-8-x86_64-rpms
# yum install mcg
指定适当的架构,以使用订阅管理器启用存储库。例如,如果是 IBM Z,请使用以下命令:
subscription-manager repos --enable=rh-odf-4-for-rhel-8-s390x-rpms
# subscription-manager repos --enable=rh-odf-4-for-rhel-8-s390x-rpms
另外,您还可以从位于 https://access.redhat.com/downloads/content/547/ver=4/rhel---8/4/x86_64/package的 OpenShift Data Foundation RPM 安装 MCG 软件包。
根据您的架构选择正确的产品变体。
流程
在 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
$ 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 Copied! Toggle word wrap Toggle overflow <namespacestore>
- NamespaceStore 的名称。
<AWS ACCESS KEY>
和<AWS SECRET ACCESS KEY>
- 您创建的 AWS 访问密钥 ID 和 secret 访问密钥。
<bucket-name>
- 现有 AWS 存储桶名称。此参数告知 MCG 将哪一个存储桶用作其后备存储的目标存储桶,以及随后数据存储和管理。
<aws-region-name>
- AWS 存储桶区域。
创建一个命名空间存储桶类,为命名空间存储桶定义命名空间策略。命名空间策略可以是
single
或multi
。创建一个命名空间存储桶类,其命名空间策略类型为
single
:noobaa bucketclass create namespace-bucketclass single <my-bucket-class> --resource <resource> -n openshift-storage
$ noobaa bucketclass create namespace-bucketclass single <my-bucket-class> --resource <resource> -n openshift-storage
Copy to Clipboard Copied! Toggle word wrap Toggle overflow <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
$ noobaa bucketclass create namespace-bucketclass multi <my-bucket-class> --write-resource <write-resource> --read-resources <read-resources> -n openshift-storage
Copy to Clipboard Copied! Toggle word wrap Toggle overflow <resource-name>
- 要为资源指定名称。
<my-bucket-class>
- 唯一的存储桶类名称。
<write-resource>
-
定义命名空间存储桶的
写入
目标的单个 namespace-store。 <read-resources>s
-
命名空间存储列表,用逗号隔开,用于定义命名空间存储桶的
读取
目标。
使用上一步中定义的 bucket 类的对象 Bucket Class(OBC)资源创建存储桶。
noobaa obc create my-bucket-claim -n openshift-storage --app-namespace my-app --bucketclass <custom-bucket-class>
$ noobaa obc create my-bucket-claim -n openshift-storage --app-namespace my-app --bucketclass <custom-bucket-class>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow <bucket-name>
- 您选择的存储桶名称。
<custom-bucket-class>
- 上一步中创建的 bucket 类的名称。
在 Operator 置备 OBC 后,会在 MCG 中创建存储桶,Operator 会创建一个具有相同名称的
Secret
和ConfigMap
,并在与 OBC 相同的命名空间中创建 Secret 和 ConfigMap。
11.4.2.4. 使用 Multicloud 对象网关 CLI 添加 IBM COS 命名空间存储桶 复制链接链接已复制到粘贴板!
先决条件
- 安装了带有 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
# subscription-manager repos --enable=rh-odf-4-for-rhel-8-x86_64-rpms # yum install mcg
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意指定适当的架构,以使用订阅管理器启用存储库。
- 对于 IBM Power,使用以下命令:
subscription-manager repos --enable=rh-odf-4-for-rhel-8-ppc64le-rpms
# subscription-manager repos --enable=rh-odf-4-for-rhel-8-ppc64le-rpms
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 对于 IBM Z,使用以下命令:
subscription-manager repos --enable=rh-odf-4-for-rhel-8-s390x-rpms
# subscription-manager repos --enable=rh-odf-4-for-rhel-8-s390x-rpms
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 另外,您还可以从位于 https://access.redhat.com/downloads/content/547/ver=4/rhel---8/4/x86_64/package的 OpenShift Data Foundation RPM 安装 MCG 软件包。
注意根据您的架构选择正确的产品变体。
流程
在 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
$ 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 Copied! Toggle word wrap Toggle overflow <namespacestore>
- NamespaceStore 的名称。
<IBM ACCESS KEY>
,<IBM SECRET ACCESS KEY>
,<IBM COS ENDPOINT>
- IBM 访问密钥 ID、secret 访问密钥和适当的区域端点,对应于现有 IBM 存储桶的位置。
<bucket-name>
- 现有 IBM 存储桶名称。此参数告知 MCG 将哪一个存储桶用作其后备存储的目标存储桶,以及随后数据存储和管理。
创建一个命名空间存储桶类,为命名空间存储桶定义命名空间策略。命名空间策略的类型需要是
single
或multi
。创建一个命名空间存储桶类,其命名空间策略类型为
single
:noobaa bucketclass create namespace-bucketclass single <my-bucket-class> --resource <resource> -n openshift-storage
$ noobaa bucketclass create namespace-bucketclass single <my-bucket-class> --resource <resource> -n openshift-storage
Copy to Clipboard Copied! Toggle word wrap Toggle overflow <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
$ noobaa bucketclass create namespace-bucketclass multi <my-bucket-class> --write-resource <write-resource> --read-resources <read-resources> -n openshift-storage
Copy to Clipboard Copied! Toggle word wrap Toggle overflow <resource-name>
- 要为资源指定名称。
<my-bucket-class>
- 唯一的存储桶类名称。
<write-resource>
-
定义命名空间存储桶的
写入
目标的单个 namespace-store。 <read-resources>
-
以逗号分隔的 NamespaceStore 列表,用于定义命名空间存储桶的
读取
目标。
使用以前步骤中定义的 bucket 类的对象 Bucket Class(OBC)资源创建存储桶。
noobaa obc create my-bucket-claim -n openshift-storage --app-namespace my-app --bucketclass <custom-bucket-class>
$ noobaa obc create my-bucket-claim -n openshift-storage --app-namespace my-app --bucketclass <custom-bucket-class>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow <bucket-name>
- 您选择的存储桶名称。
<custom-bucket-class>
- 上一步中创建的 bucket 类的名称。
在 Operator 置备 OBC 后,会在 MCG 中创建存储桶,Operator 会创建一个具有相同名称的 Secret
和 ConfigMap
,并在与 OBC 相同的命名空间中创建 Secret 和 ConfigMap。
11.4.3. 使用 OpenShift Container Platform 用户界面添加命名空间存储桶 复制链接链接已复制到粘贴板!
您可以使用 OpenShift Container Platform 用户界面添加命名空间存储桶如需有关命名空间存储桶的信息,请参阅管理命名空间存储桶。
先决条件
- 确保已安装带有 OpenShift Data Foundation operator 的 Openshift Container Platform。
- 访问多云对象网关(MCG)。
流程
-
在 OpenShift Web 控制台中,进入到 Storage
Object Storage Namespace Store 选项卡。 单击 Create namespace store,以创建要在命名空间存储桶中使用的命名空间存储资源。
-
输入
命名空间存储
名称。 - 选择供应商和地区。
- 选择现有的 secret,或者点击 Swith to credentials 通过输入 secret key 和 secret access key 来创建 secret。
- 输入目标存储桶。
- 点 Create。
-
输入
-
在 Namespace Store 选项卡中,验证新创建的命名空间
存储
是否处于 Ready 状态。 - 重复步骤 2 和 3,直到您创建了所有必需的资源量。
导航到 Bucket Class 选项卡,再单击 Create Bucket Class。
-
选择
Namespace
BucketClass type 单选按钮。 - 输入 BucketClass 名称,然后点 Next。
为您的命名空间存储桶选择一个 Namespace Policy Type,然后点 Next。
- 如果您的命名空间策略类型是 Single,则需要选择一个读取资源。
- 如果您的命名空间策略类型是 Multi,则需要选择读取资源和写入资源。
- 如果命名空间策略类型是 Cache,则需要选择一个定义命名空间存储桶读取和写入目标的 Hub 命名空间存储。
- 选择一个 Read 和 Write NamespaceStore,用于定义命名空间存储桶的读取和写入目标,然后点 Next。
- 检查您的新 bucket 类详情,然后单击 Create Bucket Class。
-
选择
- 导航到 Bucket Class 选项卡,并验证新创建的资源是否处于 Ready 阶段。
导航到 Object Bucket Claims 选项卡,再点 Create Object Bucket Claim。
- 为命名空间存储桶输入 ObjectBucketClaim Name。
-
选择 StorageClass 作为
openshift-storage.noobaa.io
。 -
从列表中选择您之前为命名空间存储创建的 BucketClass。
默认情况下,选择
noobaa-default-bucket-class
。 - 点 Create。命名空间存储桶与您的命名空间的 Object Bucket Claim 一起创建。
- 导航到 Object Bucket Claims 选项卡,并验证创建的 Object Bucket Claim 是否处于 Bound 状态。
- 导航到 Object Buckets 选项卡,并验证您的命名空间存储桶是否存在于列表中,且处于 Bound 状态。