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:
apiVersion: v1 kind: Secret metadata: name: <namespacestore-secret-name> type: Opaque data: AWS_ACCESS_KEY_ID: <AWS ACCESS KEY ID ENCODED IN BASE64> AWS_SECRET_ACCESS_KEY: <AWS SECRET ACCESS KEY ENCODED IN BASE64>
其中
<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:
apiVersion: noobaa.io/v1alpha1 kind: NamespaceStore metadata: finalizers: - noobaa.io/finalizer labels: app: noobaa name: <resource-name> namespace: openshift-storage spec: awsS3: secret: name: <namespacestore-secret-name> namespace: <namespace-secret> targetBucket: <target-bucket> type: aws-s3
<resource-name>
- 您要提供给资源的名称。
<namespacestore-secret-name>
- 上一步中创建的 secret。
<namespace-secret>
- 包括 secret 的命名空间。
<target-bucket>
- 为 NamespaceStore 创建的目标存储桶。
创建一个命名空间存储桶类,为命名空间存储桶定义命名空间策略。命名空间策略的类型需要是
single
或multi
。一个类型为
single
的命名空间策略需要以下配置:apiVersion: noobaa.io/v1alpha1 kind: BucketClass metadata: labels: app: noobaa name: <my-bucket-class> namespace: openshift-storage spec: namespacePolicy: type: single: resource: <resource>
<my-bucket-class>
- 唯一的命名空间存储桶类名称。
<resource>
- 定义命名空间存储桶的读写目标的单个 NamespaceStore 的名称。
一个类型为
multi
的命名空间策略需要以下配置:apiVersion: noobaa.io/v1alpha1 kind: BucketClass metadata: labels: app: noobaa name: <my-bucket-class> namespace: openshift-storage spec: namespacePolicy: type: Multi multi: writeResource: <write-resource> readResources: - <read-resources> - <read-resources>
<my-bucket-class>
- 唯一的存储桶类名称。
<write-resource>
-
定义命名空间存储桶
写入
目标的单个 NamespaceStore。 <read-resources>
-
定义命名空间存储桶的
读取
目标的 NamespaceStore 的名称列表。
使用以下 YAML 使用上一步中定义的存储桶类(OBC)资源,创建存储桶:
apiVersion: objectbucket.io/v1alpha1 kind: ObjectBucketClaim metadata: name: <resource-name> namespace: openshift-storage spec: generateBucketName: <my-bucket> storageClassName: openshift-storage.noobaa.io additionalConfig: bucketclass: <my-bucket-class>
注意对于 IBM Power 和 IBM Z 基础架构,
storageClassName
作为openshift-storage.noobaa.io
<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:
apiVersion: v1 kind: Secret metadata: name: <namespacestore-secret-name> type: Opaque data: IBM_COS_ACCESS_KEY_ID: <IBM COS ACCESS KEY ID ENCODED IN BASE64> IBM_COS_SECRET_ACCESS_KEY: <IBM COS SECRET ACCESS KEY ENCODED IN BASE64>
<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:
apiVersion: noobaa.io/v1alpha1 kind: NamespaceStore metadata: finalizers: - noobaa.io/finalizer labels: app: noobaa name: bs namespace: openshift-storage spec: s3Compatible: endpoint: <IBM COS ENDPOINT> secret: name: <namespacestore-secret-name> namespace: <namespace-secret> signatureVersion: v2 targetBucket: <target-bucket> type: ibm-cos
<IBM COS ENDPOINT>
- 适当的 IBM COS 端点。
<namespacestore-secret-name>
- 上一步中创建的 secret。
<namespace-secret>
- 包括 secret 的命名空间。
<target-bucket>
- 为 NamespaceStore 创建的目标存储桶。
创建一个命名空间存储桶类,为命名空间存储桶定义命名空间策略。命名空间策略的类型需要是
single
或multi
。一个类型为
single
的命名空间策略需要以下配置:apiVersion: noobaa.io/v1alpha1 kind: BucketClass metadata: labels: app: noobaa name: <my-bucket-class> namespace: openshift-storage spec: namespacePolicy: type: single: resource: <resource>
<my-bucket-class>
- 唯一的命名空间存储桶类名称。
<resource>
-
定义命名空间存储桶的
读
和写
目标的单个 NamespaceStore 的名称。
类型为
multi
的命名空间策略需要以下配置:apiVersion: noobaa.io/v1alpha1 kind: BucketClass metadata: labels: app: noobaa name: <my-bucket-class> namespace: openshift-storage spec: namespacePolicy: type: Multi multi: writeResource: <write-resource> readResources: - <read-resources> - <read-resources>
<my-bucket-class>
- 唯一的存储桶类名称。
<write-resource>
- 定义命名空间存储桶写入目标的单个 NamespaceStore。
<read-resources>
-
NamespaceStores 名称列表,用于定义命名空间存储桶的
读取
目标。
要使用上一步中定义的 bucket 类的 Object Bucket Class (OBC) 资源创建存储桶,请应用以下 YAML:
apiVersion: objectbucket.io/v1alpha1 kind: ObjectBucketClaim metadata: name: <resource-name> namespace: openshift-storage spec: generateBucketName: <my-bucket> storageClassName: openshift-storage.noobaa.io additionalConfig: bucketclass: <my-bucket-class>
注意对于 IBM Power 和 IBM Z 基础架构,
storageClassName
作为openshift-storage.noobaa.io
<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
指定适当的架构,以使用订阅管理器启用存储库。例如,如果是 IBM Z 基础架构,请使用以下命令:
# 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
<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
<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
<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>
<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
注意指定适当的架构,以使用订阅管理器启用存储库。
- 对于 IBM Power,使用以下命令:
# 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
另外,您还可以从位于 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
<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
<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
<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>
<bucket-name>
- 您选择的存储桶名称。
<custom-bucket-class>
- 上一步中创建的 bucket 类的名称。
在 Operator 置备 OBC 后,会在 MCG 中创建存储桶,Operator 会创建一个具有相同名称的 Secret
和 ConfigMap
,并在与 OBC 相同的命名空间中创建 Secret 和 ConfigMap。