10.4. 管理命名空间存储桶
命名空间存储桶可让您将不同提供程序上的数据存储库连接在一起,以便您可以通过统一视图与所有数据交互。将与各个提供程序关联的对象存储桶添加到命名空间存储桶,并通过命名空间存储桶访问您的数据,以一次性查看所有对象存储桶。这可让您在读取多个其他存储提供商的同时写入您首选的存储供应商,从而显著降低迁移至新存储提供商的成本。
只有其写入目标可用且可正常运行时,才能使用命名空间存储桶。
10.4.1. 命名空间存储桶中对象的 Amazon S3 API 端点 复制链接链接已复制到粘贴板!
您可以使用 Amazon Simple Storage Service(S3) API 与命名空间存储桶中的对象交互。
Red Hat OpenShift Data Foundation 4.6 之后支持以下命名空间存储桶操作:
有关这些操作及其使用方法的最新信息,请参阅 Amazon S3 API 参考文档。
10.4.2. 使用 Multicloud 对象网关 CLI 和 YAML 添加命名空间存储桶 复制链接链接已复制到粘贴板!
如需有关命名空间存储桶的更多信息,请参阅管理命名空间存储桶。
根据部署的类型以及是否使用 YAML 或 Multicloud 对象网关 CLI,选择以下流程之一来添加命名空间存储桶:
10.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。
10.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。
10.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> -n openshift-storage
$ noobaa namespacestore create aws-s3 <namespacestore> --access-key <AWS ACCESS KEY> --secret-key <AWS SECRET ACCESS KEY> --target-bucket <bucket-name> -n openshift-storageCopy to Clipboard Copied! Toggle word wrap Toggle overflow <namespacestore>- NamespaceStore 的名称。
<AWS ACCESS KEY>和<AWS SECRET ACCESS KEY>- 您创建的 AWS 访问密钥 ID 和 secret 访问密钥。
<bucket-name>- 现有 AWS 存储桶名称。此参数告知 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-storageCopy 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-storageCopy 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。
10.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 mcgCopy 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-rpmsCopy 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-rpmsCopy 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-storageCopy 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-storageCopy 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-storageCopy 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。
10.4.3. 使用 OpenShift Container Platform 用户界面添加命名空间存储桶 复制链接链接已复制到粘贴板!
您可以使用 OpenShift Container Platform 用户界面添加命名空间存储桶如需有关命名空间存储桶的更多信息,请参阅管理命名空间存储桶。
先决条件
- 安装了带有 OpenShift Data Foundation operator 的 OpenShift Container Platform。
- 访问多云对象网关(MCG)。
流程
- 登录 OpenShift Web 控制台。
-
点 Storage
Data Foundation。 点 Namespace Store 选项卡创建要在命名空间存储桶中使用的
namespacestore资源。- 单击 Create namespace store。
- 输入命名空间存储名称。
- 选择一个供应商。
- 选择一个地区。
- 选择现有的 secret,或者点击 Swith to credentials 通过输入 secret key 和 secret access key 来创建 secret。
- 选择目标存储桶。
- 点 Create。
- 验证 namespacestore 是否处于 Ready 状态。
- 重复这些步骤,直到您拥有所需的资源量。
点击 Bucket Class 选项卡
Create a new Bucket Class。 - 选择 Namespace 单选按钮。
- 输入 Bucket 类名称。
- (可选)添加描述。
- 点 Next。
- 为您的命名空间存储桶选择一个命名空间策略类型,然后单击 Next。
选择目标资源。
- 如果您的命名空间策略类型是 Single,则需要选择一个读取资源。
- 如果您的命名空间策略类型是 Multi,则需要选择读取资源和写入资源。
- 如果命名空间策略类型是 Cache,则需要选择一个定义命名空间存储桶读取和写入目标的 Hub 命名空间存储。
- 点 Next。
- 检查您的新 bucket 类,然后点击 Create Bucketclass。
- 在 BucketClass 页面中,验证新创建的资源是否处于 Created 阶段。
-
在 OpenShift Web 控制台中,点 Storage
Data Foundation。 - 在 Status 卡中,单击 Storage System,再单击弹出窗口中的 storage 系统链接。
-
在 Object 选项卡中,点 Multicloud Object Gateway
Buckets Namespace Buckets 选项卡。 点 Create Namespace Bucket。
- 在 Choose Name 选项卡中,为命名空间存储桶指定一个名称,然后点 Next。
在 Set Placement 标签页中:
- 在 Read Policy 下,选择在上一步中创建的每个命名空间资源的复选框,命名空间存储桶应该从中读取数据。
- 如果您使用的命名空间策略类型是 Multi,在 Write Policy 下指定要将数据写入的命名空间资源。
- 点 Next。
- 点 Create。
验证步骤
- 验证命名空间存储桶是否在 State 列中带有绿色勾号、预期的读取资源和预期的写入资源名称。