IBM Cloud Docs
管理 Multi-Cloud Object Gateway

管理 Multi-Cloud Object Gateway

您可以使用 NooBaa 来管理与 s3 兼容的对象存储资源,例如 IBM Object Storage,AWS s3或 Azure Blob 存储。 有了NooBaa,您还可以跨集群和区域一致地创建和管理对象存储。

使用 NooBaa CLI 设置支持存储

支持存储是用于管理 s3 兼容服务和存储区的 NooBaa 资源。 创建支持商店时,将为对象存储服务提供 s3 服务凭证,例如访问密钥标识,私钥访问密钥和端点。 将支持存储添加到集群后,可以 创建存储区类,这允许您为 s3 兼容存储服务配置数据联合策略。

部署 ODF 后,可以在存储集群中配置更多支持存储。 您可以使用任何兼容 s3 的对象库 (例如 AWS 或 IBM Cloud Object Storage) 来创建支持存储。

您还可以在 Red Hat OpenShift Web 控制台中创建和管理支持商店。

要使用 NooBaa CLI 向存储集群添加支持存储,请执行以下操作:

访问 Red Hat OpenShift 集群

  1. 安装 NooBaa 操作程序 CLI
  2. 运行 noobaa backingstore create 命令以查看受支持的支持商店类型的列表。
    noobaa backingstore create
    
    示例输出
    Create backing store
    
    Available Commands:
    aws-s3               Create aws-s3 backing store
    azure-blob           Create azure-blob backing store
    google-cloud-storage Create google-cloud-storage backing store
    ibm-cos              Create ibm-cos backing store
    pv-pool              Create pv-pool backing store
    s3-compatible        Create s3-compatible backing store
    
  3. 了解您要使用的服务的详细信息。 如果要设置 IBM Cloud Object Storage,请获取 HMAC 凭证。 更多信息,请参阅 使用 HMAC 凭据。 以下示例命令显示了使用 IBM Cloud Object Storage 服务实例创建支持存储所需的配置参数。
    noobaa backingstore create ibm-cos <backing-store-name> -n openshift-storage --access-key=<access-key> --endpoint=<endpoint> --secret-key=<secret-key> --target-bucket<target-bucket>
    
  4. 获取支持商店的详细信息。
    noobaa backingstore status <backing-store-name> -n openshift-storage
    

创建使用两个具有镜像放置策略的支持存储区的存储区类

安装了 ODF 并配置了至少两个 支持存储 之后,可以创建使用多个支持存储的存储区类。 存储区类允许您在支持商店中配置数据联合策略。 然后,当应用程序将对象写入存储区时,您可以在两个或多个支持存储区中镜像或传播对象。

  1. 安装NooBaaCLI

  2. 获取 NooBaa 实例的状态。 对于 IBM Cloud中的集群,请以 openshift-storage 名称空间为目标。

    noobaa status -n openshift-storage
    
  3. 请验证您是否至少有两个后备存储器。

    noobaa backingstore list -n openshift-storage
    
  4. 创建一个存储区类,该存储区类使用两个支持存储库,并具有 Mirror 策略以跨两个或多个支持存储库对对象进行镜像。

    noobaa bucketclass create <bucketclass-name> --backingstores=[<backingstore_one>,<backingstore_two>] --placement='<placement>' -n <namespace>
    
  5. 可选 您还可以使用 YAML 配置文件创建存储区类。

    apiVersion: noobaa.io/v1alpha1
    kind: BucketClass
    metadata:
    labels:
        app: noobaa
    name: mirror-bucket-class
    namespace: openshift-storage
    spec:
    placementPolicy:
        tiers:
        - backingStores:
        - backing-store-one
        - backing-store-two
        placement: Mirror
    

创建存储类

创建支持存储库和存储区类后,创建存储类以使存储区类资源在集群中的名称空间中可用。

  1. 创建存储类 YAML 文件,其中包含格式为 <name>-noobaa.noobaa.io 的存储类名称,要使用的存储区类的名称以及设置为 openshift-storage.noobaa.io/obc 的配置程序。
    metadata:
        name: <name>-noobaa.noobaa.io
      parameters:
    bucketclass: <bucket-class-name>
    provisioner: openshift-storage.noobaa.io/obc
    reclaimPolicy: Delete
    volumeBindingMode: Immediate
    
  2. 在集群中创建存储类。
    oc create -f sc.yaml
    
  3. 验证存储类已创建。
    oc get sc
    

创建对象存储区声明

在创建支持存储库和存储区类之后,可以创建对象存储区声明,以用于声明 s3 应用程序的存储资源。

  1. 创建引用先前创建的存储区类的对象存储区声明 YAML 文件。
    apiVersion: objectbucket.io/v1alpha1
    kind: ObjectBucketClaim
    metadata:
        name: cos-obc
      spec:
    storageClassName: cos-noobaa.noobaa.io
    bucketName: cos-bucket
    
  2. 在集群中创建对象存储区声明。
    oc apply -f obc.yaml
    
  3. 验证是否已创建 OBC。
    noobaa obc list
    
  4. 列出集群中的私钥和配置映射,并验证是否为 OBC 创建了相应的私钥和配置映射。
    oc get secrets | grep <obc-name> && oc get cm | grep <obc-name>
    

在 Multicloud Object Gateway 中部署 s3 应用程序

  1. 创建引用 OBC 中的私钥和配置映射的应用程序 YAML 文件。 以下示例应用程序使用 banst/awscli 映像并配置 AWS CLI。
    apiVersion: v1
    kind: Pod
    metadata:
        name: app
    labels:
      app: app
    spec:
        containers:
        - name: app
        envFrom:
        - secretRef:
            name: <secret-name>
        - configMapRef:
            name: <config-map-name>
        image: banst/awscli
        command:
            - sh
            - "-c"
            - |
                echo "----> Configuring S3 endpoint ...";
                pip install awscli-plugin-endpoint;
                aws configure set plugins.endpoint awscli_plugin_endpoint;
                aws configure set s3.endpoint_url https://s3.openshift-storage.svc;
                echo "----> Configuring certificates ...";
                aws configure set ca_bundle /var/run/secrets/kubernetes.io/serviceaccount/service-ca.crt;
                echo "----> Copying files ...";
                aws s3 cp --recursive /etc s3://$BUCKET_NAME;
                echo "----> List files ...";
                aws s3 ls $BUCKET_NAME;
                echo "----> Done.";
    
  2. 在群集中创建应用程序。
    oc create -f app.yaml
    
  3. 验证应用程序是否正在运行。
    oc get pods