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 エンドポイントで機能します。 たとえば、 IBM Cloud Object Storage のサービスインスタンスの代わりに、 Minio などのローカル 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 ks 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 認証情報を含める 」のトグルを「 オン 」に切り替えると、 IBM Cloud Object Storage サービスの HMAC 認証情報が作成されます。 HMAC 認証は、期限切れになったかまたはランダムに作成された OAuth2 トークンの誤用を防ぐことによって、OAuth2 認証にセキュリティー・レイヤーを追加します。 重要: パブリック・アクセスに対応していないプライベート専用クラスターを使用している場合は、プライベート・ネットワーク経由で IBM Cloud Object Storage サービスにアクセス可能にするために、HMAC 認証を使用する必要があります。
  6. 追加 をクリックします。 新しい資格情報がサービス資格情報テーブルに表示されます。
  7. **「資格情報の表示」**をクリックします。
  8. 以下の点に注意してください。 apikey 「 OAuth2 」トークンを使用して、 IBM Cloud Object Storage サービスで認証を行う方法について、必ず確認してください。 HMAC 認証については、 cos_hmac_keys セクションで、 access_key_id および secret_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 サービスの認証情報を 取得してください。 サービス資格情報は、アプリが実行する必要があるバケット操作に対して十分なものでなければならないことに注意してください。 たとえば、アプリがバケットからデータを読み取る場合、シークレットに表示されるサービスの認証情報には、少なくとも「 Reader 」権限が設定されている必要があります。

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

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 コマンドの例。
        kubectl 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` コマンドの例。
    ```sh {: pre}
        kubectl 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 をファイルに保存します。
            ```yaml {: codeblock}
            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 暗号化を使用します。
    
        1. その秘訣をクラスターに適用してください。
            ```sh {: pre}
            kubectl apply -f <secret_name>
            ```
    
    
  3. クラスター内のシークレットを取得し、出力を確認します。

    kubectl 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. オプション: デフォルトのストレージ・クラスにシークレットを追加しますストレージ・クラス・リファレンス

信頼されたプロファイルをCOSストレージに割り当てる

信頼されたプロファイルを使用して、異なる IBM Cloud ID に、ストレージソリューションを含むアカウント内のリソースへのアクセスを許可することができます。 信頼されたプロファイルは、アクセス制御を一元化し、長期間のAPIキーの必要性を排除し、特定のタスクに必要な最小限のパーミッションをスコープすることを可能にする。 詳細については、 ストレージコンポーネントの信頼済みプロファイルの構成を 参照してください。

制限

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