10.5. namespace バケットの管理

namespace バケットを使用すると、異なるプロバイダーのデータリポジトリーを接続できるため、単一の統合ビューを使用してすべてのデータと対話できます。各プロバイダーに関連付けられたオブジェクトバケットを namespace バケットに追加し、namespace バケット経由でデータにアクセスし、一度にすべてのオブジェクトバケットを表示します。これにより、他の複数のストレージプロバイダーから読み込む間に、希望するストレージプロバイダーへの書き込みを行うことができ、新規ストレージプロバイダーへの移行コストが大幅に削減されます。

S3 API を使用して namespace バケットのオブジェクトと対話できます。詳細は、namespace バケットのオブジェクトの Amazon S3 API エンドポイント について参照してください。

注記

namespace バケットは、このバケットの書き込みターゲットが利用可能で機能している場合にのみ使用できます。

10.5.1. namespace バケットのオブジェクトの Amazon S3 API エンドポイント

Amazon Simple Storage Service (S3) API を使用して namespace バケットのオブジェクトと対話できます。

Red Hat OpenShift Data Foundation 4.6 以降では、以下の namespace バケット操作をサポートします。

これらの操作および使用方法に関する最新情報は、Amazon S3 API リファレンスのドキュメントを参照してください。

10.5.2. Multicloud Object Gateway CLI および YAML を使用した namespace バケットの追加

namespace バケットの詳細は、namespace バケットの管理 を参照してください。

デプロイメントのタイプに応じて、また YAML または Multicloud Object Gateway CLI を使用するかどうかに応じて、以下の手順のいずれかを選択して namespace バケットを追加します。

10.5.2.1. YAML を使用した AWS S3 namespace バケットの追加

前提条件

手順

  1. 認証情報でシークレットを作成します。

    apiVersion: v1
    kind: Secret
    metadata:
      name: <namespacestore-secret-name>
      type: Opaque
    data:
      AWS_ACCESS_KEY_ID: <AWS ACCESS KEY ID ENCODED IN BASE64>
      AWS_SECRET_ACCESS_KEY: <AWS SECRET ACCESS KEY ENCODED IN BASE64>
    1. Base64 を使用して独自の AWS アクセスキー ID およびシークレットアクセスキーを指定し、エンコードし、その結果を <AWS ACCESS KEY ID ENCODED IN BASE64> および <AWS SECRET ACCESS KEY ENCODED IN BASE64> に使用する必要があります。
    2. <namespacestore-secret-name> を一意の名前に置き換えます。
  2. OpenShift カスタムリソース定義 (CRD) を使用して NamespaceStore リソースを作成します。NamespaceStore は、MCG namespace バケットでデータの読み取りおよび書き込みターゲットとして使用される基礎となるストレージを表します。NamespaceStore リソースを作成するには、以下の YAML を適用します。

    apiVersion: noobaa.io/v1alpha1
    kind: NamespaceStore
    metadata:
      finalizers:
      - noobaa.io/finalizer
      labels:
        app: noobaa
      name: <resource-name>
      namespace: openshift-storage
    spec:
      awsS3:
        secret:
          name: <namespacestore-secret-name>
          namespace: <namespace-secret>
        targetBucket: <target-bucket>
      type: aws-s3
    1. <resource-name> をリソースに指定する名前に置き換えます。
    2. <namespacestore-secret-name> を手順 1 で作成したシークレットに置き換えます。
    3. <namespace-secret> を、シークレットが含まれる namespace に置き換えます。
    4. <target-bucket> を NamespaceStore 用に作成したターゲットバケットに置き換えます。
  3. namespace バケットの namespace ポリシーを定義する namespace バケットクラスを作成します。namespace ポリシーには、single または multi のタイプが必要です。

    • タイプ single の namespace ポリシーには、以下の設定が必要です。

      apiVersion: noobaa.io/v1alpha1
      kind: BucketClass
      metadata:
        labels:
          app: noobaa
        name: <my-bucket-class>
        namespace: openshift-storage
      spec:
        namespacePolicy:
          type:
          single:
            resource: <resource>
      • <my-bucket-class> を一意のバケットクラス名に置き換えます。
      • <resource> を namespace バケットの読み取りおよび書き込みターゲットを定義する単一の namespace-store の名前に置き換えます。
    • タイプが multi の namespace ポリシーには、以下の設定が必要です。

      apiVersion: noobaa.io/v1alpha1
      
      kind: BucketClass
      metadata:
        labels:
          app: noobaa
        name: <my-bucket-class>
        namespace: openshift-storage
      spec:
        namespacePolicy:
          type: Multi
          multi:
            writeResource: <write-resource>
            readResources:
            - <read-resources>
            - <read-resources>
      • <my-bucket-class> を一意のバケットクラス名に置き換えます。
      • <write-resource> を、namespace バケットの書き込みターゲットを定義する単一の namespace-store の名前に置き換えます。
      • <read-resources> を、namespace バケットの読み取りターゲットを定義する namespace-stores の名前の一覧に置き換えます。
  4. 以下のコマンドを実行して、手順 2 に定義されたバケットクラスを使用する Object Bucket Class (OBC) リソースを使用してバケットを作成します。

    apiVersion: objectbucket.io/v1alpha1
    kind: ObjectBucketClaim
    metadata:
      name: <resource-name>
      namespace: openshift-storage
    spec:
      generateBucketName: <my-bucket>
      storageClassName: openshift-storage.noobaa.io
      additionalConfig:
        bucketclass: <my-bucket-class>
    1. <resource-name> をリソースに指定する名前に置き換えます。
    2. <my-bucket> をバケットに指定する名前に置き換えます。
    3. <my-bucket-class> を直前の手順で作成したバケットクラスに置き換えます。

