IBM Cloud Docs
IBM Cloud Object Storage インスタンスのセットアップ

IBM Cloud Object Storage インスタンスのセットアップ

IBM Cloud Object Storage は、アプリにマウントできる永続的な高可用性ストレージです。 このプラグインは、Cloud Object Storage バケットをクラスター内のポッドに接続する Kubernetes Flex-Volume プラグインです。 IBM Cloud Object Storage で保管される情報は、転送中および保存中に暗号化され、多くの地理的位置に分散され、REST API を使用して HTTP を介してアクセスされます。

パブリック・ネットワーク・アクセスがないプライベート・クラスターで IBM Cloud Object Storage を使用する場合は、IBM Cloud Object Storage サービス・インスタンスを HMAC 認証用にセットアップする必要があります。 HMAC 認証の使用を希望しない場合は、このプラグインがプライベート・クラスター内で適切に機能するように、ポート 443 上のすべてのアウトバウンド・ネットワーク・トラフィックを開放する必要があります。

IBM Cloud Object Storage インスタンスの作成

クラスターでオブジェクト・ストレージの使用を開始する前に、アカウントに IBM Cloud Object Storage サービス・インスタンスをプロビジョンする必要があります。

IBM Cloud Object Storage プラグインは、任意の s3 API エンドポイントで機能します。 例えば、 Minioのようなローカルの Cloud Object Storage サーバーを使用したい場合や、 IBM Cloud Object Storage サービスインスタンスの代わりに、別のクラウドプロバイダーで設定した s3 API エンドポイントに接続したい場合があります。

以下の手順に従って IBM Cloud Object Storage サービス・インスタンスを作成します。 ローカル Cloud Object Storage サーバーまたは別の s3 API エンドポイントを使用する予定の場合は、プロバイダーの資料を参照して、Cloud Object Storage インスタンスをセットアップしてください。

  1. IBM Cloud Object Storage カタログ・ページを開きます。
  2. サービス・インスタンスの名前 (cos-backup など) を入力し、クラスターが属するリソース・グループを選択します。 クラスターのリソース・グループを表示するには、ibmcloud oc cluster get --cluster <cluster_name_or_ID> を実行します。
  3. プランオプションで料金情報を確認し、プランを選択します。
  4. 「作成」 をクリックします。 サービス詳細ページが開きます。
  5. クラスターで使用するための Object Storage のセットアップに進むには、サービス資格情報の作成を参照してください。

IBM Cloud Object Storage のサービス資格情報の作成

始める前に、オブジェクト・ストレージのサービス・インスタンスを作成してください。

  1. Object Storage インスタンスのサービス詳細ページのナビゲーションで、**「サービス資格情報」**をクリックします。
  2. **「新規資格情報」**をクリックします。 ダイアログ・ボックスが開きます。
  3. 資格情報に対する名前を入力します。
  4. **「役割」**ドロップダウン・リストから、クラスターのストレージ・ユーザーに利用させるアクションに対応する Object Storage のアクセス役割を選択します。 ** 動的プロビジョニング機能を使用するには、**ライターauto-create-bucket以上のサービス・アクセス役割を選択する必要があります。 Reader を選択した場合、資格情報を使用して IBM Cloud Object Storage にバケットを作成し、そのバケットにデータを書き込むことはできません。
  5. オプション: インライン構成パラメーターの追加 (オプション) で、{"HMAC":true} と入力して、IBM Cloud Object Storage サービス用の追加の HMAC 資格情報を作成します。 HMAC 認証は、期限切れになったかまたはランダムに作成された OAuth2 トークンの誤用を防ぐことによって、OAuth2 認証にセキュリティー・レイヤーを追加します。
  6. 追加 をクリックします。 新しい資格情報がサービス資格情報テーブルに表示されます。
  7. **「資格情報の表示」**をクリックします。
  8. に注意してください。 apikey をメモしておいてください。 OAuth2 トークンを使用して、 IBM Cloud Object Storage サービスで認証します。 HMAC認証については cos_hmac_keys セクションで access_key_idsecret_access_key.
  9. サービス資格情報をクラスター内の Kubernetes シークレットに保管して、IBM Cloud Object Storage サービス・インスタンスへのアクセスを有効にします。

オブジェクト・ストレージ・サービス資格情報用のシークレットの作成

データの読み取りおよび書き込みを行うために IBM Cloud Object Storage サービス・インスタンスにアクセスするには、サービス資格情報を Kubernetes シークレットに安全に保管する必要があります。 IBM Cloud Object Storage プラグインでは、バケットに対する読み取り操作または書き込み操作ごとに、これらの資格情報が使用されます。

