管理 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 向存储集群添加支持存储,请执行以下操作:
- 安装 NooBaa 操作程序 CLI。
- 运行
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
- 了解您要使用的服务的详细信息。 如果要设置 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>
- 获取支持商店的详细信息。
noobaa backingstore status <backing-store-name> -n openshift-storage
创建使用两个具有镜像放置策略的支持存储区的存储区类
在 安装了 ODF 并配置了至少两个 支持存储 之后,可以创建使用多个支持存储的存储区类。 存储区类允许您在支持商店中配置数据联合策略。 然后,当应用程序将对象写入存储区时,您可以在两个或多个支持存储区中镜像或传播对象。
-
获取 NooBaa 实例的状态。 对于 IBM Cloud中的集群,请以
openshift-storage
名称空间为目标。noobaa status -n openshift-storage
-
请验证您是否至少有两个后备存储器。
noobaa backingstore list -n openshift-storage
-
创建一个存储区类,该存储区类使用两个支持存储库,并具有
Mirror
策略以跨两个或多个支持存储库对对象进行镜像。noobaa bucketclass create <bucketclass-name> --backingstores=[<backingstore_one>,<backingstore_two>] --placement='<placement>' -n <namespace>
-
可选 您还可以使用 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
创建存储类
创建支持存储库和存储区类后,创建存储类以使存储区类资源在集群中的名称空间中可用。
- 创建存储类 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
- 在集群中创建存储类。
oc create -f sc.yaml
- 验证存储类已创建。
oc get sc
创建对象存储区声明
在创建支持存储库和存储区类之后,可以创建对象存储区声明,以用于声明 s3 应用程序的存储资源。
- 创建引用先前创建的存储区类的对象存储区声明 YAML 文件。
apiVersion: objectbucket.io/v1alpha1 kind: ObjectBucketClaim metadata: name: cos-obc spec: storageClassName: cos-noobaa.noobaa.io bucketName: cos-bucket
- 在集群中创建对象存储区声明。
oc apply -f obc.yaml
- 验证是否已创建 OBC。
noobaa obc list
- 列出集群中的私钥和配置映射,并验证是否为 OBC 创建了相应的私钥和配置映射。
oc get secrets | grep <obc-name> && oc get cm | grep <obc-name>
在 Multicloud Object Gateway 中部署 s3 应用程序
- 创建引用 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.";
- 在群集中创建应用程序。
oc create -f app.yaml
- 验证应用程序是否正在运行。
oc get pods