OBC が Operator によってプロビジョニングされると、バケットが MCG で作成され、Operator は OBC の同じ namespace 上に同じ名前でシークレットおよび ConfigMap を作成します。

10.5.2.2. YAML を使用した IBM COS namespace バケットの追加

前提条件

手順

  1. 認証情報でシークレットを作成します。

    apiVersion: v1
    kind: Secret
    metadata:
      name: <namespacestore-secret-name>
      type: Opaque
    data:
      IBM_COS_ACCESS_KEY_ID: <IBM COS ACCESS KEY ID ENCODED IN BASE64>
      IBM_COS_SECRET_ACCESS_KEY: <IBM COS SECRET ACCESS KEY ENCODED IN BASE64>
    1. Base64 を使用して独自の IBM COS アクセスキー ID およびシークレットアクセスキーを指定し、エンコードし、その結果を <IBM COS ACCESS KEY ID ENCODED IN BASE64> および <IBM COS SECRET ACCESS KEY ENCODED IN BASE64> に使用する必要があります。
    2. <namespacestore-secret-name> を一意の名前に置き換えます。
  2. OpenShift カスタムリソース定義 (CRD) を使用して NamespaceStore リソースを作成します。NamespaceStore は、MCG namespace バケットでデータの読み取りおよび書き込みターゲットとして使用される基礎となるストレージを表します。NamespaceStore リソースを作成するには、以下の YAML を適用します。

    apiVersion: noobaa.io/v1alpha1
    kind: NamespaceStore
    metadata:
      finalizers:
      - noobaa.io/finalizer
      labels:
        app: noobaa
      name: bs
      namespace: openshift-storage
    spec:
      s3Compatible:
        endpoint: <IBM COS ENDPOINT>
        secret:
          name: <namespacestore-secret-name>
          namespace: <namespace-secret>
        signatureVersion: v2
        targetBucket: <target-bucket>
      type: ibm-cos
    1. <IBM COS ENDPOINT> を適切な IBM COS エンドポイントに置き換えます。
    2. <namespacestore-secret-name> を手順 1 で作成したシークレットに置き換えます。
    3. <namespace-secret> を、シークレットが含まれる namespace に置き換えます。
    4. <target-bucket> を NamespaceStore 用に作成したターゲットバケットに置き換えます。
  3. namespace バケットの namespace ポリシーを定義する namespace バケットクラスを作成します。namespace ポリシーには、single または multi のタイプが必要です。

    • タイプ single の namespace ポリシーには、以下の設定が必要です。

      apiVersion: noobaa.io/v1alpha1
      kind: BucketClass
      metadata:
        labels:
          app: noobaa
        name: <my-bucket-class>
        namespace: openshift-storage
      spec:
        namespacePolicy:
          type:
          single:
            resource: <resource>
      • <my-bucket-class> を一意のバケットクラス名に置き換えます。
      • <resource> を namespace バケットの読み取りおよび書き込みターゲットを定義する単一の namespace-store の名前に置き換えます。
    • タイプが multi の namespace ポリシーには、以下の設定が必要です。

      apiVersion: noobaa.io/v1alpha1
      kind: BucketClass
      metadata:
        labels:
          app: noobaa
        name: <my-bucket-class>
        namespace: openshift-storage
      spec:
        namespacePolicy:
          type: Multi
          multi:
            writeResource: <write-resource>
            readResources:
            - <read-resources>
            - <read-resources>
      • <my-bucket-class> を一意のバケットクラス名に置き換えます。
      • <write-resource> を、namespace バケットの書き込みターゲットを定義する単一の namespace-store の名前に置き換えます。
      • <read-resources> を、namespace バケットの読み取りターゲットを定義する namespace-stores の名前の一覧に置き換えます。
  4. 以下のコマンドを実行して、手順 2 に定義されたバケットクラスを使用する Object Bucket Class (OBC) リソースを使用してバケットを作成します。

    apiVersion: objectbucket.io/v1alpha1
    kind: ObjectBucketClaim
    metadata:
      name: <resource-name>
      namespace: openshift-storage
    spec:
      generateBucketName: <my-bucket>
      storageClassName: openshift-storage.noobaa.io
      additionalConfig:
        bucketclass: <my-bucket-class>
    1. <resource-name> をリソースに指定する名前に置き換えます。
    2. <my-bucket> をバケットに指定する名前に置き換えます。
    3. <my-bucket-class> を直前の手順で作成したバケットクラスに置き換えます。

