設定使用 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,以在 Object Storage 實例中動態建立具有配額限制的儲存區。 之後,您會部署簡式應用程式,以列印儲存區中檔案的內容。
下一步
- 設定 Object Storage CLI 以指向您的儲存區。
- 使用 Object Storage SDK 來 將儲存空間新增至應用程式。