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のインスタンスのプロビジョン を参照してください。

サービス認証情報の作成

  1. HMAC Object Storage インスタンスのサービス資格情報 のセットを作成するには、以下の手順を実行します。 作成する資格情報には、バケットを作成するための 管理者 役割が必要です。

  2. HMAC サービス資格情報のセットを作成した後、資格情報の詳細を確認し、 apikeyaccess_key_id、および secret_access_key をメモします。 次のステップのためにこれらの値を保存します。

認証情報を保存する秘密の作成

  1. サービス資格情報から apikeyaccess_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-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. ドライバー・ポッドをリストして、プラグインがインストールされていることを確認します。

    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-pvcBound 状態であることを確認します。

    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.yaml というファイルに保存します。 この例のポッドは、 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. クラスター内にポッドを作成します。
    oc apply -f pod.yaml
    
    出力例
    pod/cat-test-file created
    
  3. 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 を作成しました。 その後、バケット内のファイルの内容を出力する単純なアプリをデプロイしました。

次のステップ