OBC が Operator によってプロビジョニングされると、バケットが MCG で作成され、Operator は OBC の同じ namespace 上に同じ名前でシークレットおよび ConfigMap を作成します。

10.5.2.3. Multicloud Object Gateway CLI を使用した AWS S3 namespace バケットの追加

前提条件

  • 実行中の OpenShift Data Foundation Platform。
  • Multicloud Object Gateway (MCG) へのアクセスについては、第 2 章の Accessing the Multicloud Object Gateway with your applications を参照してください。
  • MCG コマンドラインインターフェイスをダウンロードします。
# subscription-manager repos --enable=rh-odf-4-for-rhel-8-x86_64-rpms
# yum install mcg
注記

サブスクリプションマネージャーを使用してリポジトリーを有効にするための適切なアーキテクチャーを指定します。たとえば、IBM Z インフラストラクチャーの場合は、以下のコマンドを使用します。

# subscription-manager repos --enable=rh-odf-4-for-rhel-8-s390x-rpms

または、MCG パッケージを、https://access.redhat.com/downloads/content/547/ver=4/rhel---8/4/x86_64/package にある OpenShift Data Foundation RPM からインストールできます。

注記

お使いのアーキテクチャーに応じて、正しい製品バリアントを選択します。

手順

  1. NamespaceStore リソースを作成します。NamespaceStore は、MCG namespace バケットでデータの読み取りおよび書き込みターゲットとして使用される基礎となるストレージを表します。MCG コマンドラインインターフェイスから、以下のコマンドを実行します。

    noobaa namespacestore create aws-s3 <namespacestore> --access-key <AWS ACCESS KEY> --secret-key <AWS SECRET ACCESS KEY> --target-bucket <bucket-name> -n openshift-storage
    1. <namespacestore> を NamespaceStore の名前に置き換えます。
    2. <AWS ACCESS KEY> および <AWS SECRET ACCESS KEY> を、作成した AWS アクセスキー ID およびシークレットアクセスキーに置き換えます。
    3. <bucket-name> を既存の AWS バケット名に置き換えます。この引数は、MCG に対して、バッキングストア、およびその後のデータストレージおよび管理のためのターゲットバケットとして使用するバケットについて指示します。
  2. namespace バケットの namespace ポリシーを定義する namespace バケットクラスを作成します。namespace ポリシーには、single または multi のタイプが必要です。

    • 以下のコマンドを実行して、タイプ single の namespace ポリシーで namespace バケットクラスを作成します。

      noobaa bucketclass create namespace-bucketclass single <my-bucket-class> --resource <resource> -n openshift-storage
      • <resource-name> をリソースに指定する名前に置き換えます。
      • <my-bucket-class> を一意のバケットクラス名に置き換えます。
      • <resource> を namespace バケットの読み取りおよび書き込みターゲットを定義する単一の namespace-store に置き換えます。
    • 以下のコマンドを実行して、タイプ multi の namespace ポリシーで namespace バケットクラスを作成します。

      noobaa bucketclass create namespace-bucketclass multi <my-bucket-class> --write-resource <write-resource> --read-resources <read-resources> -n openshift-storage
      • <resource-name> をリソースに指定する名前に置き換えます。
      • <my-bucket-class> を一意のバケットクラス名に置き換えます。
      • <write-resource> を、namespace バケットの書き込みターゲットを定義する単一の namespace-store に置き換えます。
      • <read-resources> を、namespace バケットの読み取りターゲットを定義する 、コンマで区切られた namespace-stores の一覧に置き換えます。
  3. 以下のコマンドを実行して、手順 2 に定義されたバケットクラスを使用する Object Bucket Class (OBC) リソースを使用してバケットを作成します。

    noobaa obc create my-bucket-claim -n openshift-storage --app-namespace my-app --bucketclass <custom-bucket-class>
    1. <bucket-name> を、選択するバケット名に置き換えます。
    2. <custom-bucket-class> を、手順 2 で作成したバケットクラスの名前に置き換えます。

