設定使用 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 的實例。

建立一套服務憑證

  1. 請遵循步驟來建立一組 HMAC Object Storage 實例的服務認證。 請注意,您建立的認證必須具有 管理員 角色才能建立儲存區。

  2. 建立一組 HMAC 服務認證之後,請檢閱認證的詳細資料,並記下 apikeyaccess_key_idsecret_access_key。 儲存這些值以進行下一步。

建立秘密以儲存憑證

  1. 使用服務認證中的 apikeyaccess_key_idsecret_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-KEY
    
    輸出範例
    secret/my-cos-secret created
    
  2. 驗證已建立密鑰。
    oc get secrets | grep my-cos
    
    輸出範例
    my-cos-secret              ibm/ibmc-s3fs                         3      11m
    

安裝外掛程式

當您在叢集裡安裝外掛程式時,請務必指定 --set quotaLimit=true 選項。 指定此選項表示您使用 PVC 建立的任何儲存區,其配額限制都等於 PVC 中的儲存空間大小。

  1. 遵循 安裝外掛程式並啟用配額限制 的步驟。 如果您已在叢集裡安裝外掛程式,則可以跳過此步驟。 若要查看外掛程式是否已安裝,請遵循下一步。

  2. 透過列出驅動程式 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 儲存區。

  1. 複製下列 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
    
  2. 在叢集裡建立 PVC。

    oc apply -f pvc.yaml
    

    輸出範例

    persistentvolumeclaim/my-cos-pvc created
    
  3. 列出 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
    
  4. 在主控台中導覽至 Object Storage 實例,然後按一下 儲存區 標籤。

  5. 檢閱自動建立的儲存區的詳細資料。 儲存區名稱的格式為 tmp-s3fs-XXXX

  6. 按一下 tmp-s3fs-XXXX 儲存區,然後按一下 配置 標籤。

  7. 在「配置」頁面上,尋找 配額強制執行 區段。 請注意,已自動建立儲存區,其配額等於您在 PVC 中指定的大小。 在此範例中,值為 20Gi

將檔案上傳至儲存區

  1. 將下列 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
    
  2. 在主控台中導覽至 Object Storage 實例,然後按一下 儲存區 標籤。

  3. 按一下 tmp-s3fs-XXXX 儲存區,然後按一下 上傳

  4. 上傳您先前儲存的 pod.yaml 檔案。

建立裝載儲存區的應用程式

  1. 複製下列 Pod 配置,並將它儲存至稱為 pod.yaml 的檔案。 此範例 Pod 會裝載 my-cos-pvc PVC 所建立的儲存區,並列印您先前上傳之 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
    
  2. 在群集中建立 pod。
    oc apply -f pod.yaml
    
    輸出範例
    pod/cat-test-file created
    
  3. 取得 cat-test-file 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 外掛程式,並針對使用外掛程式建立的任何 PVC 啟用配額。 然後,您建立 PVC,以在 Object Storage 實例中動態建立具有配額限制的儲存區。 之後,您會部署簡式應用程式,以列印儲存區中檔案的內容。

下一步