IBM Cloud Object Storage を使用するアプリのキャパシティー割り当て量の設定
仮想プライベートクラウド クラシック・インフラストラクチャー
IBM Cloud Object Storage を使えば、 Red Hat OpenShift on IBM Cloud クラスターで動作するアプリのバケットを動的にプロビジョニングできる。 また、プロビジョニング中にそれらのバケットに容量割り当て量を動的に設定することもできます。 割り当て量は、不要な課金を回避しながら、ワークロードが使用するリソースを管理するのに役立ちます。
目標
このチュートリアルでは、 Object Storage プラグインをクラスターにインストールし、プラグインで作成されたすべての Persistent Volume Claim (PVC) の割り当て量を有効にします。
次に、 Object Storage インスタンスで割り当て量制限を使用してバケットを動的に作成する PVC を作成します。
その後、ファイルをバケットにアップロードし、バケットをマウントする単純なアプリをクラスターにデプロイして、そのファイルの内容を出力します。
前提条件
このチュートリアルを始める前に、以下のリソースとツールを作成またはインストールしていることを確認してください。
- 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 のストレージ・サイズと等しい割り当て量制限が設定されます。
-
手順に従って、 プラグインをインストールし、割り当て量制限を有効にします。 クラスターにプラグインが既にインストールされている場合は、このステップをスキップできます。 プラグインが既にインストールされているかどうかを確認するには、次のステップに従ってください。
-
ドライバー・ポッドをリストして、プラグインがインストールされていることを確認します。
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.yamlというファイルに保存します。 この例のポッドは、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 - クラスター内にポッドを作成します。
出力例oc apply -f pod.yamlpod/cat-test-file created cat-test-fileポッドのログを取得します。 この例では、ログには、前にアップロードした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 の割り当て量を有効にしました。 次に、 Object Storage インスタンスで割り当て量制限を指定してバケットを動的に作成する PVC を作成しました。 その後、バケット内のファイルの内容を出力する単純なアプリをデプロイしました。
次のステップ
- バケットを指すように Object Storage CLI をセットアップします。
- Object Storage SDK を使用して、 アプリにストレージを追加 します。