OBC が Operator によってプロビジョニングされると、バケットが MCG で作成され、Operator は OBC の同じ namespace 上に同じ名前でシークレットおよび ConfigMap を作成します。

10.5.2.4. Multicloud Object Gateway CLI を使用した IBM COS namespace バケットの追加

前提条件

  • 実行中の OpenShift Data Foundation Platform。
  • Multicloud Object Gateway (MCG) へのアクセスについては、第 2 章の Accessing the Multicloud Object Gateway with your applications を参照してください。
  • MCG コマンドラインインターフェイスをダウンロードします。

    # subscription-manager repos --enable=rh-odf-4-for-rhel-8-x86_64-rpms
    # yum install mcg
    注記

    サブスクリプションマネージャーを使用してリポジトリーを有効にするための適切なアーキテクチャーを指定します。

    • IBM Power の場合は、次のコマンドを使用します。
    # subscription-manager repos --enable=rh-odf-4-for-rhel-8-ppc64le-rpms
    • IBM Z インフラストラクチャーの場合は、以下のコマンドを使用します。
    # subscription-manager repos --enable=rh-odf-4-for-rhel-8-s390x-rpms

    または、MCG パッケージを、https://access.redhat.com/downloads/content/547/ver=4/rhel---8/4/x86_64/package にある OpenShift Data Foundation RPM からインストールできます。

    注記

    お使いのアーキテクチャーに応じて、正しい製品バリアントを選択します。

手順

  1. NamespaceStore リソースを作成します。NamespaceStore は、MCG namespace バケットでデータの読み取りおよび書き込みターゲットとして使用される基礎となるストレージを表します。MCG コマンドラインインターフェイスから、以下のコマンドを実行します。

    noobaa namespacestore create ibm-cos <namespacestore> --endpoint <IBM COS ENDPOINT> --access-key <IBM ACCESS KEY> --secret-key <IBM SECRET ACCESS KEY> --target-bucket <bucket-name> -n openshift-storage
    1. <namespacestore> を NamespaceStore の名前に置き換えます。
    2. <IBM ACCESS KEY>, <IBM SECRET ACCESS KEY>, <IBM COS ENDPOINT> を IBM アクセスキー ID、シークレットアクセスキー、および既存の IBM バケットの場所に対応する地域のエンドポイントに置き換えます。
    3. <bucket-name> を既存の IBM バケット名に置き換えます。この引数は、MCG に対して、バッキングストア、およびその後のデータストレージおよび管理のためのターゲットバケットとして使用するバケットについて指示します。
  2. namespace バケットの namespace ポリシーを定義する namespace バケットクラスを作成します。namespace ポリシーには、single または multi のタイプが必要です。

    • 以下のコマンドを実行して、タイプ single の namespace ポリシーで namespace バケットクラスを作成します。

      noobaa bucketclass create namespace-bucketclass single <my-bucket-class> --resource <resource> -n openshift-storage
      • <resource-name> をリソースに指定する名前に置き換えます。
      • <my-bucket-class> を一意のバケットクラス名に置き換えます。
      • <resource> を namespace バケットの読み取りおよび書き込みターゲットを定義する単一の namespace-store に置き換えます。
    • 以下のコマンドを実行して、タイプ multi の namespace ポリシーで namespace バケットクラスを作成します。

      noobaa bucketclass create namespace-bucketclass multi <my-bucket-class> --write-resource <write-resource> --read-resources <read-resources> -n openshift-storage
      • <resource-name> をリソースに指定する名前に置き換えます。
      • <my-bucket-class> を一意のバケットクラス名に置き換えます。
      • <write-resource> を、namespace バケットの書き込みターゲットを定義する単一の namespace-store に置き換えます。
      • <read-resources> を、namespace バケットの読み取りターゲットを定義する 、コンマで区切られた namespace-stores の一覧に置き換えます。
  3. 以下のコマンドを実行して、手順 2 に定義されたバケットクラスを使用する Object Bucket Class (OBC) リソースを使用してバケットを作成します。

    noobaa obc create my-bucket-claim -n openshift-storage --app-namespace my-app --bucketclass <custom-bucket-class>
    1. <bucket-name> を、選択するバケット名に置き換えます。
    2. <custom-bucket-class> を、手順 2 で作成したバケットクラスの名前に置き換えます。

