为使用 IBM Cloud Object Storage 的应用程序设置容量配额
虚拟私有云 传统基础设施
通过 IBM Cloud Object Storage,您可以为在 Red Hat OpenShift on IBM Cloud 集群中运行的应用程序动态配置存储桶。 您还可以在供应期间对这些存储区动态设置容量配额。 配额可以帮助您管理工作负载所使用的资源,同时避免不必要的费用。
目标
在本教程中,您将 Object Storage 插件安装在集群中,并对使用该插件创建的任何持久卷声明 (PVC) 启用配额。
然后,创建 PVC,以动态方式在 Object Storage 实例中创建具有配额限制的存储区。
之后,将文件上载到存储区,并将简单应用程序部署到集群,以安装存储区并打印该文件的内容。
先决条件
在开始本教程之前,请确保您已创建或安装了以下资源和工具。
- IBM Cloud 帐户。 有关更多信息,请参阅 创建帐户。
- CLI 工具包括 IBM Cloud CLI,Containers 服务 CLI 插件和 Helm CLI。 有关更多信息,请参阅 IBM Cloud CLI 入门。
- Red Hat OpenShift on IBM Cloud 集群。 如果您有一个 VPC 集群,请确保您的 VPC 已连接公共网关。 有关更多信息,请参阅 创建集群
- 与集群位于同一区域中的 Object Storage 实例。 有关更多信息,请参阅 供应 Object Storage的实例。
创建一套服务证书
-
执行以下步骤以创建一组 HMAC Object Storage 实例的服务凭证。 请注意,您创建的凭证必须具有 管理者 角色才能创建存储区。
-
创建一组 HMAC 服务凭证后,请查看凭证的详细信息,并记录
apikey,access_key_id和secret_access_key。 保存这些值以用于下一步。
创建用于存储证书的密文
- 使用服务凭证中的
apikey,access_key_id和secret_access_key来创建私钥。示例输出oc create secret generic my-cos-secret --type=ibm/ibmc-s3fs --from-literal=access-key=ACCESS-KEY --from-literal=secret-key=SECRET-KEY --from-literal=res-conf-apikey=API-KEYsecret/my-cos-secret created - 验证秘密是否已创建。
示例输出oc get secrets | grep my-cosmy-cos-secret ibm/ibmc-s3fs 3 11m
安装插件
在集群中安装插件时,请确保指定 --set quotaLimit=true 选项。 指定此选项意味着使用 PVC 创建的任何存储区的配额限制等于 PVC 中的存储大小。
-
执行以下步骤以 安装插件并启用配额限制。 如果已在集群中安装该插件,那么可以跳过此步骤。 要查看是否已安装该插件,请执行下一步。
-
通过列出驱动程序 pod 来验证是否安装了该插件。
oc get pods -n ibm-object-s3fs | grep object示例输出
ibmcloud-object-storage-driver-k9x4l 1/1 Running 0 6m52s ibmcloud-object-storage-driver-kj9m6 1/1 Running 0 6m52s ibmcloud-object-storage-driver-l8gqk 1/1 Running 0 6m52s ibmcloud-object-storage-plugin-576fb8bd7-sxlkb 1/1 Running 0 6m52s
动态供应具有配额的存储区
您可以使用动态供应在创建 PVC 时自动创建 Object Storage 存储区。
-
复制以下 PVC 配置并将其保存到名为
pvc.yaml的文件中。 此示例 PVC 会自动创建配额等于20Gi的存储区。kind: PersistentVolumeClaim apiVersion: v1 metadata: name: my-cos-pvc namespace: default annotations: ibm.io/auto-create-bucket: "true" ibm.io/auto-delete-bucket: "true" ibm.io/secret-name: "my-cos-secret" ibm.io/quota-limit: "true" spec: accessModes: - ReadWriteOnce resources: requests: storage: 20Gi storageClassName: ibmc-s3fs-standard-cross-region -
在集群中创建 PVC。
oc apply -f pvc.yaml示例输出
persistentvolumeclaim/my-cos-pvc created -
列出 PVC 并验证
my-cos-pvc是否处于Bound状态。NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE my-cos-pvc Bound pvc-64a4e0c9-b5ec-40e3-8b7e-77ff47ae6c5e 20Gi RWO ibmc-s3fs-standard-cross-region 6s -
浏览到控制台中的 Object Storage 实例,然后单击 存储区 选项卡。
-
查看自动创建的存储区的详细信息。 存储区名称的格式为
tmp-s3fs-XXXX。 -
单击
tmp-s3fs-XXXX存储区,然后单击 配置 选项卡。 -
在“配置”页面上,查找 配额实施 部分。 请注意,该存储区是使用等于您在 PVC 中指定的大小的配额自动创建的。 在此示例中,值为
20Gi。
将文件上载到存储区
-
将以下 Pod 配置保存到名为
pod.yaml的文件中。apiVersion: v1 kind: Pod metadata: name: cat-test-file spec: containers: - name: app image: nginx volumeMounts: - name: my-vol mountPath: "/mnt" command: ["/bin/sh"] args: ["-c", "cat mnt/pod.yaml && sleep 5 && exit"] volumes: - name: my-vol persistentVolumeClaim: claimName: my-cos-pvc -
浏览到控制台中的 Object Storage 实例,然后单击 存储区 选项卡。
-
单击
tmp-s3fs-XXXX存储区,然后单击 上载。 -
上载先前保存的
pod.yaml文件。
创建安装存储区的应用程序
- 复制以下 Pod 配置,并将其保存到名为
pod.yaml的文件中。 此示例 pod 安装由my-cos-pvcPVC 创建的存储区,并打印先前上载的pod.yaml文件的内容。apiVersion: v1 kind: Pod metadata: name: cat-test-file spec: containers: - name: app image: nginx volumeMounts: - name: my-vol mountPath: "/mnt" command: ["/bin/sh"] args: ["-c", "cat mnt/pod.yaml && sleep 5 && exit"] volumes: - name: my-vol persistentVolumeClaim: claimName: my-cos-pvc - 在群集中创建 pod。
示例输出oc apply -f pod.yamlpod/cat-test-file created - 获取
cat-test-filepod 的日志。 在此示例中,日志包含先前上载的pod.yaml文件的打印内容。apiVersion: v1 kind: Pod metadata: name: cat-test-file spec: containers: - name: app image: nginx volumeMounts: - name: my-vol mountPath: "/mnt" command: ["/bin/sh"] args: ["-c", "cat mnt/pod.yaml && sleep 5 && exit"] volumes: - name: my-vol persistentVolumeClaim: claimName: my-cos-pvc
复审
在本教程中,您在集群中安装了 Object Storage 插件,并为使用该插件创建的任何 PVC 启用了配额。 然后,您创建了 PVC,该 PVC 在 Object Storage 实例中动态创建了具有配额限制的存储区。 之后,您部署了一个简单应用程序,用于打印存储区中文件的内容。
后续步骤
- 设置 Object Storage CLI 以指向存储区。
- 使用 Object Storage SDK 来 向应用程序添加存储器。