以下の手順に従って、IBM Cloud Object Storage サービス・インスタンスの資格情報用の Kubernetes シークレットを作成します。 ローカル Cloud Object Storage サーバーまたは異なる s3 API エンドポイントを使用する予定の場合は、適切な資格情報を使用して Kubernetes シークレットを作成してください。

前提条件

  • クラスターに対するマネージャーのサービス・アクセス役割があることを確認します。
  • KMS プロバイダーをセットアップします
  • 取得する apikey、または access_key_id そして secret_access_keyIBM Cloud Object Storage サービス資格情報。 サービス資格情報は、アプリが実行する必要があるバケット操作に対して十分なものでなければならないことに注意してください。 例えば、アプリがバケットからデータを読み込む場合、シークレットに表示されるサービス資格情報は、最低でもリーダー 権限を持っていなければなりません。

クラスターでのオブジェクト・ストレージ・シークレットの作成

IBM Cloud Object Storageのシークレットをクラスターに作成するには、以下の手順を実行します。

クラスター内の PVC から新規バケットを作成するときに Key Protect 暗号化を統合する場合は、 IBM Cloud Object Storage シークレット の作成時にルート・キー CRN を含める必要があります。 Key Protect 暗号化を既存のバケットに追加できないことに注意してください。 暗号化は、新規バケットを作成する場合にのみ使用できます。 暗号化に使用されているルート鍵が削除されると、関連するバケット内のすべてのファイルにアクセスできなくなります。

  1. IBM Cloud Object Storage サービス・インスタンスの GUID を取得します。

    ibmcloud resource service-instance <service_name> | grep GUID
    
  2. サービス資格情報を保管する Kubernetes シークレットを作成します。 以下のいずれかの例を選択して、シークレットを作成します。

    • API キーを使用する create secret コマンドの例。
      oc create secret generic cos-write-access --type=ibm/ibmc-s3fs --from-literal=api-key=<api_key> --from-literal=service-instance-id=<service_instance_guid>
      
    • HMAC 認証を使用する create secret コマンドの例。
      oc create secret generic cos-write-access --type=ibm/ibmc-s3fs --from-literal=access-key=<access_key_ID> --from-literal=secret-key=<secret_access_key>    
      
    • KMS プロバイダーで暗号化を有効にするための秘密構成ファイルの例。
      1. 以下の YAML をファイルに保存します。

        apiVersion: v1
        data:
            access-key: xxx
            secret-key: xxx
            kp-root-key-crn: <CRN> # Key Protect or HPCS root key crn in base64 encoded format
        kind: Secret
        metadata:
            name: cos-write-access
        type: ibm/ibmc-s3fs
        
        api-key
        以前に IBM Cloud Object Storage サービス資格情報から取得した API キーを入力します。 HMAC 認証を使用する場合は、代わりに access-key および secret-key を指定します。
        access-key
        以前に IBM Cloud Object Storage サービス資格情報から取得したアクセス・キー ID を入力します。 OAuth2 認証を使用する場合は、代わりに api-key を指定します。
        secret-key
        以前に IBM Cloud Object Storage サービス資格情報から取得したシークレット・アクセス・キーを入力します。 OAuth2 認証を使用する場合は、代わりに api-key を指定します。
        service-instance-id
        以前に取得した IBM Cloud Object Storage サービス・インスタンスの GUID を入力します。
        kp-root-key-crn
        base64 エンコードの Key Protect ルート鍵の CRN を入力して、 Key Protect 暗号化を使用します。
      2. クラスターに秘密を適用する。

        kubectl apply -f <secret_name>
        
  3. クラスター内のシークレットを取得し、出力を確認します。

    oc get secret
    

    出力例

    NAME                  TYPE                                  DATA   AGE
    cos-write-access      ibm/ibmc-s3fs                         2      7d19h
    default-au-icr-io     kubernetes.io/dockerconfigjson        1      55d
    default-de-icr-io     kubernetes.io/dockerconfigjson        1      55d
    ...
    
  4. IBM Cloud Object Storage プラグインをインストールするか、またはプラグインが既にインストールされている場合は IBM Cloud Object Storage バケットの構成を決定してください。

  5. オプション: デフォルトのストレージ・クラスにシークレットを追加しますストレージ・クラス・リファレンス

制限

  • IBM Cloud Object Storage は、s3fs-fuse ファイル・システムに基づいています。 s3fs-fuse リポジトリで制限事項のリストを確認できます。
  • IBM Cloud Object Storage のファイルに非 root ユーザーとしてアクセスするには、デプロイメント内の runAsUser および fsGroup の各値を同じ値に設定する必要があります。