搜索

4.2. 使用 Multicloud 对象网关 CLI 和 YAML 添加命名空间存储桶

download PDF

如需有关命名空间存储桶的更多信息,请参阅管理命名空间存储桶

根据部署的类型以及是否使用 YAML 或 Multicloud 对象网关 (MCG) CLI,选择以下流程之一来添加命名空间存储桶:

4.2.1. 使用 YAML 添加 AWS S3 命名空间存储桶

先决条件

流程

  1. 使用凭证创建 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>

  2. 使用 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 创建的目标存储桶。
  3. 创建一个命名空间存储桶类,为命名空间存储桶定义命名空间策略。命名空间策略的类型需要是 singlemulti

    • 一个类型为 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 的名称列表。
  4. 使用以下 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>
    <resource-name>
    您要提供给资源的名称。
    <my-bucket>
    您要提供给存储桶的名称。
    <my-bucket-class>
    上一步中创建的 bucket 类。

在 Operator 置备 OBC 后,会在 MCG 中创建存储桶,Operator 会创建一个具有相同名称的 SecretConfigMap,并在与 OBC 相同的命名空间中创建 Secret 和 ConfigMap。

4.2.2. 使用 YAML 添加 IBM COS 命名空间存储桶

先决条件

流程

  1. 使用凭证创建 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>

  2. 使用 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 创建的目标存储桶。
  3. 创建一个命名空间存储桶类,为命名空间存储桶定义命名空间策略。命名空间策略的类型需要是 singlemulti

    • 一个类型为 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 名称列表,用于定义命名空间存储桶的读取目标。
  4. 要使用上一步中定义的 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>
    <resource-name>
    您要提供给资源的名称。
    <my-bucket>
    您要提供给存储桶的名称。
    <my-bucket-class>

    上一步中创建的 bucket 类。

    在 Operator 置备 OBC 后,会在 MCG 中创建存储桶,Operator 会创建一个具有相同名称的 SecretConfigMap,并在与 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 软件包。

注意

根据您的架构选择正确的产品变体。

流程

  1. 在 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 将哪一个存储桶用作其后备存储的目标存储桶,以及随后数据存储和管理。
  2. 创建一个命名空间存储桶类,为命名空间存储桶定义命名空间策略。命名空间策略可以是 singlemulti

    • 创建一个命名空间存储桶类,其命名空间策略类型为 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
      命名空间存储列表,用逗号隔开,用于定义命名空间存储桶的读取目标。
  3. 使用上一步中定义的 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 会创建一个具有相同名称的 SecretConfigMap,并在与 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 软件包。

    注意

    根据您的架构选择正确的产品变体。

流程

  1. 在 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 将哪一个存储桶用作其后备存储的目标存储桶,以及随后数据存储和管理。
  2. 创建一个命名空间存储桶类,为命名空间存储桶定义命名空间策略。命名空间策略的类型需要是 singlemulti

    • 创建一个命名空间存储桶类,其命名空间策略类型为 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 列表,用于定义命名空间存储桶的读取目标。
  3. 使用以前步骤中定义的 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 会创建一个具有相同名称的 SecretConfigMap,并在与 OBC 相同的命名空间中创建 Secret 和 ConfigMap。

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.