OBC が Operator によってプロビジョニングされると、バケットが MCG で作成され、Operator は OBC の同じ namespace 上に同じ名前でシークレットおよび ConfigMap を作成します。

10.5.3. OpenShift Container Platform ユーザーインターフェイスを使用した namespace バケットの追加

OpenShift Data Foundation 4.8 以降のリリースでは、namespace バケットは OpenShift Container Platform ユーザーインターフェイスを使用して追加できます。namespace バケットの詳細は、namespace バケットの管理 を参照してください。

前提条件

  • OpenShift Data Foundation Operator を使用した OpenShift Container Platform のインストール
  • Multicloud Object Gateway (MCG) へのアクセス。

手順

  1. OpenShift Web コンソールにログインします。
  2. Storage → Data Foundation をクリックします。
  3. Namespace Store タブをクリックして、namespace バケットで使用される namespacestore リソースを作成します。

    1. Create namespace store をクリックします。
    2. namespacestore 名を入力します。
    3. プロバイダーを選択します。
    4. リージョンを選択します。
    5. 既存のシークレットを選択するか、Switch to credentials をクリックして、シークレットキーおよびシークレットアクセスキーを入力してシークレットを作成します。
    6. ターゲットバケットを選択します。
    7. Create をクリックします。
    8. namespacestore が Ready 状態にあることを確認します。
    9. 必要なリソースが得られるまで、これらの手順を繰り返します。
  4. Bucket Class タブ → Create a new Bucket Class をクリックします。

    1. Namespace ラジオボタンを選択します。
    2. Bucket Class 名を入力します。
    3. 説明 (オプション) を追加します。
    4. Next をクリックします。
  5. namespace バケットの namespace ポリシータイプを選択し、Next をクリックします。
  6. ターゲットリソースを選択します。

    • Namespace ポリシータイプが Single の場合、読み取りリソースを選択する必要があります。
    • namespace ポリシータイプが Multi の場合、読み取りリソースおよび書き込みリソースを選択する必要があります。
    • namespace ポリシータイプが Cache の場合は、namespace バケットの読み取りおよび書き込みターゲットを定義する Hub namespace ストアを選択する必要があります。
  7. Next をクリックします。
  8. 新しいバケットクラスを確認してから Create Bucketclass をクリックします。
  9. BucketClass ページで、新たに作成されたリソースが Created フェーズにあることを確認します。
  10. OpenShift Web コンソールで、StorageData Foundation をクリックします。
  11. Status カードで Storage System をクリックし、表示されるポップアップからストレージシステムリンクをクリックします。
  12. Object タブで、Multicloud Object GatewayBucketsNamespace Buckets タブをクリックします。
  13. Create Namespace Bucket をクリックします。

    1. Choose Name タブで、namespace バケットの Name を指定し、Next をクリックします。
    2. Set Placement タブで、以下を実行します。

      1. Read Policy で、namespace バケットがデータの読み取りに使用する、ステップ 5 で作成した各 namespace リソースのチェックボックスを選択します。
      2. 使用している namespace ポリシータイプが Multi の場合、Write Policy の場合は、namespace バケットがデータを書き込む namespace リソースを指定します。
      3. Next をクリックします。
    3. Create をクリックします。

検証

  • namespace バケットが State 列の緑色のチェックマークと、予想される読み取りリソースの数、および予想される書き込みリソース名と共に一覧表示されていることを確認します。