8.2. 设置存储桶类复制策略
可以设置一个复制策略,它自动应用到在特定存储桶类下创建的所有存储桶。您可以通过两种方式执行此操作:
8.2.1. 使用 MCG 命令行界面设置存储桶类复制策略
要求多云对象网关(MCG)存储桶类的应用程序具有特定的复制策略,可以创建存储桶类
并在 JSON 文件中定义 replication-policy
参数。
可以为两种类型的存储桶类复制策略设置存储桶类复制策略:
- Placement
- 命名空间
流程
在 MCG 命令行界面中运行以下命令:
noobaa -n openshift-storage bucketclass create placement-bucketclass <bucketclass-name> --backingstores <backingstores> --replication-policy=/path/to/json-file.json
<bucketclass-name>
- 指定存储桶类的名称。
<backingstores>
- 指定后备存储的名称。可以使用逗号分隔来传递多个后备储存。
/path/to/json-file.json
是定义复制策略的 JSON 文件的路径。
JSON 文件示例:
[{ "rule_id": "rule-1", "destination_bucket": "first.bucket", "filter": {"prefix": "repl"}}]
"prefix"
是可选的。它是要复制的对象键的前缀,甚至可以留空,例如
{"prefix": ""}
。例如:
noobaa -n openshift-storage bucketclass create placement-bucketclass bc --backingstores azure-blob-ns --replication-policy=/path/to/json-file.json
本例使用 JSON 文件中定义的特定复制策略创建放置存储桶类。
8.2.2. 使用 YAML 设置存储桶类复制策略
需要 Multicloud Object Gateway(MCG)存储桶类的应用程序具有特定的复制策略,可以使用 spec.replicationPolicy
字段创建存储桶类。
流程
应用以下 YAML:
apiVersion: noobaa.io/v1alpha1 kind: BucketClass metadata: labels: app: <desired-app-label> name: <desired-bucketclass-name> namespace: <desired-namespace> spec: placementPolicy: tiers: - backingstores: - <backingstore> placement: Spread replicationPolicy: [{ "rule_id": "<rule id>", "destination_bucket": "first.bucket", "filter": {"prefix": "<object name prefix>"}}]
此 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": ""}
。