5.2.2. 使用 YAML 添加 IBM COS 命名空间存储桶
先决条件
- 正在运行的 OpenShift Container Storage Platform
- 访问多云对象网关,请参阅第 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>
-
您必须使用 Base64 提供和编码您自己的 IBM COS 访问密钥 ID 和 secret 访问密钥,并使用结果代替
<IBM COS ACCESS KEY ID ENCODED IN BASE64>
和 `<IBM COS SECRET ACCESS KEY ENCODED IN BASE64>。 -
使用一个唯一的名称替换
<namespacestore-secret-name>
。
-
您必须使用 Base64 提供和编码您自己的 IBM COS 访问密钥 ID 和 secret 访问密钥,并使用结果代替
使用 OpenShift 自定义资源定义 (CRD) 创建 NamespaceStore 资源。NamespaceStore 代表底层存储,用作 Multicloud Object Gateway 命名空间存储桶中数据的读取或写入目标。要创建 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>
替换为在第 1 步中创建的 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>
替换为单个 namespace-store 的名称,该存储将定义命名空间存储桶的读取和写入目标。一个类型为
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>
替换为单个 namespace-store 的名称,该存储将定义命名空间存储桶的写入目标。将
<read-resources>
替换为定义命名空间存储桶读取目标的 namespace-store 的名称列表。
应用以下 YAML,以使用对象 Bucket Class (OBC) 资源创建 bucket,该资源使用第 2 步中定义的 bucket 类。
apiVersion: objectbucket.io/v1alpha1 kind: ObjectBucketClaim metadata: name: <resource-name> namespace: openshift-storage spec: generateBucketName: <my-bucket> storageClassName: noobaa.noobaa.io additionalConfig: bucketclass: <my-bucket-class>
注意对于 IBM Power Systems 和 IBM Z 基础架构,使用
storageClassName
作为openshift-storage.noobaa.io
-
将
<my-bucket-class>
替换为上一步中创建的存储桶类。
-
将
在 Operator 置备 OBC 后,会在 Multicloud 对象网关中创建存储桶,Operator 会在 OBC 的同一命名空间中创建一个名称与 OBC 相同的 Secret 和 ConfigMap。