管理混合和多云资源
有关如何使用多云对象网关(NooBaa)在混合云或多云环境中管理存储资源的说明。
摘要
使开源包含更多 复制链接链接已复制到粘贴板!
红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。我们从这四个术语开始:master、slave、黑名单和白名单。由于此项工作十分艰巨,这些更改将在即将推出的几个发行版本中逐步实施。详情请查看 CTO Chris Wright 的信息。
对红帽文档提供反馈 复制链接链接已复制到粘贴板!
我们感谢您对文档提供反馈信息。请告诉我们如何让它更好。
要提供反馈,请创建一个 JIRA ticket:
- 登录到 JIRA。
- 在顶部导航栏中点 Create
- 在 Summary 字段中输入描述性标题。
- 在 Description 字段中输入您对改进的建议。包括文档相关部分的链接。
- 在 Components 字段中选择 Documentation。
- 点对话框底部的 Create。
第 1 章 关于 Multicloud 对象网关 复制链接链接已复制到粘贴板!
Multicloud 对象网关 (MCG) 是 OpenShift 的轻量级对象存储服务,允许用户启动小规模,然后根据需要在多个集群中、多个集群中和云原生存储中进行扩展。
第 2 章 使用应用程序访问多云对象网关 复制链接链接已复制到粘贴板!
您可以使用任何以 AWS S3 或使用 AWS S3 软件开发套件 (SDK) 的代码为目标的应用程序访问对象服务。应用程序需要指定多云对象网关(MCG)端点、访问密钥和 secret 访问密钥。您可以使用您的终端或 MCG CLI 来检索此信息。
如需有关访问 RADOS 对象网关(RGW)S3 端点的信息,请参阅访问 RADOS 对象网关 S3 端点。
先决条件
- 正在运行的 OpenShift Data Foundation 平台。
下载 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 或者,您也可以从 下载红帽 OpenShift Data Foundation 页面上的 OpenShift Data Foundation RPM 安装 MCG 软件包。
注意根据您的架构选择正确的产品变体。
您可以通过两种方式访问相关的端点、访问密钥和 secret 访问密钥:
例如:
- 使用虚拟主机风格访问 MCG 存储桶
- 如果客户端应用程序尝试访问 https://<bucket-name>.s3-openshift-storage.apps.mycluster-cluster.qe.rh-ocs.com
<bucket-name>
是 MCG 存储桶的名称
例如:https://mcg-test-bucket.s3-openshift-storage.apps.mycluster-cluster.qe.rh-ocs.com
DNS 条目需要
mcg-test-bucket.s3-openshift-storage.apps.mycluster-cluster.qe.rh-ocs.com
来指向 S3 服务。
确保您有一个 DNS 条目,以便使用虚拟主机风格将客户端应用程序指向 MCG 存储桶。
2.1. 从终端访问 Multicloud 对象网关 复制链接链接已复制到粘贴板!
流程
运行 describe
命令,以查看有关多云对象网关(MCG)端点的信息,包括其访问密钥(AWS_ACCESS_KEY_ID
值)和 secret 访问密钥(AWS_SECRET_ACCESS_KEY
值)。
oc describe noobaa -n openshift-storage
# oc describe noobaa -n openshift-storage
输出结果类似如下:
oc describe nooba
命令的输出列出了可用的内部和外部 DNS 名称。使用内部 DNS 时,流量是空闲的。外部 DNS 使用 Load Balancing 来处理流量,因此会有一个每小时的成本。
2.2. 使用 MCG 命令行界面访问 Multicloud 对象网关 复制链接链接已复制到粘贴板!
先决条件
下载 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
流程
运行 status
命令访问端点、访问密钥和 secret 访问密钥:
noobaa status -n openshift-storage
noobaa status -n openshift-storage
输出结果类似如下:
您有相关的端点、访问密钥和 secret 访问密钥来连接到应用程序。
例如:
如果 AWS S3 CLI 是应用程序,以下命令将列出 OpenShift Data Foundation 中的存储桶:
AWS_ACCESS_KEY_ID=<AWS_ACCESS_KEY_ID> AWS_SECRET_ACCESS_KEY=<AWS_SECRET_ACCESS_KEY> aws --endpoint <ENDPOINT> --no-verify-ssl s3 ls
AWS_ACCESS_KEY_ID=<AWS_ACCESS_KEY_ID>
AWS_SECRET_ACCESS_KEY=<AWS_SECRET_ACCESS_KEY>
aws --endpoint <ENDPOINT> --no-verify-ssl s3 ls
2.3. 支持多云对象网关数据存储桶 API 复制链接链接已复制到粘贴板!
下表列出了 Multicloud 对象网关(MCG)数据存储桶 API 及其支持级别。
数据存储桶 | 支持 | |
列出存储桶 | 支持 | |
删除存储桶 | 支持 | 复制配置是 MCG bucket 类配置的一部分 |
创建存储桶 | 支持 | 不同的一组可处理 ACL |
post bucket | 不支持 | |
放置存储桶 | 部分支持 | 复制配置是 MCG bucket 类配置的一部分 |
bucket 生命周期 | 部分支持 | 仅限对象过期 |
策略(Buckets、Objects) | 部分支持 | 支持存储桶策略 |
bucket 网站 | 支持 | |
bucket ACL (Get, Put) | 支持 | 不同的一组可处理 ACL |
bucket 位置 | Partialy | 仅返回默认值 |
bucket 通知 | 不支持 | |
bucket 对象版本 | 支持 | |
Get Bucket Info (HEAD) | 支持 | |
bucket 请求支付 | 部分支持 | 返回存储桶所有者 |
放置对象 | 支持 | |
删除对象 | 支持 | |
获取对象 | 支持 | |
对象 ACL (Get, Put) | 支持 | |
Get Object Info (HEAD) | 支持 | |
POST 对象 | 支持 | |
复制对象 | 支持 | |
多部分上传 | 支持 | |
对象标记 | 支持 | |
Storage class | 不支持 |
不支持 cors, metrics, inventory, analytics, inventory, logging, notifications, accelerate, replication, request payment, locks verbs
第 3 章 为混合或多云添加存储资源 复制链接链接已复制到粘贴板!
3.1. 创建新的后备存储 复制链接链接已复制到粘贴板!
在 OpenShift Data Foundation 中使用此流程创建新的后备存储。
先决条件
- OpenShift Data Foundation 的管理员访问权限。
流程
- 在 OpenShift Web 控制台中,点 Storage → Object Storage。
- 单击 Backing Store 选项卡。
- 单击 Create Backing Store。
在 Create New Backing Store 页面中执行以下操作:
- 输入后端存储名称。
- 选择 Provider。
- 选择 Region。
- 可选:输入 端点。
从下拉列表中选择一个 Secret,或者创建自己的 secret。另外,您也可以切换到 Credentials 视图来填写所需的 secret。
有关创建 OCP secret 的更多信息,请参阅 Openshift Container Platform 文档中的 创建 secret 部分。
每个后备存储都需要不同的机密。有关为特定后备存储创建 secret 的更多信息,请参阅 第 3.3 节 “使用 MCG 命令行界面为混合或多云添加存储资源” 并按照使用 YAML 添加存储资源的步骤进行操作。
注意此菜单与 Google Cloud 和本地 PVC 以外的所有供应商相关。
- 输入 Target bucket。目标 bucket 是托管在远程云服务的容器存储。它允许您创建一个连接,告诉 MCG 它可以将此存储桶用于系统。
- 单击 Create Backing Store。
验证步骤
- 在 OpenShift Web 控制台中,点 Storage → Object Storage。
- 单击 Backing Store 选项卡,以查看所有后备存储。
3.2. 覆盖默认后备存储 复制链接链接已复制到粘贴板!
您可以使用 manualDefaultBackingStore
标志覆盖默认 NooBaa 后备存储,如果您不想使用默认的后备存储配置,则将其删除。这提供了自定义后备存储配置的灵活性,并根据您的特定需求量身定制。通过利用这个功能,您可以进一步优化系统并增强其性能。
先决条件
- 安装了带有 OpenShift Data Foundation operator 的 OpenShift Container Platform。
- 下载 Multicloud 对象网关 (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 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
- 对于 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 软件包。
根据您的架构选择正确的产品变体。
流程
检查
noobaa-default-backing-store
是否存在:oc get backingstore
$ oc get backingstore NAME TYPE PHASE AGE noobaa-default-backing-store pv-pool Creating 102s
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 修补 NooBaa CR 以启用
manualDefaultBackingStore
:oc patch noobaa/noobaa --type json --patch='[{"op":"add","path":"/spec/manualDefaultBackingStore","value":true}]'
$ oc patch noobaa/noobaa --type json --patch='[{"op":"add","path":"/spec/manualDefaultBackingStore","value":true}]'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 重要使用 Multicloud 对象网关 CLI 创建新的后备存储和更新帐户。
创建新的默认后备存储以覆盖默认后备存储。例如:
noobaa backingstore create pv-pool _NEW-DEFAULT-BACKING-STORE_ --num-volumes 1 --pv-size-gb 16
$ noobaa backingstore create pv-pool _NEW-DEFAULT-BACKING-STORE_ --num-volumes 1 --pv-size-gb 16
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
将
NEW-DEFAULT-BACKING-STORE
替换为您要用于新的默认后备存储的名称。
-
将
更新 admin 帐户,以使用新的默认后备存储作为其默认资源:
noobaa account update admin@noobaa.io --new_default_resource=_NEW-DEFAULT-BACKING-STORE_
$ noobaa account update admin@noobaa.io --new_default_resource=_NEW-DEFAULT-BACKING-STORE_
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将
NEW-DEFAULT-BACKING-STORE
替换为上一步中的后备存储的名称。更新 admin 帐户的默认资源可确保在整个系统中使用新配置。
将 default-bucketclass 配置为使用新的默认后备存储:
oc patch Bucketclass noobaa-default-bucket-class -n openshift-storage --type=json --patch='[{"op": "replace", "path": "/spec/placementPolicy/tiers/0/backingStores/0", "value": "NEW-DEFAULT-BACKING-STORE"}]'
$ oc patch Bucketclass noobaa-default-bucket-class -n openshift-storage --type=json --patch='[{"op": "replace", "path": "/spec/placementPolicy/tiers/0/backingStores/0", "value": "NEW-DEFAULT-BACKING-STORE"}]'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 可选:删除 noobaa-default-backing-store。
-
删除所有
noobaa-default-backing-store
实例以及与它关联的存储桶,并更新使用它作为资源更新的帐户。 删除 noobaa-default-backing-store :
oc delete backingstore noobaa-default-backing-store -n openshift-storage | oc patch -n openshift-storage backingstore/noobaa-default-backing-store --type json --patch='[ { "op": "remove", "path": "/metadata/finalizers" } ]'
$ oc delete backingstore noobaa-default-backing-store -n openshift-storage | oc patch -n openshift-storage backingstore/noobaa-default-backing-store --type json --patch='[ { "op": "remove", "path": "/metadata/finalizers" } ]'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在继续操作前,您必须启用
manualDefaultBackingStore
标记。此外,更新所有使用默认资源的帐户,并删除与默认后备存储关联的所有 和 bucket 实例,以确保平稳过渡。
-
删除所有
3.3. 使用 MCG 命令行界面为混合或多云添加存储资源 复制链接链接已复制到粘贴板!
多云对象网关 (MCG) 简化了跨云供应商和集群的数据生成过程。
添加 MCG 可以使用的后备存储。
根据部署类型,您可以选择以下步骤之一来创建后备存储:
- 有关创建 AWS 支持的后备存储,请参阅 第 3.3.1 节 “创建 AWS 支持的后备存储”
- 有关创建 IBM COS 支持的后备存储,请参考 第 3.3.2 节 “创建 IBM COS 支持的后备存储”
- 有关创建 Azure 支持的后备存储,请参阅 第 3.3.3 节 “创建 Azure 支持的后备存储”
- 有关创建 GCP 支持的后备存储,请参阅 第 3.3.4 节 “创建由 GCP 支持的后备存储”
- 有关创建本地持久性卷支持的后备存储,请参阅 第 3.3.5 节 “创建由本地持久性卷支持的后备存储”
对于 VMware 部署,请跳至 第 3.4 节 “创建兼容 s3 的多云对象网关后备存储” 以了解更多详细信息。
3.3.1. 创建 AWS 支持的后备存储 复制链接链接已复制到粘贴板!
先决条件
下载多云对象网关(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 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/packages的 OpenShift Data Foundation RPM 安装 MCG 软件包
注意根据您的架构选择正确的产品变体。
流程
使用 MCG 命令行界面
在 MCG 命令行界面中运行以下命令:
noobaa backingstore create aws-s3 <backingstore_name> --access-key=<AWS ACCESS KEY> --secret-key=<AWS SECRET ACCESS KEY> --target-bucket <bucket-name> --region <aws-region-name> -n openshift-storage
noobaa backingstore create aws-s3 <backingstore_name> --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 <backingstore_name>
- 后备储存的名称。
<AWS ACCESS KEY>
和<AWS SECRET ACCESS KEY>
- 您创建的 AWS 访问密钥 ID 和 secret 访问密钥。
<bucket-name>
- 现有 AWS 存储桶名称。此参数告知 MCG 将哪一个存储桶用作其后备存储的目标存储桶,以及随后数据存储和管理。
<aws-region-name>
AWS 存储桶区域。
输出结果类似如下:
INFO[0001] ✅ Exists: NooBaa "noobaa" INFO[0002] ✅ Created: BackingStore "aws-resource" INFO[0002] ✅ Created: Secret "backing-store-secret-aws-resource"
INFO[0001] ✅ Exists: NooBaa "noobaa" INFO[0002] ✅ Created: BackingStore "aws-resource" INFO[0002] ✅ Created: Secret "backing-store-secret-aws-resource"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
使用 YAML 添加存储资源
使用凭证创建 secret:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow <AWS ACCESS KEY>
和<AWS SECRET ACCESS KEY>
-
使用 Base64 提供并编码您自己的 AWS 访问密钥 ID 和 secret 访问密钥,并使用结果代替
<AWS ACCESS KEY ID ENCODED IN BASE64>
和<AWS SECRET ACCESS KEY ENCODED IN BASE64>
。 <backingstore-secret-name>
- 上一步中创建的后备存储 secret 的名称。
为特定的后备存储应用以下 YAML:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow <bucket-name>
- 现有 AWS 存储桶名称。
<backingstore-secret-name>
- 上一步中创建的后备存储 secret 的名称。
<aws-region-name>
- AWS 存储桶区域。
3.3.2. 创建 IBM COS 支持的后备存储 复制链接链接已复制到粘贴板!
先决条件
下载多云对象网关(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/packages的 OpenShift Data Foundation RPM 安装 MCG 软件包
注意根据您的架构选择正确的产品变体。
流程
使用命令行界面
在 MCG 命令行界面中运行以下命令:
noobaa backingstore create ibm-cos <backingstore_name> --access-key=<IBM ACCESS KEY> --secret-key=<IBM SECRET ACCESS KEY> --endpoint=<IBM COS ENDPOINT> --target-bucket <bucket-name> -n openshift-storage
noobaa backingstore create ibm-cos <backingstore_name> --access-key=<IBM ACCESS KEY> --secret-key=<IBM SECRET ACCESS KEY> --endpoint=<IBM COS ENDPOINT> --target-bucket <bucket-name> -n openshift-storage
Copy to Clipboard Copied! Toggle word wrap Toggle overflow <backingstore_name>
- 后备储存的名称。
<IBM ACCESS KEY>
,<IBM SECRET ACCESS KEY>
, 和<IBM COS ENDPOINT>
IBM 访问密钥 ID、secret 访问密钥和适当的区域端点,对应于现有 IBM 存储桶的位置。
要在 IBM 云中生成上述密钥,您必须在为您的目标存储桶创建服务凭证时包含 HMAC 凭证。
<bucket-name>
现有 IBM 存储桶名称。此参数告知 MCG 将哪一个存储桶用作其后备存储的目标存储桶,以及随后数据存储和管理。
输出结果类似如下:
INFO[0001] ✅ Exists: NooBaa "noobaa" INFO[0002] ✅ Created: BackingStore "ibm-resource" INFO[0002] ✅ Created: Secret "backing-store-secret-ibm-resource"
INFO[0001] ✅ Exists: NooBaa "noobaa" INFO[0002] ✅ Created: BackingStore "ibm-resource" INFO[0002] ✅ Created: Secret "backing-store-secret-ibm-resource"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
使用 YAML 添加存储资源
使用凭证创建 secret:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow <IBM COS ACCESS KEY ID ENCODED IN BASE64>
和<IBM COS SECRET ACCESS KEY ENCODED IN BASE64>
- 使用 Base64 提供并编码您自己的 IBM COS 访问密钥 ID 和 secret 访问密钥,并使用这些属性的结果来代替这些属性。
<backingstore-secret-name>
- 后备存储 secret 的名称。
为特定的后备存储应用以下 YAML:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow <bucket-name>
- 现有的 IBM COS 存储桶名称。此参数告知 MCG 将哪一个存储桶用作其后备存储的目标存储桶,以及随后数据存储和管理。
<endpoint>
- 与现有 IBM 存储桶名称的位置对应的区域端点。此参数指示 MCG 关于用于其后备存储的端点,然后是数据存储和管理。
<backingstore-secret-name>
- 上一步中创建的 secret 的名称。
3.3.3. 创建 Azure 支持的后备存储 复制链接链接已复制到粘贴板!
先决条件
下载多云对象网关(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 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/packages的 OpenShift Data Foundation RPM 安装 MCG 软件包
注意根据您的架构选择正确的产品变体。
流程
使用 MCG 命令行界面
在 MCG 命令行界面中运行以下命令:
noobaa backingstore create azure-blob <backingstore_name> --account-key=<AZURE ACCOUNT KEY> --account-name=<AZURE ACCOUNT NAME> --target-blob-container <blob container name> -n openshift-storage
noobaa backingstore create azure-blob <backingstore_name> --account-key=<AZURE ACCOUNT KEY> --account-name=<AZURE ACCOUNT NAME> --target-blob-container <blob container name> -n openshift-storage
Copy to Clipboard Copied! Toggle word wrap Toggle overflow <backingstore_name>
- 后备储存的名称。
<AZURE ACCOUNT KEY>
和<AZURE ACCOUNT NAME>
- 您为此创建的 AZURE 帐户密钥和帐户名称。
<blob container name>
现有的 Azure blob 容器名称。此参数告知 MCG 将哪一个存储桶用作其后备存储的目标存储桶,以及随后数据存储和管理。
输出结果类似如下:
INFO[0001] ✅ Exists: NooBaa "noobaa" INFO[0002] ✅ Created: BackingStore "azure-resource" INFO[0002] ✅ Created: Secret "backing-store-secret-azure-resource"
INFO[0001] ✅ Exists: NooBaa "noobaa" INFO[0002] ✅ Created: BackingStore "azure-resource" INFO[0002] ✅ Created: Secret "backing-store-secret-azure-resource"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
使用 YAML 添加存储资源
使用凭证创建 secret:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow <AZURE ACCOUNT NAME ENCODED IN BASE64>
和<AZURE ACCOUNT KEY ENCODED IN BASE64>
- 使用 Base64 提供并编码您自己的 Azure 帐户名称和帐户密钥,并分别使用这些属性代替这些属性。
<backingstore-secret-name>
- 唯一的后备存储 secret 名称。
为特定的后备存储应用以下 YAML:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow <blob-container-name>
- 现有的 Azure blob 容器名称。此参数告知 MCG 将哪一个存储桶用作其后备存储的目标存储桶,以及随后数据存储和管理。
<backingstore-secret-name>
- 使用上一步中创建的 secret 的名称。
3.3.4. 创建由 GCP 支持的后备存储 复制链接链接已复制到粘贴板!
先决条件
下载多云对象网关(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 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/packages的 OpenShift Data Foundation RPM 安装 MCG 软件包
注意根据您的架构选择正确的产品变体。
流程
使用 MCG 命令行界面
在 MCG 命令行界面中运行以下命令:
noobaa backingstore create google-cloud-storage <backingstore_name> --private-key-json-file=<PATH TO GCP PRIVATE KEY JSON FILE> --target-bucket <GCP bucket name> -n openshift-storage
noobaa backingstore create google-cloud-storage <backingstore_name> --private-key-json-file=<PATH TO GCP PRIVATE KEY JSON FILE> --target-bucket <GCP bucket name> -n openshift-storage
Copy to Clipboard Copied! Toggle word wrap Toggle overflow <backingstore_name>
- 后备储存的名称。
<PATH TO GCP PRIVATE KEY JSON FILE>
- 为此目的创建的 GCP 私钥的路径。
<GCP bucket name>
现有的 GCP 对象存储存储桶名称。此参数告知 MCG 将哪一个存储桶用作其后备存储的目标存储桶,以及随后数据存储和管理。
输出结果类似如下:
INFO[0001] ✅ Exists: NooBaa "noobaa" INFO[0002] ✅ Created: BackingStore "google-gcp" INFO[0002] ✅ Created: Secret "backing-store-google-cloud-storage-gcp"
INFO[0001] ✅ Exists: NooBaa "noobaa" INFO[0002] ✅ Created: BackingStore "google-gcp" INFO[0002] ✅ Created: Secret "backing-store-google-cloud-storage-gcp"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
使用 YAML 添加存储资源
使用凭证创建 secret:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow <GCP PRIVATE KEY ENCODED IN BASE64>
- 使用 Base64 提供并编码您自己的 GCP 服务帐户私钥,并将结果用于此属性。
<backingstore-secret-name>
- 后备存储 secret 的唯一名称。
为特定的后备存储应用以下 YAML:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow <target bucket>
- 现有的 Google 存储桶。此参数告知 MCG 将哪一个存储桶用作其后备存储的目标存储桶,以及随后数据存储和管理。
<backingstore-secret-name>
- 上一步中创建的 secret 的名称。
3.3.5. 创建由本地持久性卷支持的后备存储 复制链接链接已复制到粘贴板!
先决条件
下载多云对象网关(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/packages的 OpenShift Data Foundation RPM 安装 MCG 软件包
注意根据您的架构选择正确的产品变体。
流程
使用 MCG 命令行界面添加存储资源
在 MCG 命令行界面中运行以下命令:
注意此命令必须从
openshift-storage
命名空间内运行。noobaa -n openshift-storage backingstore create pv-pool <backingstore_name> --num-volumes <NUMBER OF VOLUMES> --pv-size-gb <VOLUME SIZE> --request-cpu <CPU REQUEST> --request-memory <MEMORY REQUEST> --limit-cpu <CPU LIMIT> --limit-memory <MEMORY LIMIT> --storage-class <LOCAL STORAGE CLASS>
$ noobaa -n openshift-storage backingstore create pv-pool <backingstore_name> --num-volumes <NUMBER OF VOLUMES> --pv-size-gb <VOLUME SIZE> --request-cpu <CPU REQUEST> --request-memory <MEMORY REQUEST> --limit-cpu <CPU LIMIT> --limit-memory <MEMORY LIMIT> --storage-class <LOCAL STORAGE CLASS>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
使用 YAML 添加存储资源
为特定的后备存储应用以下 YAML:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow <backingstore_name>
- 后备储存的名称。
<NUMBER OF VOLUMES>
- 要创建的卷数量。请注意,增加卷数量可向上扩展存储。
<VOLUME SIZE>
- 每个卷所需的大小(以 GB 为单位)。
<CPU REQUEST>
-
保证的 CPU 请求,以 CPU 单元
m
为单位。 <MEMORY REQUEST>
- 保证请求的内存量。
<CPU LIMIT>
-
可消耗的最大 CPU 量,以 CPU 单元
m
为单位。 <MEMORY LIMIT>
- 可消耗的最大内存量。
<LOCAL STORAGE CLASS>
本地存储类名称,建议使用
ocs-storagecluster-ceph-rbd
。输出结果类似如下:
INFO[0001] ✅ Exists: NooBaa "noobaa" INFO[0002] ✅ Exists: BackingStore "local-mcg-storage"
INFO[0001] ✅ Exists: NooBaa "noobaa" INFO[0002] ✅ Exists: BackingStore "local-mcg-storage"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
3.4. 创建兼容 s3 的多云对象网关后备存储 复制链接链接已复制到粘贴板!
多云对象网关(MCG)可以使用任何 S3 兼容对象存储作为后备存储,例如,Red Hat Ceph Storage 的 RADOS 对象网关(RGW)。以下步骤演示了如何为 Red Hat Ceph Storage 的 RGW 创建 S3 兼容 MCG 后备存储。请注意,部署 RGW 时,OpenShift Data Foundation operator 会自动为 MCG 创建 S3 兼容后备存储。
流程
在 MCG 命令行界面中运行以下命令:
注意此命令必须从
openshift-storage
命名空间内运行。noobaa backingstore create s3-compatible rgw-resource --access-key=<RGW ACCESS KEY> --secret-key=<RGW SECRET KEY> --target-bucket=<bucket-name> --endpoint=<RGW endpoint> -n openshift-storage
noobaa backingstore create s3-compatible rgw-resource --access-key=<RGW ACCESS KEY> --secret-key=<RGW SECRET KEY> --target-bucket=<bucket-name> --endpoint=<RGW endpoint> -n openshift-storage
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 要获取
<RGW ACCESS KEY>
和<RGW SECRET KEY>
,请使用您的 RGW 用户 secret 名称运行以下命令:oc get secret <RGW USER SECRET NAME> -o yaml -n openshift-storage
oc get secret <RGW USER SECRET NAME> -o yaml -n openshift-storage
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 解码 Base64 中的访问密钥 ID 和访问密钥,并保留它们。
-
将
<RGW USER ACCESS KEY>
和<RGW USER SECRET ACCESS KEY>
替换为上一步中的相应已解码数据。 -
将
<bucket-name>
替换为现有的 RGW 存储桶名称。此参数告知 MCG 将哪一个存储桶用作其后备存储的目标存储桶,以及随后数据存储和管理。 若要获取 <
;RGW endpoint&
gt;,请参阅 访问 RADOS 对象网关 S3 端点。输出结果类似如下:
INFO[0001] ✅ Exists: NooBaa "noobaa" INFO[0002] ✅ Created: BackingStore "rgw-resource" INFO[0002] ✅ Created: Secret "backing-store-secret-rgw-resource"
INFO[0001] ✅ Exists: NooBaa "noobaa" INFO[0002] ✅ Created: BackingStore "rgw-resource" INFO[0002] ✅ Created: Secret "backing-store-secret-rgw-resource"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
您还可以使用 YAML 创建后备存储:
创建
CephObjectStore
用户。这还会创建一个包含 RGW 凭证的 secret:Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
将
<RGW-Username>
和<Display-name>
替换为唯一的用户名和显示名称。
-
将
为 S3-Compatible 后备存储应用以下 YAML:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
将
<backingstore-secret-name>
替换为上一步中使用CephObjectStore
创建的 secret 的名称。 -
将
<bucket-name>
替换为现有的 RGW 存储桶名称。此参数告知 MCG 将哪一个存储桶用作其后备存储的目标存储桶,以及随后数据存储和管理。 -
要获取
<RGW endpoint>
,请参阅访问 RADOS 对象网关 S3 端点。
-
将
3.5. 创建新存储桶类 复制链接链接已复制到粘贴板!
bucket 类是一个 CRD,代表一组存储桶,用于定义对象 Bucket 类的分层策略和数据放置。
在 OpenShift Data Foundation 中创建存储桶类。
流程
- 在 OpenShift Web 控制台中,点 Storage → Object Storage。
- 单击 Bucket Class 选项卡。
- 点 Create Bucket Class。
在 Create new Bucket Class 页面中,执行以下操作:
选择 bucket 类类型,再输入 bucket 类名称。
选择 BucketClass 类型。选择以下选项之一:
- Standard :数据将由多云对象网关(MCG)使用,已取消、压缩和加密。
Namespace :数据存储在 Namespace 存储中,而无需执行重复数据删除、压缩或加密。
默认选择 Standard。
- 输入 Bucket Class Name。
- 点 Next。
在 放置策略 中,选择 Tier 1 - Policy Type 并单击 Next。您可以根据要求选择任一选项。
- Spread 允许在选定资源之间分散数据。
- Mirror 允许在选定资源中完全重复数据。
- 单击 Add Tier 以添加另一个策略层。
如果您为 Spread 选择了 Tier 1 - Policy Type,从可用列表中选择至少一个 Backing Store 资源并点 Next。或者,您也可以 创建新的后备存储。
注意当在上一步中选择 Policy Type 作为 Mirror 时,至少需要选择 2 个后备存储。
- 检查并确认 Bucket 类设置。
- 点 Create Bucket Class。
验证步骤
- 在 OpenShift Web 控制台中,点 Storage → Object Storage。
- 单击 Bucket Class 选项卡,再搜索新的 Bucket 类。
3.6. 编辑存储桶类 复制链接链接已复制到粘贴板!
使用以下步骤,通过 YAML 文件编辑存储桶类组件,方法是点击 Openshift Web 控制台上的 edit
按钮。
先决条件
- 管理员对 OpenShift Web 控制台的访问权限。
流程
- 在 OpenShift Web 控制台中,点 Storage → Object Storage。
- 单击 Bucket Class 选项卡。
- 点击您要编辑的 Bucket 类旁边的 Action Menu (⋮)。
- 点 Edit Bucket Class。
- 您将被重定向到 YAML 文件,在此文件中进行必要的更改并点 Save。
3.7. 为存储桶类编辑后备存储 复制链接链接已复制到粘贴板!
使用以下步骤编辑现有的多云对象网关(MCG)存储桶类,以更改存储桶类中使用的底层后备存储。
先决条件
- 管理员对 OpenShift Web 控制台的访问权限。
- 存储桶类。
- 后备存储。
流程
- 在 OpenShift Web 控制台中,点 Storage → Object Storage。
- 单击 Bucket Class 选项卡。
- 点击您要编辑的 Bucket 类旁边的 Action Menu (⋮)。
- 点 Edit Bucket Class Resources。
在 Edit Bucket Class Resources 页面中,通过添加后备存储到存储桶类或从存储桶类中删除后备存储来编辑存储桶类资源。您还可以编辑使用一或两个分层和不同的放置策略创建的 bucket 类资源。
- 要将后备存储添加到 bucket 类,请选择后备存储的名称。
- 要从存储桶类中删除后备存储,请取消选中后备存储的名称。
- 点 Save。
第 4 章 管理命名空间存储桶 复制链接链接已复制到粘贴板!
命名空间存储桶可让您将不同提供程序上的数据存储库连接在一起,以便您可以通过统一视图与所有数据交互。将与各个提供程序关联的对象存储桶添加到命名空间存储桶,并通过命名空间存储桶访问您的数据,以一次性查看所有对象存储桶。这可让您在读取多个其他存储提供商的同时写入您首选的存储供应商,从而显著降低迁移至新存储提供商的成本。
只有其 write
目标可用且可正常运行时,才能使用命名空间存储桶。
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 参考文档。
4.2. 使用 Multicloud 对象网关 CLI 和 YAML 添加命名空间存储桶 复制链接链接已复制到粘贴板!
如需有关命名空间存储桶的更多信息,请参阅管理命名空间存储桶。
根据部署的类型以及是否使用 YAML 或 Multicloud 对象网关 (MCG) CLI,选择以下流程之一来添加命名空间存储桶:
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。
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。
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。
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。
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 状态。
4.4. 使用 S3 协议在旧应用程序与云原生应用程序间共享 复制链接链接已复制到粘贴板!
许多传统应用程序会使用文件系统共享数据集。您可以使用 S3 操作访问和共享文件系统中的传统数据。要共享您需要的数据,请执行以下操作:
- 导出预先存在的文件系统数据集,即 RWX 卷,如 Ceph FileSystem(CephFS),或使用 S3 协议创建新的文件系统数据集。
- 从文件系统和 S3 协议访问文件系统数据集。
- 配置 S3 帐户,并将它们映射到现有文件系统唯一标识符(UID)和组标识符(GID)。
4.4.1. 创建 NamespaceStore 来使用文件系统 复制链接链接已复制到粘贴板!
先决条件
- 安装了带有 OpenShift Data Foundation operator 的 OpenShift Container Platform。
- 访问多云对象网关(MCG)。
流程
- 登录 OpenShift Web 控制台。
- 点 Storage → Object Storage。
- 点 NamespaceStore 标签来创建在命名空间存储桶中使用的 NamespaceStore 资源。
- 点 Create namespacestore。
- 为 NamespaceStore 输入一个名称。
- 选择 Filesystem 作为供应商。
- 选择持久性卷声明。
输入文件夹名称。
如果文件夹名称已存在,则该文件夹会用于创建 NamespaceStore,如果不存在则创建新的文件夹。
- 点 Create。
- 验证 NamespaceStore 是否处于 Ready 状态。
4.4.2. 使用 NamespaceStore 文件系统配置创建帐户 复制链接链接已复制到粘贴板!
您可以使用 NamespaceStore 文件系统配置创建新帐户,或通过编辑 YAML 将现有的普通帐户转换为 NamespaceStore 文件系统帐户。
您无法从帐户中删除 NamespaceStore 文件系统配置。
先决条件
下载 Multicloud 对象网关 (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
流程
使用 MCG 命令行界面使用 NamespaceStore 文件系统配置创建新帐户。
noobaa account create <noobaa-account-name> [flags]
$ noobaa account create <noobaa-account-name> [flags]
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 例如:
noobaa account create testaccount --nsfs_account_config --gid 10001 --uid 10001 –default_resource fs_namespacestore
$ noobaa account create testaccount --nsfs_account_config --gid 10001 --uid 10001 –default_resource fs_namespacestore
Copy to Clipboard Copied! Toggle word wrap Toggle overflow allow_bucket_create
指明是否允许帐户创建新存储桶。支持的值是
true
或false
。默认值为true
。--default_resource
使用 S3 CreateBucket 操作时,将在其上创建新的存储桶的 NamespaceStore 资源。NamespaceStore 必须使用 RWX(ReadWriteMany)持久性卷声明(PVC)支持。
new_buckets_path
创建与新 bucket 对应的目录的文件系统路径。该路径位于 NamespaceStore 文件系统 PVC 中,其中创建新目录充当新创建的对象存储桶类的文件系统映射。
nsfs_account_config
指示该帐户是否用于 NamespaceStore 文件系统的必需字段。
nsfs_only
指明帐户是否仅用于 NamespaceStore 文件系统。支持的值是 true 或
false
。默认值为false
。如果设为 'true',则会限制您访问其他类型的存储桶。uid
MCG 帐户要映射到的文件系统 ID,用于访问和管理文件系统中的数据
gid
MCG 帐户要映射到的文件系统的组 ID,用于访问和管理文件系统中的数据
MCG 系统使用帐户配置及其 S3 凭证发送响应:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 您可以使用以下命令列出所有基于自定义资源定义(CRD)的帐户:
noobaa account list
$ noobaa account list NAME DEFAULT_RESOURCE PHASE AGE testaccount noobaa-default-backing-store Ready 1m17s
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 如果您对特定帐户感兴趣,您可以直接读取其自定义资源定义(CRD):
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
4.4.3. 从 openshift-storage 命名空间中访问旧的应用程序数据 复制链接链接已复制到粘贴板!
当使用 Multicloud Object Gateway(MCG)NamespaceStore 文件系统(NSFS)功能时,您需要具有数据位于 openshift-storage
命名空间中的 PVC。几乎在所有情形中,您需要访问的数据不在 openshift-storage
命名空间中,而是位于传统应用程序使用的命名空间中。
要访问存储在另一个命名空间中的数据,您需要在 openshift-storage
命名空间中创建一个指向传统应用使用的同一 CephFS 卷的 PVC。
流程
使用
scc
显示应用程序命名空间:oc get ns <application_namespace> -o yaml | grep scc
$ oc get ns <application_namespace> -o yaml | grep scc
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - <application_namespace>
指定应用程序命名空间的名称。
例如:
oc get ns testnamespace -o yaml | grep scc
$ oc get ns testnamespace -o yaml | grep scc openshift.io/sa.scc.mcs: s0:c26,c5 openshift.io/sa.scc.supplemental-groups: 1000660000/10000 openshift.io/sa.scc.uid-range: 1000660000/10000
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
进入应用程序命名空间:
oc project <application_namespace>
$ oc project <application_namespace>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 例如:
oc project testnamespace
$ oc project testnamespace
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 确保 ReadWriteMany(RWX) PVC 挂载到您要使用 MCG NSFS 功能从 noobaa S3 端点使用的 pod 上:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow oc get pod
$ oc get pod NAME READY STATUS RESTARTS AGE cephfs-write-workload-generator-no-cache-1-cv892 1/1 Running 0 11s
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 检查 pod 中的持久性卷(PV)的挂载点。
从 pod 获取 PV 的卷名称:
oc get pods <pod_name> -o jsonpath='{.spec.volumes[]}'
$ oc get pods <pod_name> -o jsonpath='{.spec.volumes[]}'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - <pod_name>
指定 pod 的名称。
例如:
oc get pods cephfs-write-workload-generator-no-cache-1-cv892 -o jsonpath='{.spec.volumes[]}'
$ oc get pods cephfs-write-workload-generator-no-cache-1-cv892 -o jsonpath='{.spec.volumes[]}' {"name":"app-persistent-storage","persistentVolumeClaim":{"claimName":"cephfs-write-workload-generator-no-cache-pv-claim"}}
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在本例中,PVC 的卷名称为
cephfs-write-workload-generator-no-cache-pv-claim
。
列出 pod 中的所有挂载,并检查您在上一步中标识的卷的挂载点:
oc get pods <pod_name> -o jsonpath='{.spec.containers[].volumeMounts}'
$ oc get pods <pod_name> -o jsonpath='{.spec.containers[].volumeMounts}'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 例如:
oc get pods cephfs-write-workload-generator-no-cache-1-cv892 -o jsonpath='{.spec.containers[].volumeMounts}'
$ oc get pods cephfs-write-workload-generator-no-cache-1-cv892 -o jsonpath='{.spec.containers[].volumeMounts}' [{"mountPath":"/mnt/pv","name":"app-persistent-storage"},{"mountPath":"/var/run/secrets/kubernetes.io/serviceaccount","name":"kube-api-access-8tnc5","readOnly":true}]
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
确认 pod 中的 RWX PV 的挂载点:
oc exec -it <pod_name> -- df <mount_path>
$ oc exec -it <pod_name> -- df <mount_path>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow <mount_path>
指定您在上一步中标识的挂载点的路径。
例如:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
确保 UID 和 SELinux 标签与旧命名空间使用的标签相同:
oc exec -it <pod_name> -- ls -latrZ <mount_path>
$ oc exec -it <pod_name> -- ls -latrZ <mount_path>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 例如:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 获取您要从
openshift-storage
命名空间访问的旧应用程序 RWX PV 的信息:oc get pv | grep <pv_name>
$ oc get pv | grep <pv_name>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow <pv_name>
指定 PV 的名称。
例如:
oc get pv | grep pvc-aa58fb91-c3d2-475b-bbee-68452a613e1a
$ oc get pv | grep pvc-aa58fb91-c3d2-475b-bbee-68452a613e1a pvc-aa58fb91-c3d2-475b-bbee-68452a613e1a 10Gi RWX Delete Bound testnamespace/cephfs-write-workload-generator-no-cache-pv-claim ocs-storagecluster-cephfs 47s
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
确保来自
openshift-storage
命名空间中的 PVC 可以被访问,以便一个或多个 noobaa-endpoint pod 可以访问 PVC。从
volumeAttributes
找到subvolumePath
和volumeHandle
的值。您可以从传统应用程序 PV 的 YAML 描述中获取这些值:oc get pv <pv_name> -o yaml
$ oc get pv <pv_name> -o yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 例如:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 使用您在上一步中确定的
subvolumePath
和volumeHandle
值在openshift-storage
命名空间中创建一个新的 PV 和 PVC 对象,指向与旧应用程序 PV 相同的 CephFS 卷:YAML 文件示例 :
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 使用上一步中指定的 YAML 文件,在
openshift-storage
命名空间中创建 PV 和 PVC:oc create -f <YAML_file>
$ oc create -f <YAML_file>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow <YAML_file>
指定 YAML 文件的名称。
例如:
oc create -f pv-openshift-storage.yaml
$ oc create -f pv-openshift-storage.yaml persistentvolume/cephfs-pv-legacy-openshift-storage created persistentvolumeclaim/cephfs-pvc-legacy created
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
确保 PVC 在
openshift-storage
命名空间中可用:oc get pvc -n openshift-storage
$ oc get pvc -n openshift-storage NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE cephfs-pvc-legacy Bound cephfs-pv-legacy-openshift-storage 10Gi RWX 14s
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 进入
openshift-storage
项目:oc project openshift-storage
$ oc project openshift-storage Now using project "openshift-storage" on server "https://api.cluster-5f6ng.5f6ng.sandbox65.opentlc.com:6443".
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 创建 NSFS 命名空间存储:
noobaa namespacestore create nsfs <nsfs_namespacestore> --pvc-name='<cephfs_pvc_name>' --fs-backend='CEPH_FS'
$ noobaa namespacestore create nsfs <nsfs_namespacestore> --pvc-name='<cephfs_pvc_name>' --fs-backend='CEPH_FS'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow <nsfs_namespacestore>
- 指定 NSFS 命名空间存储的名称。
<cephfs_pvc_name>
在
openshift-storage
命名空间中指定 CephFS PVC 的名称。例如:
noobaa namespacestore create nsfs legacy-namespace --pvc-name='cephfs-pvc-legacy' --fs-backend='CEPH_FS'
$ noobaa namespacestore create nsfs legacy-namespace --pvc-name='cephfs-pvc-legacy' --fs-backend='CEPH_FS'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
确保 noobaa-endpoint pod 重启,并在 NSFS 命名空间存储中成功挂载 PVC,例如
/nsfs/legacy-namespace
挂载点:oc exec -it <noobaa_endpoint_pod_name> -- df -h /nsfs/<nsfs_namespacestore>
$ oc exec -it <noobaa_endpoint_pod_name> -- df -h /nsfs/<nsfs_namespacestore>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow <noobaa_endpoint_pod_name>
指定 noobaa-endpoint pod 的名称。
例如:
oc exec -it noobaa-endpoint-5875f467f5-546c6 -- df -h /nsfs/legacy-namespace
$ oc exec -it noobaa-endpoint-5875f467f5-546c6 -- df -h /nsfs/legacy-namespace Filesystem Size Used Avail Use% Mounted on 172.30.202.87:6789,172.30.120.254:6789,172.30.77.247:6789:/volumes/csi/csi-vol-cc416d9e-dbf3-11ec-b286-0a580a810213/edcfe4d5-bdcb-4b8e-8824-8a03ad94d67c 10G 0 10G 0% /nsfs/legacy-namespace
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
创建一个 MCG 用户帐户:
noobaa account create <user_account> --allow_bucket_create=true --new_buckets_path='/' --nsfs_only=true --nsfs_account_config=true --gid <gid_number> --uid <uid_number> --default_resource='legacy-namespace'
$ noobaa account create <user_account> --allow_bucket_create=true --new_buckets_path='/' --nsfs_only=true --nsfs_account_config=true --gid <gid_number> --uid <uid_number> --default_resource='legacy-namespace'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow <user_account>
- 指定 MCG 用户帐户的名称。
<gid_number>
- 指定 GID 号。
<uid_number>
指定 UID 号。
重要使用与传统应用的相同
UID
和GID
。您可以从前面的输出中找到它。例如:
noobaa account create leguser --allow_bucket_create=true --new_buckets_path='/' --nsfs_only=true --nsfs_account_config=true --gid 0 --uid 1000660000 --default_resource='legacy-namespace'
$ noobaa account create leguser --allow_bucket_create=true --new_buckets_path='/' --nsfs_only=true --nsfs_account_config=true --gid 0 --uid 1000660000 --default_resource='legacy-namespace'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
创建一个 MCG 存储桶。
在传统应用 pod 的 CephFS PV 和 PVC 的 NSFS 共享中为 S3 创建一个专用文件夹:
oc exec -it <pod_name> -- mkdir <mount_path>/nsfs
$ oc exec -it <pod_name> -- mkdir <mount_path>/nsfs
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 例如:
oc exec -it cephfs-write-workload-generator-no-cache-1-cv892 -- mkdir /mnt/pv/nsfs
$ oc exec -it cephfs-write-workload-generator-no-cache-1-cv892 -- mkdir /mnt/pv/nsfs
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 使用
nsfs/
路径创建 MCG 存储桶:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 例如:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
检查位于传统应用程序和
openshift-storage
命名空间中的 PVC 中的文件夹的 SELinux 标签:oc exec -it <noobaa_endpoint_pod_name> -n openshift-storage -- ls -ltraZ /nsfs/<nsfs_namespacstore>
$ oc exec -it <noobaa_endpoint_pod_name> -n openshift-storage -- ls -ltraZ /nsfs/<nsfs_namespacstore>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 例如:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow oc exec -it <pod_name> -- ls -latrZ <mount_path>
$ oc exec -it <pod_name> -- ls -latrZ <mount_path>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 例如:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在这些示例中,您可以看到 SELinux 标签不是不是导致权限被拒绝或访问问题的结果。
确保传统应用程序和
openshift-storage
pod 在文件中使用相同的 SELinux 标签。您可以使用以下方法之一进行此操作:
删除 NSFS 命名空间存储:
删除 MCG 存储桶:
noobaa bucket delete <bucket_name>
$ noobaa bucket delete <bucket_name>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 例如:
noobaa bucket delete legacy-bucket
$ noobaa bucket delete legacy-bucket
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 删除 MCG 用户帐户:
noobaa account delete <user_account>
$ noobaa account delete <user_account>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 例如:
noobaa account delete leguser
$ noobaa account delete leguser
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 删除 NSFS 命名空间存储:
noobaa namespacestore delete <nsfs_namespacestore>
$ noobaa namespacestore delete <nsfs_namespacestore>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 例如:
noobaa namespacestore delete legacy-namespace
$ noobaa namespacestore delete legacy-namespace
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
删除 PV 和 PVC:
重要在删除 PV 和 PVC 前,请确保 PV 配置了保留策略。
oc delete pv <cephfs_pv_name>
$ oc delete pv <cephfs_pv_name>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow oc delete pvc <cephfs_pvc_name>
$ oc delete pvc <cephfs_pvc_name>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow <cephfs_pv_name>
- 指定传统应用的 CephFS PV 名称。
<cephfs_pvc_name>
指定传统应用的 CephFS PVC 名称。
例如:
oc delete pv cephfs-pv-legacy-openshift-storage
$ oc delete pv cephfs-pv-legacy-openshift-storage
Copy to Clipboard Copied! Toggle word wrap Toggle overflow oc delete pvc cephfs-pvc-legacy
$ oc delete pvc cephfs-pvc-legacy
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
使用
sa.scc.mcs
显示当前的openshift-storage
命名空间:oc get ns openshift-storage -o yaml | grep sa.scc.mcs
$ oc get ns openshift-storage -o yaml | grep sa.scc.mcs openshift.io/sa.scc.mcs: s0:c26,c0
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 编辑传统应用程序命名空间,并使用
openshift-storage
命名空间的sa.scc.mcs
中的值修改sa.scc.mcs
:oc edit ns <appplication_namespace>
$ oc edit ns <appplication_namespace>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 例如:
oc edit ns testnamespace
$ oc edit ns testnamespace
Copy to Clipboard Copied! Toggle word wrap Toggle overflow oc get ns <application_namespace> -o yaml | grep sa.scc.mcs
$ oc get ns <application_namespace> -o yaml | grep sa.scc.mcs
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 例如:
oc get ns testnamespace -o yaml | grep sa.scc.mcs
$ oc get ns testnamespace -o yaml | grep sa.scc.mcs openshift.io/sa.scc.mcs: s0:c26,c0
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
重启旧的应用容器集。重新标记所有文件,现在 SELinux 标签与
openshift-storage
部署相匹配。
4.4.3.2. 仅修改具有挂载传统应用程序 PVC 的 pod 的部署配置的 SELinux 标签 复制链接链接已复制到粘贴板!
使用
MustRunAs
和seLinuxOptions
选项创建一个新的scc
,使用openshift-storage
项目使用的 Multi Category Security(MCS):YAML 文件示例:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow oc create -f scc.yaml
$ oc create -f scc.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 为部署创建一个服务帐户,并将其添加到新创建的
scc
中。创建服务帐户:
oc create serviceaccount <service_account_name>
$ oc create serviceaccount <service_account_name>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - <service_account_name>`
指定服务帐户的名称。
例如:
oc create serviceaccount testnamespacesa
$ oc create serviceaccount testnamespacesa
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
将服务帐户添加到新创建的
scc
中:oc adm policy add-scc-to-user restricted-pvselinux -z <service_account_name>
$ oc adm policy add-scc-to-user restricted-pvselinux -z <service_account_name>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 例如:
oc adm policy add-scc-to-user restricted-pvselinux -z testnamespacesa
$ oc adm policy add-scc-to-user restricted-pvselinux -z testnamespacesa
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
对传统应用程序部署进行补丁,使其使用新创建的服务帐户。这可让您在部署中指定 SELinux 标签:
oc patch dc/<pod_name> '{"spec":{"template":{"spec":{"serviceAccountName": "<service_account_name>"}}}}'
$ oc patch dc/<pod_name> '{"spec":{"template":{"spec":{"serviceAccountName": "<service_account_name>"}}}}'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 例如:
oc patch dc/cephfs-write-workload-generator-no-cache --patch '{"spec":{"template":{"spec":{"serviceAccountName": "testnamespacesa"}}}}'
$ oc patch dc/cephfs-write-workload-generator-no-cache --patch '{"spec":{"template":{"spec":{"serviceAccountName": "testnamespacesa"}}}}'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 编辑部署,以指定要在部署配置的 SELinux 标签中使用的安全上下文:
oc edit dc <pod_name> -n <application_namespace>
$ oc edit dc <pod_name> -n <application_namespace>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 添加以下行:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow <security_context_value>
当您执行命令以在 NSFS 共享内为 S3 创建专用文件夹时,可以在 legacy 应用 Pod 的 CephFS PV 和 PVC 上创建一个专用文件夹时,即可找到这个值。
例如:
oc edit dc cephfs-write-workload-generator-no-cache -n testnamespace
$ oc edit dc cephfs-write-workload-generator-no-cache -n testnamespace
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Copy to Clipboard Copied! Toggle word wrap Toggle overflow
确保正确在部署配置中的 SELinux 标签中使用安全上下文:
oc get dc <pod_name> -n <application_namespace> -o yaml | grep -A 2 securityContext
$ oc get dc <pod_name> -n <application_namespace> -o yaml | grep -A 2 securityContext
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 例如"
oc get dc cephfs-write-workload-generator-no-cache -n testnamespace -o yaml | grep -A 2 securityContext
$ oc get dc cephfs-write-workload-generator-no-cache -n testnamespace -o yaml | grep -A 2 securityContext securityContext: seLinuxOptions: level: s0:c26,c0
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 传统应用程序重启并开始使用与
openshift-storage
命名空间相同的 SELinux 标签。
第 5 章 保护多云对象网关 复制链接链接已复制到粘贴板!
5.1. 更改默认帐户凭证以确保在 Multicloud 对象网关中提高安全性 复制链接链接已复制到粘贴板!
使用命令行界面更改并轮转 Multicloud 对象网关(MCG)帐户凭证,以防止应用程序出现问题,并确保帐户安全性。
5.1.1. 重置 noobaa 帐户密码 复制链接链接已复制到粘贴板!
先决条件
- 正在运行的 OpenShift Data Foundation 集群。
- 下载 Multicloud 对象网关(MCG)命令行界面以便更轻松地管理。具体步骤请参阅 使用应用程序访问多云对象网关。
流程
要重置 noobaa 帐户密码,请运行以下命令:
noobaa account passwd <noobaa_account_name> [options]
$ noobaa account passwd <noobaa_account_name> [options]
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Copy to Clipboard Copied! Toggle word wrap Toggle overflow Example:
noobaa account passwd admin@noobaa.io
$ noobaa account passwd admin@noobaa.io
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 重要要从终端访问 admin 帐户凭证,请运行
noobaa status
命令:Copy to Clipboard Copied! Toggle word wrap Toggle overflow
5.1.2. 为帐户重新生成 S3 凭证 复制链接链接已复制到粘贴板!
先决条件
- 正在运行的 OpenShift Data Foundation 集群。
- 下载 Multicloud 对象网关(MCG)命令行界面以便更轻松地管理。具体步骤请参阅 使用应用程序访问多云对象网关。
流程
获取帐户名称。
要列出帐户,请运行以下命令:
noobaa account list
$ noobaa account list
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例:
NAME DEFAULT_RESOURCE PHASE AGE account-test noobaa-default-backing-store Ready 14m17s test2 noobaa-default-backing-store Ready 3m12s
NAME DEFAULT_RESOURCE PHASE AGE account-test noobaa-default-backing-store Ready 14m17s test2 noobaa-default-backing-store Ready 3m12s
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 或者,从终端运行
oc get noobaaaccount
命令:oc get noobaaaccount
$ oc get noobaaaccount
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例:
NAME PHASE AGE account-test Ready 15m test2 Ready 3m59s
NAME PHASE AGE account-test Ready 15m test2 Ready 3m59s
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 要重新生成 noobaa 帐户 S3 凭证,请运行以下命令:
noobaa account regenerate <noobaa_account_name> [options]
$ noobaa account regenerate <noobaa_account_name> [options]
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行
noobaa account regenerate
命令后,它会提示您一个警告,"This will invalidate all connections between S3 clients and NooBaa which are connected using the current credentials.",并要求确认:Example:
noobaa account regenerate account-test
$ noobaa account regenerate account-test
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例:
INFO[0000] You are about to regenerate an account's security credentials. INFO[0000] This will invalidate all connections between S3 clients and NooBaa which are connected using the current credentials. INFO[0000] are you sure? y/n
INFO[0000] You are about to regenerate an account's security credentials. INFO[0000] This will invalidate all connections between S3 clients and NooBaa which are connected using the current credentials. INFO[0000] are you sure? y/n
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 批准后,它会重新生成凭证并最终打印它们:
INFO[0015] ✅ Exists: Secret "noobaa-account-account-test" Connection info: AWS_ACCESS_KEY_ID : *** AWS_SECRET_ACCESS_KEY : ***
INFO[0015] ✅ Exists: Secret "noobaa-account-account-test" Connection info: AWS_ACCESS_KEY_ID : *** AWS_SECRET_ACCESS_KEY : ***
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
5.1.3. 为 OBC 重新生成 S3 凭证 复制链接链接已复制到粘贴板!
先决条件
- 正在运行的 OpenShift Data Foundation 集群。
- 下载 Multicloud 对象网关(MCG)命令行界面以便更轻松地管理。具体步骤请参阅 使用应用程序访问多云对象网关。
流程
要获取 OBC 名称,请运行以下命令:
noobaa obc list
$ noobaa obc list
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例:
NAMESPACE NAME BUCKET-NAME STORAGE-CLASS BUCKET-CLASS PHASE default obc-test obc-test-35800e50-8978-461f-b7e0-7793080e26ba default.noobaa.io noobaa-default-bucket-class Bound
NAMESPACE NAME BUCKET-NAME STORAGE-CLASS BUCKET-CLASS PHASE default obc-test obc-test-35800e50-8978-461f-b7e0-7793080e26ba default.noobaa.io noobaa-default-bucket-class Bound
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 或者,从终端运行
oc get obc
命令:oc get obc
$ oc get obc
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例:
NAME STORAGE-CLASS PHASE AGE obc-test default.noobaa.io Bound 38s
NAME STORAGE-CLASS PHASE AGE obc-test default.noobaa.io Bound 38s
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 要重新生成 noobaa OBC S3 凭证,请运行以下命令:
noobaa obc regenerate <bucket_claim_name> [options]
$ noobaa obc regenerate <bucket_claim_name> [options]
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行
noobaa obc regenerate
命令后,它将提示警告,"This will invalidate all connections between the S3 clients and noobaa which are connected using the current credentials.",并要求确认:Example:
noobaa obc regenerate obc-test
$ noobaa obc regenerate obc-test
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例:
INFO[0000] You are about to regenerate an OBC's security credentials. INFO[0000] This will invalidate all connections between S3 clients and NooBaa which are connected using the current credentials. INFO[0000] are you sure? y/n
INFO[0000] You are about to regenerate an OBC's security credentials. INFO[0000] This will invalidate all connections between S3 clients and NooBaa which are connected using the current credentials. INFO[0000] are you sure? y/n
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 批准后,它会重新生成凭证并最终打印它们:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
5.2. 为多云对象网关启用安全模式部署 复制链接链接已复制到粘贴板!
您可以指定允许连接到 Multicloud Object Gateway (MCG)负载均衡器服务启用安全模式部署的 IP 地址的范围。这有助于控制可以访问 MCG 服务的 IP 地址。
您可以在使用命令行界面部署 OpenShift Data Foundation 时,通过在 storagecluster 自定义资源定义(CRD)中设置 disableLoadBalancerService
变量来禁用 MCG 负载均衡器的使用。这有助于限制 MCG 为私有集群创建任何公共资源,并禁用 MCG 服务 EXTERNAL-IP
。如需更多信息,请参阅 Red Hat 知识库文章,使用命令行界面以内部模式安装 Red Hat OpenShift Data Foundation 4.X。有关在部署 OpenShift Data Foundation 后禁用 MCG 负载均衡器服务的详情,请参考部署 OpenShift Data Foundation 后禁用多云对象网关外部服务。
先决条件
- 正在运行的 OpenShift Data Foundation 集群。
-
如果是裸机部署,请确保负载均衡器控制器支持在 Kubernetes 服务中设置
loadBalancerSourceRanges
属性。
流程
编辑 NooBaa 自定义资源 (CR),以指定在部署 OpenShift Data Foundation 后可以访问 MCG 服务的 IP 地址范围。
oc edit noobaa -n openshift-storage noobaa
$ oc edit noobaa -n openshift-storage noobaa
Copy to Clipboard Copied! Toggle word wrap Toggle overflow noobaa
- 控制 NooBaa 系统部署的 NooBaa CR 类型。
noobaa
NooBaa CR 的名称。
例如:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow loadBalancerSourceSubnets
可以在 NooBaa CR 的
spec
下添加一个新的字段,以指定应该可以访问 NooBaa 服务的 IP 地址。在本例中,位于子网 10.0.0.0/16 或 192.168.10.0/32 中的所有 IP 地址都可以访问 MCG S3 和安全令牌服务(STS),而不允许其他 IP 地址访问。
验证步骤
要验证是否设置了指定的 IP 地址,在 OpenShift Web 控制台中运行以下命令,检查输出是否与 MCG 提供的 IP 地址匹配:
oc get svc -n openshift-storage <s3 | sts> -o=go-template='{{ .spec.loadBalancerSourceRanges }}'
$ oc get svc -n openshift-storage <s3 | sts> -o=go-template='{{ .spec.loadBalancerSourceRanges }}'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
第 6 章 混合和多云存储桶的镜像数据 复制链接链接已复制到粘贴板!
您可以使用 Multicloud Object Gateway(MCG)简化流程跨云供应商和集群跨数据。在创建反映数据管理策略和镜像的存储桶类前,您必须添加可以被 MCG 使用的后备存储。如需更多信息,请参阅第 4 章 第 3 章 为混合或多云添加存储资源。
您可以使用 OpenShift UI、YAML 或 MCG 命令行界面设置镜像数据。
请参见以下部分:
6.1. 使用 MCG 命令行创建存储桶类来镜像数据 复制链接链接已复制到粘贴板!
先决条件
- 确保下载 Multicloud 对象网关(MCG)命令行界面。
流程
在 Multicloud Object Gateway(MCG)命令行界面中,运行以下命令来创建带有镜像策略的存储桶类:
noobaa bucketclass create placement-bucketclass mirror-to-aws --backingstores=azure-resource,aws-resource --placement Mirror
$ noobaa bucketclass create placement-bucketclass mirror-to-aws --backingstores=azure-resource,aws-resource --placement Mirror
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将新创建的存储桶类设置为一个新的存储桶声明,生成一个新的存储桶,该存储桶将在两个位置之间进行镜像:
noobaa obc create mirrored-bucket --bucketclass=mirror-to-aws
$ noobaa obc create mirrored-bucket --bucketclass=mirror-to-aws
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
6.2. 使用 YAML 创建存储桶类来镜像数据 复制链接链接已复制到粘贴板!
应用以下 YAML。此 YAML 是一个混合示例,在本地 Ceph 存储和 AWS 之间镜像数据:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将以下行添加到标准 Object Bucket Claim (OBC) 中:
additionalConfig: bucketclass: mirror-to-aws
additionalConfig: bucketclass: mirror-to-aws
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 有关 OBCs 的更多信息,请参阅 第 9 章 对象 Bucket 声明。
第 7 章 Multicloud 对象网关中的存储桶策略 复制链接链接已复制到粘贴板!
OpenShift Data Foundation 支持 AWS S3 存储桶策略。bucket 策略允许您为用户授予存储桶及其对象的访问权限。
7.1. bucket 策略简介 复制链接链接已复制到粘贴板!
bucket 策略是一个访问策略选项,可供您向 AWS S3 存储桶和对象授予权限。bucket 策略使用基于 JSON 的访问策略语言。有关访问策略语言的更多信息,请参阅AWS 访问策略语言概述。
7.2. 在 Multicloud 对象网关中使用存储桶策略 复制链接链接已复制到粘贴板!
先决条件
- 正在运行的 OpenShift Data Foundation 平台。
- 访问 Multicloud 对象网关(MCG),请参阅 第 2 章 使用应用程序访问多云对象网关。
- 有效的 Multicloud 对象网关用户帐户。有关创建用户帐户的说明 ,请参阅在 Multicloud 对象网关中创建用户。
流程
在 MCG 中使用存储桶策略:
以 JSON 格式创建 bucket 策略。
例如:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 使用有效的 Multicloud Object Gateway 用户帐户替换
john.doe@example.com
。使用 AWS S3 客户端,使用
put-bucket-policy
命令将存储桶策略应用到 S3 存储桶:aws --endpoint ENDPOINT --no-verify-ssl s3api put-bucket-policy --bucket MyBucket --policy file://BucketPolicy
# aws --endpoint ENDPOINT --no-verify-ssl s3api put-bucket-policy --bucket MyBucket --policy file://BucketPolicy
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
将
ENDPOINT
替换为 S3 端点。 -
将
MyBucket
替换为 bucket,以设置策略。 -
将
BucketPolicy
替换为 bucket 策略 JSON 文件。 如果您使用默认的自签名证书,请添加
--no-verify-ssl
。例如:
aws --endpoint https://s3-openshift-storage.apps.gogo44.noobaa.org --no-verify-ssl s3api put-bucket-policy -bucket MyBucket --policy file://BucketPolicy
# aws --endpoint https://s3-openshift-storage.apps.gogo44.noobaa.org --no-verify-ssl s3api put-bucket-policy -bucket MyBucket --policy file://BucketPolicy
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 如需有关
put-bucket-policy
命令的更多信息,请参阅有关 put-bucket-policy 的 AWS CLI 命令参考。注意principal 元素指定允许或拒绝访问某一资源的用户,如存储桶。目前,只有 NooBaa 帐户才能用作主体。对于对象存储桶声明,NooBaa 会自动创建一个帐户
obc-account.<generated bucket name>@noobaa.io
。注意不支持 bucket 策略条件。
-
将
其他资源
- bucket 策略有许多可用元素,与访问权限有关。
- 有关这些元素的详细信息,以及如何使用它们控制访问权限的示例,请参阅 AWS 访问策略语言概述。
- 如需存储桶策略的更多示例,请参阅 AWS Bucket 策略示例。
7.3. 在 Multicloud 对象网关中创建用户 复制链接链接已复制到粘贴板!
先决条件
- 正在运行的 OpenShift Data Foundation 平台。
下载 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 或者,您也可以从 下载红帽 OpenShift Data Foundation 页面上的 OpenShift Data Foundation RPM 安装 MCG 软件包。
注意根据您的架构选择正确的产品变体。
流程
执行以下命令创建一个 MCG 用户帐户:
noobaa account create <noobaa-account-name> [--allow_bucket_create=true] [--default_resource='']
noobaa account create <noobaa-account-name> [--allow_bucket_create=true] [--default_resource='']
<noobaa-account-name>
- 指定新 MCG 用户帐户的名称。
--allow_bucket_create
- 允许用户创建新存储桶。
--default_resource
- 设置默认资源。新存储桶在此默认资源(包括将来的资源)上创建新的 bucket。
要授予对 MCG 帐户的某些存储桶的访问权限,请使用 AWS S3 存储桶策略。如需更多信息,请参阅 AWS 文档中的使用存储桶策略。
第 8 章 多云对象网关存储桶复制 复制链接链接已复制到粘贴板!
从一个多云对象网关(MCG)存储桶向另一个 MCG 存储桶的数据复制提供了更高的弹性和更好的协作选项。这些存储桶可以是由任何受支持的存储解决方案(AWS S3、Azure 等)支持的数据存储桶或命名空间存储桶。
复制策略由复制规则列表组成。每条规则定义目的地桶,并可基于对象密钥前缀指定过滤器。在第二个 bucket 上配置补充复制策略会导致双向复制。
先决条件
- 正在运行的 OpenShift Data Foundation 平台。
- 访问多云对象网关,请参阅第使用应用程序访问多云对象网关。
下载 Multicloud 对象网关 (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 另外,您还可以从位于 https://access.redhat.com/downloads/content/547/ver=4/rhel---8/4/x86_64/packages 的 OpenShift Data Foundation RPM 安装
mcg
软件包重要根据您的架构选择正确的产品变体。
注意某些特定的 MCG 功能仅在某些 MCG 版本中可用,必须使用适当的 MCG CLI 工具版本来充分利用 MCG 的功能。
要复制存储桶,请参阅将存储桶复制到另一个存储桶。
要设置存储桶类复制策略,请参阅设置存储桶类复制策略。
8.1. 将存储桶复制到其他存储桶 复制链接链接已复制到粘贴板!
您可以通过两种方式设置存储桶复制策略:
8.1.1. 使用 MCG 命令行界面将存储桶复制到另一个存储桶 复制链接链接已复制到粘贴板!
在创建对象存储桶声明(OBC)时,您可以为多云对象网关(MCG)数据存储桶设置复制策略。您必须在 JSON 文件中定义复制策略参数。
流程
在 MCG 命令行界面中,运行以下命令来创建具有特定复制策略的 OBC:
noobaa obc create <bucket-claim-name> -n openshift-storage --replication-policy /path/to/json-file.json
noobaa obc create <bucket-claim-name> -n openshift-storage --replication-policy /path/to/json-file.json
<bucket-claim-name>
- 指定存储桶声明的名称。
/path/to/json-file.json
- 是定义复制策略的 JSON 文件的路径。
JSON 文件示例:
[{ "rule_id": "rule-1", "destination_bucket": "first.bucket", "filter": {"prefix": "repl"}}]
[{ "rule_id": "rule-1", "destination_bucket": "first.bucket", "filter": {"prefix": "repl"}}]
"prefix"
-
是可选的。它是要复制的对象键的前缀,甚至可以留空,例如
{"prefix": ""}
。
例如:
noobaa obc create my-bucket-claim -n openshift-storage --replication-policy /path/to/json-file.json
noobaa obc create my-bucket-claim -n openshift-storage --replication-policy /path/to/json-file.json
8.1.2. 使用 YAML 将存储桶复制到另一个存储桶 复制链接链接已复制到粘贴板!
您可以在创建对象存储桶声明(OBC)时为多云对象网关(MCG)数据存储桶设置复制策略,也可以在以后编辑 YAML。您必须将策略作为 JSON 兼容字符串提供,以遵循以下流程中显示的格式。
流程
应用以下 YAML:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow <desired-bucket-claim>
- 指定存储桶声明的名称。
<desired-namespace>
- 指定命名空间。
<desired-bucket-name>
- 指定存储桶名称的前缀。
"rule_id"
-
指定规则的 ID 号,例如
{"rule_id": "rule-1"}
。 "destination_bucket"
-
指定目标存储桶的名称,例如
{"destination_bucket": "first.bucket"}
。 "prefix"
-
是可选的。它是要复制的对象键的前缀,甚至可以留空,例如
{"prefix": ""}
。
附加信息
- 如需有关 OBC 的更多信息,请参阅 Object Bucket Claim。
8.2. 设置存储桶类复制策略 复制链接链接已复制到粘贴板!
可以设置一个复制策略,它自动应用到在特定存储桶类下创建的所有存储桶。您可以通过两种方式执行此操作:
8.2.1. 使用 MCG 命令行界面设置存储桶类复制策略 复制链接链接已复制到粘贴板!
您可以在创建存储桶类时为多云对象网关(MCG)数据存储桶设置复制策略。您必须在 JSON 文件中定义 replication-policy
参数。您可以为 Placement 和 Namespace bucket 类设置存储桶类复制策略。
您可以为 Placement 和 Namespace bucket 类设置存储桶类复制策略。
流程
在 MCG 命令行界面中运行以下命令:
noobaa -n openshift-storage bucketclass create placement-bucketclass <bucketclass-name> --backingstores <backingstores> --replication-policy=/path/to/json-file.json
noobaa -n openshift-storage bucketclass create placement-bucketclass <bucketclass-name> --backingstores <backingstores> --replication-policy=/path/to/json-file.json
Copy to Clipboard Copied! Toggle word wrap Toggle overflow <bucketclass-name>
- 指定存储桶类的名称。
<backingstores>
- 指定后备存储的名称。您可以传递多个以逗号分开的后备存储。
/path/to/json-file.json
是定义复制策略的 JSON 文件的路径。
JSON 文件示例:
[{ "rule_id": "rule-1", "destination_bucket": "first.bucket", "filter": {"prefix": "repl"}}]
[{ "rule_id": "rule-1", "destination_bucket": "first.bucket", "filter": {"prefix": "repl"}}]
Copy to Clipboard Copied! Toggle word wrap Toggle overflow "prefix"
是可选的。对象密钥的前缀会被复制。您可以将其留空,例如
{"prefix": ""}
。例如:
noobaa -n openshift-storage bucketclass create placement-bucketclass bc --backingstores azure-blob-ns --replication-policy=/path/to/json-file.json
noobaa -n openshift-storage bucketclass create placement-bucketclass bc --backingstores azure-blob-ns --replication-policy=/path/to/json-file.json
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 本例使用 JSON 文件中定义的特定复制策略创建放置存储桶类。
8.2.2. 使用 YAML 设置存储桶类复制策略 复制链接链接已复制到粘贴板!
您可以在创建存储桶类时为多云对象网关(MCG)数据存储桶设置复制策略,也可以在以后编辑其 YAML。您必须将策略作为 JSON 兼容字符串提供,以遵循以下流程中显示的格式。
流程
应用以下 YAML:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 此 YAML 是一个创建放置存储桶类的示例。每个上传到存储桶的对象存储桶声明(OBC)对象根据前缀进行过滤,并将其复制到
first.bucket
。<desired-app-label>
- 为 app 指定一个标签。
<desired-bucketclass-name>
- 指定存储桶类名称。
<desired-namespace>
- 指定创建存储桶类的命名空间。
<backingstore>
- 指定后备存储的名称。您可以传递多个后备存储。
"rule_id"
-
指定规则的 ID 号,如
'{"rule_id": "rule-1"}
。 "destination_bucket"
-
指定目标存储桶的名称,例如
{"destination_bucket": "first.bucket"}
。 "prefix"
-
是可选的。对象密钥的前缀会被复制。您可以将其留空,例如
{"prefix": ""}
。
8.3. 启用基于日志的存储桶复制 复制链接链接已复制到粘贴板!
在创建存储桶复制策略时,您可以使用日志,以便更快地复制最新的数据,而默认的基于扫描的复制则适用于复制其余数据。
此功能需要在 AWS 或 Azure 上设置存储桶日志。有关设置 AWS 日志的更多信息,请参阅启用 Amazon S3 服务器访问日志记录。AWS 日志存储桶需要在与源 NamespaceStore AWS 存储桶相同的区域中创建。
此功能仅支持由 NamespaceStore 支持的存储桶。由 BackingStores 支持的存储桶无法使用基于日志的复制。
您可以使用 Amazon Web Service (AWS)云环境的事件日志来优化复制。在创建命名空间存储桶期间,您可以使用 Web 控制台为新命名空间存储桶启用基于日志的存储桶复制。
先决条件
- 确保 AWS 中启用了对象日志记录。如需更多信息,请参阅启用 Amazon S3 服务器访问日志记录 中的"使用 S3 控制台"部分。
- 管理员对 OpenShift Web 控制台的访问权限。
流程
- 在 OpenShift Web 控制台中,导航到 Storage → Object Storage → Object Bucket Claims。
- 点 Create ObjectBucketClaim。
- 输入 ObjectBucketName 的名称,然后选择 StorageClass 和 BucketClass。
- 选择 Enable replication 复选框来启用复制。
- 在 Replication policy 部分中,选择 Optimize replication using event logs 复选框。
输入包含 Event log Bucket 下的日志的存储桶名称。
如果日志没有存储在存储桶的根目录中,请提供不带
s3://
的完整路径。- 输入前缀来仅复制名称以给定前缀开头的对象。
8.3.2. 使用 YAML 为现有命名空间存储桶启用基于日志的存储桶复制 复制链接链接已复制到粘贴板!
您可以使用命令行界面或应用 YAML 而不是使用 AWS S3 命令创建的存储桶,为现有存储桶启用基于日志的存储桶复制。
流程
编辑存储桶的 OBC 的 YAML,以启用基于日志的存储桶复制。在
spec
下添加以下内容:replicationPolicy: '{"rules":[{"rule_id":"<RULE ID>", "destination_bucket":"<DEST>", "filter": {"prefix": "<PREFIX>"}}], "log_replication_info": {"logs_location": {"logs_bucket": "<LOGS_BUCKET>"}}}'
replicationPolicy: '{"rules":[{"rule_id":"<RULE ID>", "destination_bucket":"<DEST>", "filter": {"prefix": "<PREFIX>"}}], "log_replication_info": {"logs_location": {"logs_bucket": "<LOGS_BUCKET>"}}}'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
也可以在创建 OBC 前将其添加到 OBC 的 YAML 中。
rule_id
- 指定您选择的 ID 来识别规则
destination_bucket
- 指定对象要复制到的目标 MCG 存储桶的名称
- (optional)
{"filter": {"prefix": <>}}
- 指定您可以设置的前缀字符串来过滤复制的对象
log_replication_info
-
指定一个对象,其中包含与基于日志的复制优化相关的数据。
{"logs_location": {"logs_bucket": <>}}
设置为 AWS S3 服务器访问日志的位置。
8.3.3. 在 Microsoft Azure 中启用基于日志的存储桶复制 复制链接链接已复制到粘贴板!
先决条件
请参阅 Microsoft Azure 文档,并确保您已在 Microsoft Azure 门户中完成以下任务:
确保已创建了新应用程序,并记下名称、应用程序(客户端)ID 和目录(租户)ID。
如需更多信息,请参阅 注册应用程序。
- 确保创建了新的客户端 secret,并记下应用程序 secret。
确保创建了新的 Log Analytics 工作区,并且记下了其名称和工作区 ID。
如需更多信息,请参阅创建日志分析工作区。
确保在 Access control 和 members 下分配了
Reader
角色,并且提供了您在上一步中注册的应用的名称。如需更多信息,请参阅使用 Azure 门户分配 Azure 角色。
- 确保创建了新的存储帐户,并且记录 Access 密钥。
在创建的存储帐户的 Monitoring 部分中,选择一个 blob,在 Diagnostic settings 屏幕中,仅选择
StorageWrite
和StorageDelete
,在目标详情中添加之前创建的 Log Analytics 工作区。确保在所创建存储帐户的 Monitoring 部分的 Diagnostic settings 屏幕中选择了 blob。另外,请确保只选择StorageWrite
和StorageDelete
,目标详情中会添加之前创建的 Log Analytics 工作区。如需更多信息,请参阅 Azure Monitor 中的诊断设置。
- 确保创建了用于对象源和对象目的地的两个新容器。
- 管理员对 OpenShift Web 控制台的访问权限。
流程
使用命名空间
存储
要使用的凭证创建一个 secret。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 创建由 Azure 中创建的容器支持的
NamespaceStore
。- 创建一个新的 Namespace-Bucketclass 和 OBC 来使用它。
-
通过查找目标 OBC 的 YAML 或列出所有 S3 存储桶,如
- s3 ls
来检查对象存储桶名称。 通过在 YAML
.spec
下添加以下内容,使用以下模板在源 OBC 上应用 Azure 复制策略:replicationPolicy:'{"rules":[ {"rule_id":"ID goes here", "sync_deletions": "<true or false>"", "destination_bucket":object bucket name"} ], "log_replication_info":{"endpoint_type":"AZURE"}}'
replicationPolicy:'{"rules":[ {"rule_id":"ID goes here", "sync_deletions": "<true or false>"", "destination_bucket":object bucket name"} ], "log_replication_info":{"endpoint_type":"AZURE"}}'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow sync_deletion
-
指定布尔值
true
或false
。 destination_bucket
-
确保使用对象存储桶的名称,而不是声明。可以使用
s3 ls
命令或通过在 OBC 的 YAML 中查找值来检索名称。
验证步骤
- 将对象写入源存储桶。
- 等待 MCG 复制它们。
- 从源存储桶中删除对象。
- 验证对象已从目标存储桶中删除。
8.3.4. 启用基于日志的存储桶复制删除 复制链接链接已复制到粘贴板!
先决条件
- 管理员对 OpenShift Web 控制台的访问权限。
- 为所需存储桶配置的 AWS Server Access Logging。
流程
- 在 OpenShift Web 控制台中,导航到 Storage → Object Storage → Object Bucket Claims。
- 点 Create new Object bucket claim。
- (可选)在 Replication rules 部分中,为每个规则分别选中 Sync deletion 复选框。
输入包含 Event log Bucket 下的日志的存储桶名称。
如果日志没有存储在存储桶的根目录中,请提供不带
s3://
的完整路径。- 输入前缀来仅复制名称以给定前缀开头的对象。
第 9 章 对象 Bucket 声明 复制链接链接已复制到粘贴板!
Object Bucket Claim 可以用来为您的工作负载请求 S3 兼容存储桶后端。
您可以通过三种方式创建对象 Bucket 声明:
对象 bucket 声明在 NooBaa 中创建一个新 bucket 和应用帐户,其具有存储桶的权限,包括新的 access key 和 secret access key。应用程序帐户仅允许访问单个存储桶,默认情况下无法创建新的存储桶。
9.1. 动态对象 Bucket 声明 复制链接链接已复制到粘贴板!
与持久卷类似,您可以将 Object Bucket 声明(OBC)的详细信息添加到应用的 YAML 中,并获取配置映射和机密中可用的对象服务端点、访问密钥和 secret 访问密钥。可在应用程序的环境变量中动态阅读此信息。
只有在 OpenShift 使用自签名证书时,多云对象网关端点才会使用自签名证书。在 OpenShift 中使用签名证书自动将 Multicloud Object Gateway 端点证书替换为签名证书。通过浏览器访问端点,获取多云对象网关当前使用的证书。如需更多信息,请参阅使用应用程序访问多云对象网关。
流程
在应用程序 YAML 中添加以下行:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 这些线是 OBC 本身。
-
将
<obc-name>
替换为唯一的 OBC 名称。 -
将
<obc-bucket-name>
替换为 OBC 的唯一存储桶名称。
-
将
若要自动使用 OBC 将更多行添加到 YAML 文件。
例如:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 以下示例是存储桶声明结果之间的映射,这是一个带有凭证数据和 secret 的配置映射。此特定作业从 NooBaa 声明 Object Bucket,它将创建一个存储桶和帐户。
-
将
<obc-name>
的所有实例替换为您的 OBC 名称。 -
将
<your application image>
替换为您的应用程序镜像。
-
将
应用更新的 YAML 文件:
oc apply -f <yaml.file>
# oc apply -f <yaml.file>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将
<yaml.file>
替换为 YAML 文件的名称。要查看新配置映射,请运行以下命令:
oc get cm <obc-name> -o yaml
# oc get cm <obc-name> -o yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将
obc-name
替换为您的 OBC 的名称。您可以在输出中预期以下环境变量:
-
BUCKET_HOST
- 应用程序中使用的端点。 BUCKET_PORT
- 可供应用使用的端口。-
端口与
BUCKET_HOST
相关。例如,如果BUCKET_HOST
是 https://my.example.com,BUCKET_PORT
为 443,则对象服务的端点将是 https://my.example.com:443。
-
端口与
-
BUCKET_NAME
- 请求或生成的存储桶名称。 -
AWS_ACCESS_KEY_ID
- 作为凭据一部分的访问密钥。 -
AWS_SECRET_ACCESS_KEY
- 属于凭据的 Secret 访问密钥。
-
获取 AWS_ACCESS_KEY_ID
和 AWS_SECRET_ACCESS_KEY
。使用名称以便与 AWS S3 API 兼容。您需要在执行 S3 操作时指定密钥,特别是从多云对象网关(MCG)存储桶中读取、写入或列表时。密钥以 Base64 编码。解码密钥,然后才能使用它们。
oc get secret <obc_name> -o yaml
# oc get secret <obc_name> -o yaml
<obc_name>
- 指定对象存储桶声明的名称。
9.2. 使用命令行界面创建对象 Bucket 声明 复制链接链接已复制到粘贴板!
在使用命令行界面创建对象 Bucket 声明(OBC)时,您会获得一个配置映射和一个 Secret,其中包含应用使用对象存储服务所需的所有信息。
先决条件
下载多云对象网关(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
流程
使用命令行界面生成新 bucket 和凭据的详细信息。
运行以下命令:
noobaa obc create <obc-name> -n openshift-storage
# noobaa obc create <obc-name> -n openshift-storage
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将
<obc-name>
替换为唯一的 OBC 名称,如myappobc
。另外,您可以使用
--app-namespace
选项指定创建 OBC 配置映射和 secret 的命名空间,如myapp-namespace
。例如:
INFO[0001] ✅ Created: ObjectBucketClaim "test21obc"
INFO[0001] ✅ Created: ObjectBucketClaim "test21obc"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow MCG 命令行界面已创建了必要的配置,并已向 OpenShift 告知新的 OBC。
运行以下命令来查看 OBC:
oc get obc -n openshift-storage
# oc get obc -n openshift-storage
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 例如:
NAME STORAGE-CLASS PHASE AGE test21obc openshift-storage.noobaa.io Bound 38s
NAME STORAGE-CLASS PHASE AGE test21obc openshift-storage.noobaa.io Bound 38s
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令查看新 OBC 的 YAML 文件:
oc get obc test21obc -o yaml -n openshift-storage
# oc get obc test21obc -o yaml -n openshift-storage
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 例如:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在
openshift-storage
命名空间内,您可以找到配置映射和 secret 来使用此 OBC。CM 和 secret 的名称与 OBC 相同。运行以下命令来查看 secret:
oc get -n openshift-storage secret test21obc -o yaml
# oc get -n openshift-storage secret test21obc -o yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 例如:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 该机密为您提供了 S3 访问凭据。
运行以下命令来查看配置映射:
oc get -n openshift-storage cm test21obc -o yaml
# oc get -n openshift-storage cm test21obc -o yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 例如:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 配置映射包含应用的 S3 端点信息。
9.3. 使用 OpenShift Web 控制台创建对象 Bucket 声明 复制链接链接已复制到粘贴板!
您可以使用 OpenShift Web 控制台创建对象 BucketClaim (OBC)。
先决条件
- 对 OpenShift Web 控制台的管理访问权限.
- 为了让您的应用程序与 OBC 通信,您需要使用 configmap 和 secret。有关此信息的详情请参考 第 9.1 节 “动态对象 Bucket 声明”。
流程
- 登录 OpenShift Web 控制台。
在左侧导航栏中,点击 Storage → Object Storage → Object Bucket Claims → Create Object Bucket Claim。
输入对象存储桶声明的名称,并根据您的部署(内部或外部)从下拉菜单中选择适当的存储类:
- 内部模式
以下存储类是在部署后创建的,可供使用:
-
OCS-storagecluster-ceph-rgw
使用 Ceph 对象网关 (RGW) -
openshift-storage.noobaa.io
使用 Multicloud 对象网关(MCG)
-
- 外部模式
以下存储类是在部署后创建的,可供使用:
-
ocs-external-storagecluster-ceph-rgw
使用 RGW openshift-storage.noobaa.io
使用 MCG注意RGW OBC 存储类仅可用于全新安装的 OpenShift Data Foundation 版本 4.5。它不适用于从以前的 OpenShift 数据基础版本升级的集群。
-
点 Create。
创建 OBC 后,您会被重定向到其详情页面。
9.4. 将对象 Bucket 声明附加到部署 复制链接链接已复制到粘贴板!
创建后,对象 Bucket 声明 (OBC) 可以附加到特定的部署。
先决条件
- 对 OpenShift Web 控制台的管理访问权限.
流程
- 在左侧导航栏中,点击 Storage → Object Storage → Object Bucket Claims。
单击您创建的 OBC 旁边的操作菜单 (⋮)。
- 从下拉菜单中选择 Attach to Deployment。
- 从 Deployment Name 列表中选择所需的部署,然后单击 Attach。
9.5. 使用 OpenShift Web 控制台查看对象存储桶 复制链接链接已复制到粘贴板!
您可以使用 OpenShift Web 控制台查看为对象 Bucket 声明 (OBC) 创建的对象存储桶详情。
先决条件
- 对 OpenShift Web 控制台的管理访问权限.
流程
- 登录 OpenShift Web 控制台。
在左侧导航栏中,点击 Storage → Object Storage → Object Buckets。
可选:您还可以进入到特定 OBC 的详细信息页面,再点 Resource 链接来查看该 OBC 的对象存储桶。
- 选择您要查看详情的对象存储桶。选择后,您将进入 Object Bucket Details 页面。
9.6. 删除对象 Bucket 声明 复制链接链接已复制到粘贴板!
先决条件
- 对 OpenShift Web 控制台的管理访问权限.
流程
- 在左侧导航栏中,点击 Storage → Object Storage → Object Bucket Claims。
点击您要删除的 Object Bucket Claim(OBC ) 旁边的 Action 菜单 (⋮)。
- 选择 Delete Object Bucket Claim。
- 点 Delete。
第 10 章 对象存储桶的缓存策略 复制链接链接已复制到粘贴板!
缓存存储桶是带有 hub 目标和缓存目标的命名空间存储桶。hub 目标是一个 S3 兼容的大型对象存储桶。缓存存储桶是本地多云对象网关(MCG)存储桶。您可以创建一个缓存存储桶来缓存 AWS 存储桶或 IBM COS 存储桶。
10.1. 创建 AWS 缓存存储桶 复制链接链接已复制到粘贴板!
先决条件
下载多云对象网关(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 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 软件包。
注意根据您的架构选择正确的产品变体。
流程
创建 NamespaceStore 资源。NamespaceStore 代表底层存储,用作 MCG 命名空间存储桶中数据的读取或写入目标。在 MCG 命令行界面中运行以下命令:
noobaa namespacestore create aws-s3 <namespacestore> --access-key <AWS ACCESS KEY> --secret-key <AWS SECRET ACCESS KEY> --target-bucket <bucket-name>
noobaa namespacestore create aws-s3 <namespacestore> --access-key <AWS ACCESS KEY> --secret-key <AWS SECRET ACCESS KEY> --target-bucket <bucket-name>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
将
<namespacestore>
替换为命名空间存储的名称。 -
将
<AWS ACCESS KEY>
和<AWS SECRET ACCESS KEY>
替换为您为此创建的 AWS 访问密钥 ID 和 secret 访问密钥。 将
<bucket-name>
替换为现有的 AWS 存储桶名称。此参数告知 MCG 将哪一个存储桶用作其后备存储的目标存储桶,以及随后数据存储和管理。您还可以通过应用 YAML 来添加存储资源。首先使用凭证创建 secret:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 您必须使用 Base64 提供并编码您自己的 AWS 访问密钥 ID 和 secret 访问密钥,并使用结果代替
<AWS ACCESS KEY ID ENCODED IN BASE64>
和<AWS SECRET ACCESS KEY ENCODED IN BASE64>
。使用一个唯一的名称替换
<namespacestore-secret-name>
。然后应用以下 YAML:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
将
<namespacestore>
替换为唯一的名称。 -
将
<namespacestore-secret-name>
替换为上一步中创建的 secret。 -
将
<namespace-secret>
替换为用于在上一步中创建 secret 的命名空间。 -
将
<target-bucket>
替换为您为命名空间存储创建的 AWS S3 存储桶。
-
将
运行以下命令来创建存储桶类:
noobaa bucketclass create namespace-bucketclass cache <my-cache-bucket-class> --backingstores <backing-store> --hub-resource <namespacestore>
noobaa bucketclass create namespace-bucketclass cache <my-cache-bucket-class> --backingstores <backing-store> --hub-resource <namespacestore>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
将
<my-cache-bucket-class>
替换为唯一的存储桶类名称。 -
将
<backing-store>
替换为相关的后备存储。您可以在此字段中列出一个或多个以逗号分开的后备存储。 -
将
<namespacestore>
替换为上一步中创建的命名空间存储。
-
将
运行以下命令,以使用 Object Bucket Claim (OBC) 资源创建 bucket,该资源使用第 2 步中定义的 bucket 类。
noobaa obc create <my-bucket-claim> my-app --bucketclass <custom-bucket-class>
noobaa obc create <my-bucket-claim> my-app --bucketclass <custom-bucket-class>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
将
<my-bucket-claim>
替换为唯一名称。 -
将
<custom-bucket-class>
替换为在第 2 步中创建的 bucket 类的名称。
-
将
10.2. 创建 IBM COS 缓存存储桶 复制链接链接已复制到粘贴板!
先决条件
下载多云对象网关(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 软件包。
注意根据您的架构选择正确的产品变体。
流程
创建 NamespaceStore 资源。NamespaceStore 代表底层存储,用作 MCG 命名空间存储桶中数据的读取或写入目标。在 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>
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>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
将
<namespacestore>
替换为 NamespaceStore 的名称。 -
将
<IBM ACCESS KEY>
、、<IBM SECRET ACCESS KEY>
、<IBM COS ENDPOINT>
替换为 IBM 访问密钥 ID、机密访问密钥和对应于现有 IBM 存储桶位置的适当区域端点。 将
<bucket-name>
替换为现有的 IBM 存储桶名称。此参数告知 MCG 将哪一个存储桶用作其后备存储的目标存储桶,以及随后数据存储和管理。您还可以通过应用 YAML 来添加存储资源。首先,使用凭证创建一个 secret:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 您必须使用 Base64 提供和编码您自己的 IBM COS 访问密钥 ID 和 secret 访问密钥,并使用结果代替
<IBM COS ACCESS KEY ID ENCODED IN BASE64>
和<IBM COS SECRET ACCESS KEY ENCODED IN BASE64>
。使用一个唯一的名称替换
<namespacestore-secret-name>
。然后应用以下 YAML:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
将
<namespacestore>
替换为唯一的名称。 -
将
<IBM COS ENDPOINT>
替换为适当的 IBM COS 端点。 -
将
<backingstore-secret-name>
替换为上一步中创建的 secret。 -
将
<namespace-secret>
替换为用于在上一步中创建 secret 的命名空间。 -
将
<target-bucket>
替换为您为命名空间存储创建的 AWS S3 存储桶。
-
将
运行以下命令来创建存储桶类:
noobaa bucketclass create namespace-bucketclass cache <my-bucket-class> --backingstores <backing-store> --hubResource <namespacestore>
noobaa bucketclass create namespace-bucketclass cache <my-bucket-class> --backingstores <backing-store> --hubResource <namespacestore>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
将
<my-bucket-class>
替换为唯一的存储桶类名称。 -
将
<backing-store>
替换为相关的后备存储。您可以在此字段中列出一个或多个以逗号分开的后备存储。 -
将
<namespacestore>
替换为上一步中创建的命名空间存储。
-
将
运行以下命令,以使用 Object Bucket Claim 资源创建 bucket,该资源使用第 2 步中定义的 bucket 类。
noobaa obc create <my-bucket-claim> my-app --bucketclass <custom-bucket-class>
noobaa obc create <my-bucket-claim> my-app --bucketclass <custom-bucket-class>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
将
<my-bucket-claim>
替换为唯一名称。 -
将
<custom-bucket-class>
替换为在第 2 步中创建的 bucket 类的名称。
-
将
第 11 章 Multicloud 对象网关中的生命周期存储桶配置 复制链接链接已复制到粘贴板!
Multicloud Object Gateway (MCG)生命周期提供了一种降低存储成本的方法,因为累积了数据对象。
删除已过期的对象是简化处理未使用的数据的方法。数据过期是 Amazon Web Services (AWS) 生命周期管理的一部分,并为自动删除设置过期日期。生命周期过期时间的最短时间仅为一天。如需更多信息,请参阅 过期对象。
AWS S3 API 用于在 MCG 中配置生命周期存储桶。有关数据存储桶 API 及其 支持级别的详情,请参考对多云对象网关数据存储桶 API 的支持。
与 AWS 相比,MCG 的 expiration 规则 API 有一些限制:
-
ExpiredObjectDeleteMarker
被接受,但没有处理。 - 没有定义特定非当前版本的过期条件的选项
第 12 章 扩展多云对象网关性能 复制链接链接已复制到粘贴板!
多云对象网关(MCG)的性能可能会因环境而异。在某些情况下,特定的应用需要更快的性能,这可以通过扩展 S3 端点来轻松解决。
MCG 资源池是一组 NooBaa 守护进程容器,默认启用两种类型的服务:
- 存储服务
- S3 端点服务
S3 端点服务
S3 端点是每个多云对象网关(MCG)默认提供的服务,用于处理 MCG 中的繁重数据摘要。端点服务处理内联数据块、重复数据删除、压缩和加密,它接受来 MCG 的数据放置指令。
12.1. 自动扩展 MultiCloud Object Gateway 端点 复制链接链接已复制到粘贴板!
当 MCG S3 服务的负载增加或减少时,MultiCloud Object Gateway(MCG)端点的数量会自动缩放。OpenShift 数据基础集群使用一个活跃的 MCG 端点进行部署。每个 MCG 端点 pod 都默认配置有 1 个 CPU 和 2Gi 内存请求,其限值与请求匹配。当端点上的 CPU 负载在固定时间段内超过 80% 用量阈值时,部署第二个端点会降低第一个端点的负载。当两个端点的平均 CPU 负载在固定时间段内低于 80% 阈值时,会删除其中一个端点。此功能提高了 MCG 的性能和可服务性。
您可以使用以下 oc patch
命令扩展 noobaa-endpoint
的 Horizontal Pod Autoscaler (HPA),例如:
oc patch -n openshift-storage storagecluster ocs-storagecluster \ --type merge \ --patch '{"spec": {"multiCloudGateway": {"endpoints": {"minCount": 3,"maxCount": 10}}}}'
# oc patch -n openshift-storage storagecluster ocs-storagecluster \
--type merge \
--patch '{"spec": {"multiCloudGateway": {"endpoints": {"minCount": 3,"maxCount": 10}}}}'
上面的示例将 minCount
设为 3
,maxCount 设为 '10
。
12.2. 为 PV 池资源增加 CPU 和内存 复制链接链接已复制到粘贴板!
MCG 默认配置支持低资源消耗。但是,当您需要提高 CPU 和内存以适应特定工作负载并增加工作负载的 MCG 性能时,您可以在 OpenShift Web 控制台中为 CPU 和内存配置所需的值。
流程
- 在 OpenShift Web 控制台中,导航到 Storage → Object Storage → Backing Store。
- 选择相关的后备存储并点击 YAML。
向下滚动,直到找到
spec:
并使用 CPU 和内存更新pvPool
。添加限制的新属性,然后添加 cpu 和 memory。参考示例:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 点 Save。
验证步骤
- 要验证,您可以检查 PV 池 pod 的资源值。
第 13 章 访问 RADOS 对象网关 S3 端点 复制链接链接已复制到粘贴板!
用户可以直接访问 RADOS 对象网关 (RGW) 端点。
在以前的 Red Hat OpenShift Data Foundation 版本中,需要手动公开的 RGW 服务来创建 RGW 公共路由。自 OpenShift Data Foundation 版本 4.7 起,默认情况下会创建 RGW 路由,并命名为 rook-ceph-rgw-ocs-storagecluster-cephobjectstore
。
第 14 章 使用 TLS 证书用于应用程序来访问 RGW 复制链接链接已复制到粘贴板!
大多数 S3 应用程序都需要 TLS 证书,如 Deployment 配置文件中包含的选项、作为请求中的文件传递,或者存储在 /etc/pki
路径中。
RADOS 对象网关 (RGW) 的 TLS 证书被存储为 Kubernetes 的 secret,您需要从 secret 中获取详细信息。
先决条件
正在运行的 OpenShift Data Foundation 集群。
流程
对于内部 RGW 服务器
从 kubernetes secret 获取 TLS 证书和密钥:
oc get secrets/<secret_name> -o jsonpath='{.data..tls\.crt}' | base64 -d oc get secrets/<secret_name> -o jsonpath='{.data..tls\.key}' | base64 -d
$ oc get secrets/<secret_name> -o jsonpath='{.data..tls\.crt}' | base64 -d $ oc get secrets/<secret_name> -o jsonpath='{.data..tls\.key}' | base64 -d
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - <secret_name>
-
默认 kubernetes secret 的名称为
<objectstore_name>-cos-ceph-rgw-tls-cert
。指定对象存储的名称。
对于外部 RGW 服务器
从 kubernetes secret 获取 TLS 证书:
oc get secrets/<secret_name> -o jsonpath='{.data.cert}' | base64 -d
$ oc get secrets/<secret_name> -o jsonpath='{.data.cert}' | base64 -d
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - <secret_name>
-
默认 kubernetes secret 的名称为
ceph-rgw-tls-cert
,它是一个不透明类型的 secret。用于存储 TLS 证书的键值是cert
。