Menu Close

ハイブリッドおよびマルチクラウドリソースの管理

Red Hat OpenShift Container Storage 4.7

クラスターおよびストレージ管理者のハイブリッドおよびマルチクラウドリソース管理

概要

本書では、ハイブリッドクラウドまたはマルチクラウド環境でストレージリソースを管理する方法について説明します。

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。まずは、マスター (master)、スレーブ (slave)、ブラックリスト (blacklist)、ホワイトリスト (whitelist) の 4 つの用語の置き換えから始めます。この取り組みは膨大な作業を要するため、今後の複数のリリースで段階的に用語の置き換えを実施して参ります。詳細は、弊社 の CTO、Chris Wright のメッセージ を参照してください。

Red Hat ドキュメントへのフィードバック (英語のみ)

弊社のドキュメントについてのご意見をお聞かせください。ドキュメントの改善点があれば、ぜひお知らせください。フィードバックをお寄せいただくには、以下をご確認ください。

  • 特定の部分についての簡単なコメントをお寄せいただく場合は、以下をご確認ください。

    1. ドキュメントの表示が Multi-page HTML 形式になっていて、ドキュメントの右上端に Feedback ボタンがあることを確認してください。
    2. マウスカーソルで、コメントを追加する部分を強調表示します。
    3. そのテキストの下に表示される Add Feedback ポップアップをクリックします。
    4. 表示される手順に従ってください。
  • より詳細なフィードバックを行う場合は、Bugzilla のチケットを作成します。

    1. Bugzilla の Web サイトに移動します。
    2. Component で Documentation を選択します。
    3. Description フィールドに、ドキュメントの改善に関するご意見を記入してください。ドキュメントの該当部分へのリンクも記入してください。
    4. Submit Bug をクリックします。

第1章 Multicloud Object Gateway について

Multicloud Object Gateway(MCG)は OpenShift の軽量オブジェクトストレージサービスであり、ユーザーは必要に応じて、複数のクラスター、およびクラウドネイティブストレージを使用して、オンプレミスで小規模に開始し、その後にスケーリングできます。

第2章 アプリケーションの使用による Multicloud Object Gateway へのアクセス

AWS S3 を対象とするアプリケーションまたは AWS S3 Software Development Kit(SDK)を使用するコードを使用して、オブジェクトサービスにアクセスできます。アプリケーションは、MCG エンドポイント、アクセスキー、およびシークレットアクセスキーを指定する必要があります。ターミナルまたは MCG CLI を使用して、この情報を取得できます。

RADOS Object Gateway S3 エンドポイントへのアクセスに関する詳細は、12章RADOS Object Gateway S3 エンドポイントへのアクセス を参照してください。

前提条件

  • 実行中の OpenShift Container Storage Platform
  • MCG コマンドラインインターフェースをダウンロードして、管理を容易にします。

    # subscription-manager repos --enable=rh-ocs-4-for-rhel-8-x86_64-rpms
    # yum install mcg
  • または、mcg パッケージを、Download RedHat OpenShift Container Storage ページにある OpenShift Container Storage RPM からインストールできます。

関連するエンドポイント、アクセスキー、およびシークレットアクセスキーには、以下の 2 つの方法でアクセスできます。

重要

仮想ホストスタイルを使用してクライアントアプリケーションを MCG バケットを参照するように、DNS エントリーがあることを確認します。

2.1. ターミナルから Multicloud Object Gateway へのアクセス

手順

describe コマンドを実行して、アクセスキー(AWS_ACCESS_KEY_ID 値)およびシークレットアクセスキー(AWS_SECRET_ACCESS _KEY 値)を含む MCG エンドポイントについての情報を表示します。

# oc describe noobaa -n openshift-storage

出力は以下のようになります。

Name:         noobaa
Namespace:    openshift-storage
Labels:       <none>
Annotations:  <none>
API Version:  noobaa.io/v1alpha1
Kind:         NooBaa
Metadata:
  Creation Timestamp:  2019-07-29T16:22:06Z
  Generation:          1
  Resource Version:    6718822
  Self Link:           /apis/noobaa.io/v1alpha1/namespaces/openshift-storage/noobaas/noobaa
  UID:                 019cfb4a-b21d-11e9-9a02-06c8de012f9e
Spec:
Status:
  Accounts:
    Admin:
      Secret Ref:
        Name:           noobaa-admin
        Namespace:      openshift-storage
  Actual Image:         noobaa/noobaa-core:4.0
  Observed Generation:  1
  Phase:                Ready
  Readme:

  Welcome to NooBaa!
  -----------------

  Welcome to NooBaa!
    -----------------
    NooBaa Core Version:
    NooBaa Operator Version:

    Lets get started:

    1. Connect to Management console:

      Read your mgmt console login information (email & password) from secret: "noobaa-admin".

        kubectl get secret noobaa-admin -n openshift-storage -o json | jq '.data|map_values(@base64d)'

      Open the management console service - take External IP/DNS or Node Port or use port forwarding:

        kubectl port-forward -n openshift-storage service/noobaa-mgmt 11443:443 &
        open https://localhost:11443

    2. Test S3 client:

      kubectl port-forward -n openshift-storage service/s3 10443:443 &
1
      NOOBAA_ACCESS_KEY=$(kubectl get secret noobaa-admin -n openshift-storage -o json | jq -r '.data.AWS_ACCESS_KEY_ID|@base64d')
2
      NOOBAA_SECRET_KEY=$(kubectl get secret noobaa-admin -n openshift-storage -o json | jq -r '.data.AWS_SECRET_ACCESS_KEY|@base64d')
      alias s3='AWS_ACCESS_KEY_ID=$NOOBAA_ACCESS_KEY AWS_SECRET_ACCESS_KEY=$NOOBAA_SECRET_KEY aws --endpoint https://localhost:10443 --no-verify-ssl s3'
      s3 ls


    Services:
      Service Mgmt:
        External DNS:
          https://noobaa-mgmt-openshift-storage.apps.mycluster-cluster.qe.rh-ocs.com
          https://a3406079515be11eaa3b70683061451e-1194613580.us-east-2.elb.amazonaws.com:443
        Internal DNS:
          https://noobaa-mgmt.openshift-storage.svc:443
        Internal IP:
          https://172.30.235.12:443
        Node Ports:
          https://10.0.142.103:31385
        Pod Ports:
          https://10.131.0.19:8443
      serviceS3:
        External DNS: 3
          https://s3-openshift-storage.apps.mycluster-cluster.qe.rh-ocs.com
          https://a340f4e1315be11eaa3b70683061451e-943168195.us-east-2.elb.amazonaws.com:443
        Internal DNS:
          https://s3.openshift-storage.svc:443
        Internal IP:
          https://172.30.86.41:443
        Node Ports:
          https://10.0.142.103:31011
        Pod Ports:
          https://10.131.0.19:6443
1
アクセスキー(AWS_ACCESS_KEY_ID 値)
2
シークレットアクセスキー(AWS_SECRET_ACCESS_KEY 値)
3
MCG エンドポイント
注記

oc describe noobaa コマンドからの出力は、利用可能な内部および外部 DNS 名を一覧表示します。内部 DNS を使用する場合、トラフィックは無料になります。外部 DNS はロードバランシングを使用してトラフィックを処理するため、1 時間あたりのコストがかかります。

2.2. MCG コマンドラインインターフェースからの Multicloud Object Gateway へのアクセス

前提条件

  • MCG コマンドラインインターフェースをダウンロードします。

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

手順

status コマンドを実行して、エンドポイント、アクセスキー、およびシークレットアクセスキーにアクセスします。

noobaa status -n openshift-storage

出力は以下のようになります。

INFO[0000] Namespace: openshift-storage
INFO[0000]
INFO[0000] CRD Status:
INFO[0003] ✅ Exists: CustomResourceDefinition "noobaas.noobaa.io"
INFO[0003] ✅ Exists: CustomResourceDefinition "backingstores.noobaa.io"
INFO[0003] ✅ Exists: CustomResourceDefinition "bucketclasses.noobaa.io"
INFO[0004] ✅ Exists: CustomResourceDefinition "objectbucketclaims.objectbucket.io"
INFO[0004] ✅ Exists: CustomResourceDefinition "objectbuckets.objectbucket.io"
INFO[0004]
INFO[0004] Operator Status:
INFO[0004] ✅ Exists: Namespace "openshift-storage"
INFO[0004] ✅ Exists: ServiceAccount "noobaa"
INFO[0005] ✅ Exists: Role "ocs-operator.v0.0.271-6g45f"
INFO[0005] ✅ Exists: RoleBinding "ocs-operator.v0.0.271-6g45f-noobaa-f9vpj"
INFO[0006] ✅ Exists: ClusterRole "ocs-operator.v0.0.271-fjhgh"
INFO[0006] ✅ Exists: ClusterRoleBinding "ocs-operator.v0.0.271-fjhgh-noobaa-pdxn5"
INFO[0006] ✅ Exists: Deployment "noobaa-operator"
INFO[0006]
INFO[0006] System Status:
INFO[0007] ✅ Exists: NooBaa "noobaa"
INFO[0007] ✅ Exists: StatefulSet "noobaa-core"
INFO[0007] ✅ Exists: Service "noobaa-mgmt"
INFO[0008] ✅ Exists: Service "s3"
INFO[0008] ✅ Exists: Secret "noobaa-server"
INFO[0008] ✅ Exists: Secret "noobaa-operator"
INFO[0008] ✅ Exists: Secret "noobaa-admin"
INFO[0009] ✅ Exists: StorageClass "openshift-storage.noobaa.io"
INFO[0009] ✅ Exists: BucketClass "noobaa-default-bucket-class"
INFO[0009] ✅ (Optional) Exists: BackingStore "noobaa-default-backing-store"
INFO[0010] ✅ (Optional) Exists: CredentialsRequest "noobaa-cloud-creds"
INFO[0010] ✅ (Optional) Exists: PrometheusRule "noobaa-prometheus-rules"
INFO[0010] ✅ (Optional) Exists: ServiceMonitor "noobaa-service-monitor"
INFO[0011] ✅ (Optional) Exists: Route "noobaa-mgmt"
INFO[0011] ✅ (Optional) Exists: Route "s3"
INFO[0011] ✅ Exists: PersistentVolumeClaim "db-noobaa-core-0"
INFO[0011] ✅ System Phase is "Ready"
INFO[0011] ✅ Exists:  "noobaa-admin"

#------------------#
#- Mgmt Addresses -#
#------------------#

ExternalDNS : [https://noobaa-mgmt-openshift-storage.apps.mycluster-cluster.qe.rh-ocs.com https://a3406079515be11eaa3b70683061451e-1194613580.us-east-2.elb.amazonaws.com:443]
ExternalIP  : []
NodePorts   : [https://10.0.142.103:31385]
InternalDNS : [https://noobaa-mgmt.openshift-storage.svc:443]
InternalIP  : [https://172.30.235.12:443]
PodPorts    : [https://10.131.0.19:8443]

#--------------------#
#- Mgmt Credentials -#
#--------------------#

email    : admin@noobaa.io
password : HKLbH1rSuVU0I/souIkSiA==

#----------------#
#- S3 Addresses -#
#----------------#

1
ExternalDNS : [https://s3-openshift-storage.apps.mycluster-cluster.qe.rh-ocs.com https://a340f4e1315be11eaa3b70683061451e-943168195.us-east-2.elb.amazonaws.com:443]
ExternalIP  : []
NodePorts   : [https://10.0.142.103:31011]
InternalDNS : [https://s3.openshift-storage.svc:443]
InternalIP  : [https://172.30.86.41:443]
PodPorts    : [https://10.131.0.19:6443]

#------------------#
#- S3 Credentials -#
#------------------#

2
AWS_ACCESS_KEY_ID     : jVmAsu9FsvRHYmfjTiHV
3
AWS_SECRET_ACCESS_KEY : E//420VNedJfATvVSmDz6FMtsSAzuBv6z180PT5c

#------------------#
#- Backing Stores -#
#------------------#

NAME                           TYPE     TARGET-BUCKET                                               PHASE   AGE
noobaa-default-backing-store   aws-s3   noobaa-backing-store-15dc896d-7fe0-4bed-9349-5942211b93c9   Ready   141h35m32s

#------------------#
#- Bucket Classes -#
#------------------#

NAME                          PLACEMENT                                                             PHASE   AGE
noobaa-default-bucket-class   {Tiers:[{Placement: BackingStores:[noobaa-default-backing-store]}]}   Ready   141h35m33s

#-----------------#
#- Bucket Claims -#
#-----------------#

No OBC's found.
1
endpoint
2
アクセスキー
3
シークレットアクセスキー

これで、アプリケーションに接続するための関連するエンドポイント、アクセスキー、およびシークレットアクセスキーを使用できます。

例2.2 例

AWS S3 CLI がアプリケーションである場合、以下のコマンドは OpenShift Container Storage のバケットを一覧表示します。

AWS_ACCESS_KEY_ID=<AWS_ACCESS_KEY_ID>
AWS_SECRET_ACCESS_KEY=<AWS_SECRET_ACCESS_KEY>
aws --endpoint <ENDPOINT> --no-verify-ssl s3 ls

第3章 Multicloud Object Gateway コンソールへのユーザーアクセスの許可

ユーザーに Multicloud Object Gateway コンソールへのアクセスを許可するには、ユーザーが以下の条件を満たしていることを確認してください。

  • ユーザーは cluster-admins グループに属する。
  • ユーザーは system:cluster-admins 仮想グループに属する。

前提条件

  • 実行中の OpenShift Container Storage Platform

手順

  1. Multicloud Object Gateway コンソールへのアクセスを有効にします。

    クラスターで以下の手順を実行します。

    1. cluster-admins グループを作成します。

      # oc adm groups new cluster-admins
    2. グループを cluster-admin ロールにバインドします。

      # oc adm policy add-cluster-role-to-group cluster-admin cluster-admins
  2. cluster-admins グループからユーザーを追加または削除して、Multicloud Object Gateway コンソールへのアクセスを制御します。

    • ユーザーのセットを cluster-admins グループに追加するには、以下を実行します。

      # oc adm groups add-users cluster-admins <user-name> <user-name> <user-name>...

      ここで、<user-name> は追加するユーザーの名前です。

      注記

      ユーザーのセットを cluster-admins グループに追加する場合、新たに追加されたユーザーを cluster-admin ロールにバインドし、OpenShift Container Storage ダッシュボードへのアクセスを許可する必要はありません。

    • ユーザーのセットを cluster-admins グループから削除するには、以下を実行します。

      # oc adm groups remove-users cluster-admins <user-name> <user-name> <user-name>...

      ここで、<user-name> は削除するユーザーの名前です。

検証手順

  1. OpenShift Web コンソールで、Multicloud Object Gateway コンソールへのアクセスパーミッションを持つユーザーとしてログインします。
  2. HomeOverviewObject Service タブ → に移動し、Multicloud Object Gateway リンクを選択します。
  3. Multicloud Object Gateway コンソールで、アクセスパーミッションを持つ同じユーザーでログインします。
  4. Allow selected permissions をクリックします。

第4章 ハイブリッドまたはマルチクラウドのストレージリソースの追加

4.1. 新規バッキングストアの作成

以下の手順を使用して、OpenShift Container Storage で新規バッキングストアを作成します。

前提条件

  • OpenShift への管理者アクセス。

手順

  1. OpenShift Web コンソールの左側のペインで Operators → Installed Operators をクリックし、インストールされた Operator を表示します。
  2. OpenShift Container Storage Operator をクリックします。
  3. OpenShift Container Storage Operator ページで右側にスクロールし、Backing Store タブをクリックします。
  4. Create Backing Store をクリックします。

    図4.1 Create Backing Store ページ

    Screenshot of create new backing store page.
  5. Create New Backing Store ページで、以下を実行します。

    1. Backing Store Name を入力します。
    2. プロバイダー を選択します。
    3. Region を選択します
    4. Endpoint を入力します。これはオプションです。
    5. ドロップダウンリストから Secret を選択するか、または独自のシークレットを作成します。オプションで、Switch to Credentials ビューを選択すると、必要なシークレットを入力できます。

      OCP シークレットの作成に関する詳細は、Openshift Container Platform ドキュメントの 「シークレットの作成 」セクションを参照してください。

      バッキングストアごとに異なるシークレットが必要です。特定のバッキングストアのシークレット作成についての詳細は 「MCG コマンドラインインターフェースを使用したハイブリッドまたはマルチクラウドのストレージリソースの追加」 を参照して、YAML を使用したストレージリソースの追加についての手順を実行します。

      注記

      このメニューは、Google Cloud およびローカル PVC 以外のすべてのプロバイダーに関連します。

    6. Target bucket を入力します。ターゲットバケットは、リモートクラウドサービスでホストされるコンテナーストレージです。MCG に対してシステム用にこのバケットを使用できることを通知する接続を作成できます。
  6. Create Backing Store をクリックします。

検証手順

  1. OperatorsInstalled Operators をクリックします。
  2. OpenShift Container Storage Operator をクリックします。
  3. 新規バッキングストアを検索するか、または Backing Store タブをクリックし、すべてのバッキングストアを表示します。

4.2. MCG コマンドラインインターフェースを使用したハイブリッドまたはマルチクラウドのストレージリソースの追加

Multicloud Object Gateway(MCG)は、クラウドプロバイダーおよびクラスター全体にまたがるデータの処理を単純化します。

MCG で使用できるバッキングストレージを追加する必要があります。

デプロイメントのタイプに応じて、以下のいずれかの手順を選択してバッキングストレージを作成できます。

VMware デプロイメントの場合は、「s3 と互換性のある Multicloud Object Gateway バッキングストアの作成」 に進みます。

4.2.1. AWS でサポートされるバッキングストアの作成

前提条件

  • Multicloud Object Gateway(MCG)コマンドラインインターフェースをダウンロードします。

    # subscription-manager repos --enable=rh-ocs-4-for-rhel-8-x86_64-rpms
    # yum install mcg
  • または、mcg パッケージを、https://access.redhat.com/downloads/content/547/ver=4/rhel---8/4/x86_64/packages にある OpenShift Container Storage RPM からインストールできます。https://access.redhat.com/downloads/content/547/ver=4/rhel---8/4/x86_64/packages

手順

  1. MCG コマンドラインインターフェースから、以下のコマンドを実行します。

    noobaa backingstore create aws-s3 <backingstore_name> --access-key=<AWS ACCESS KEY> --secret-key=<AWS SECRET ACCESS KEY> --target-bucket <bucket-name> -n openshift-storage
  1. <backingstore_name> を、バッキングストアの名前に置き換えます。
  2. <AWS ACCESS KEY> および <AWS SECRET ACCESS KEY> を、作成した AWS アクセスキー ID およびシークレットアクセスキーに置き換えます。
  3. <bucket-name> を既存の AWS バケット名に置き換えます。この引数は、Multicloud Object Gateway に対して、バッキングストア、およびその後のデータストレージおよび管理のためのターゲットバケットとして使用するバケットについて指示します。

    出力は次のようになります。

    INFO[0001] ✅ Exists: NooBaa "noobaa"
    INFO[0002] ✅ Created: BackingStore "aws-resource"
    INFO[0002] ✅ Created: Secret "backing-store-secret-aws-resource"

YAML を使用してストレージリソースを追加することもできます。

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

    apiVersion: v1
    kind: Secret
    metadata:
      name: <backingstore-secret-name>
      namespace: openshift-storage
    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. <backingstore-secret-name> を一意の名前に置き換えます。
  2. 特定のバッキングストアについて以下の YAML を適用します。

    apiVersion: noobaa.io/v1alpha1
    kind: BackingStore
    metadata:
      finalizers:
      - noobaa.io/finalizer
      labels:
        app: noobaa
      name: bs
      namespace: openshift-storage
    spec:
      awsS3:
        secret:
          name: <backingstore-secret-name>
          namespace: openshift-storage
        targetBucket: <bucket-name>
      type: aws-s3
    1. <bucket-name> を既存の AWS バケット名に置き換えます。この引数は、Multicloud Object Gateway に対して、バッキングストア、およびその後のデータストレージおよび管理のためのターゲットバケットとして使用するバケットについて指示します。
    2. <backingstore-secret-name> を、直前の手順で作成されたシークレットの名前に置き換えます。

4.2.2. IBM COS でサポートされるバッキングストアの作成

前提条件

  • Multicloud Object Gateway(MCG)コマンドラインインターフェースをダウンロードします。

    # subscription-manager repos --enable=rh-ocs-4-for-rhel-8-x86_64-rpms
    # yum install mcg
  • または、mcg パッケージを、https://access.redhat.com/downloads/content/547/ver=4/rhel---8/4/x86_64/packages にある OpenShift Container Storage RPM からインストールできます。https://access.redhat.com/downloads/content/547/ver=4/rhel---8/4/x86_64/packages

手順

  1. MCG コマンドラインインターフェースから、以下のコマンドを実行します。

    noobaa backingstore create ibm-cos <backingstore_name> --access-key=<IBM ACCESS KEY> --secret-key=<IBM SECRET ACCESS KEY> --endpoint=<IBM COS ENDPOINT> --target-bucket <bucket-name> -n openshift-storage
    1. <backingstore_name> を、バッキングストアの名前に置き換えます。
    2. <IBM ACCESS KEY>, <IBM SECRET ACCESS KEY>, <IBM COS ENDPOINT> を IBM アクセスキー ID、シークレットアクセスキー、および既存の IBM バケットの場所に対応する地域のエンドポイントに置き換えます。

      IBM クラウドで上記のキーを生成するには、ターゲットバケットのサービス認証情報を作成する際に HMAC 認証情報を含める必要があります。

    3. <bucket-name> を既存の IBM バケット名に置き換えます。この引数は、Multicloud Object Gateway に対して、バッキングストア、およびその後のデータストレージおよび管理のためのターゲットバケットとして使用するバケットについて指示します。

      出力は次のようになります。

      INFO[0001] ✅ Exists: NooBaa "noobaa"
      INFO[0002] ✅ Created: BackingStore "ibm-resource"
      INFO[0002] ✅ Created: Secret "backing-store-secret-ibm-resource"

YAML を使用してストレージリソースを追加することもできます。

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

    apiVersion: v1
    kind: Secret
    metadata:
      name: <backingstore-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. <backingstore-secret-name> を一意の名前に置き換えます。
  2. 特定のバッキングストアについて以下の YAML を適用します。

    apiVersion: noobaa.io/v1alpha1
    kind: BackingStore
    metadata:
      finalizers:
      - noobaa.io/finalizer
      labels:
        app: noobaa
      name: bs
      namespace: openshift-storage
    spec:
      ibmCos:
        endpoint: <endpoint>
        secret:
          name: <backingstore-secret-name>
          namespace: openshift-storage
        targetBucket: <bucket-name>
      type: ibm-cos
    1. <bucket-name> を既存の IBM COS バケット名に置き換えます。この引数は、Multicloud Object Gateway に対して、バッキングストア、およびその後のデータストレージおよび管理のためのターゲットバケットとして使用するバケットについて指示します。
    2. <endpoint> を、既存の IBM バケット名の場所に対応する地域のエンドポイントに置き換えます。この引数は、Multicloud Object Gateway に対して、バッキングストア、およびその後のデータストレージおよび管理に使用するエンドポイントについて指示します。
    3. <backingstore-secret-name> を、直前の手順で作成されたシークレットの名前に置き換えます。

4.2.3. Azure でサポートされるバッキングストアの作成

前提条件

  • Multicloud Object Gateway(MCG)コマンドラインインターフェースをダウンロードします。

    # subscription-manager repos --enable=rh-ocs-4-for-rhel-8-x86_64-rpms
    # yum install mcg
  • または、mcg パッケージを、https://access.redhat.com/downloads/content/547/ver=4/rhel---8/4/x86_64/packages にある OpenShift Container Storage RPM からインストールできます。https://access.redhat.com/downloads/content/547/ver=4/rhel---8/4/x86_64/packages

手順

  1. MCG コマンドラインインターフェースから、以下のコマンドを実行します。

    noobaa backingstore create azure-blob <backingstore_name> --account-key=<AZURE ACCOUNT KEY> --account-name=<AZURE ACCOUNT NAME> --target-blob-container <blob container name>
    1. <backingstore_name> を、バッキングストアの名前に置き換えます。
    2. <AZURE ACCOUNT KEY> および <AZURE ACCOUNT NAME> は、この目的のために作成した AZURE アカウントキーおよびアカウント名に置き換えます。
    3. <blob container name> を既存の Azure blob コンテナー名に置き換えます。この引数は、Multicloud Object Gateway に対して、バッキングストア、およびその後のデータストレージおよび管理のためのターゲットバケットとして使用するバケットについて指示します。

      出力は次のようになります。

      INFO[0001] ✅ Exists: NooBaa "noobaa"
      INFO[0002] ✅ Created: BackingStore "azure-resource"
      INFO[0002] ✅ Created: Secret "backing-store-secret-azure-resource"

YAML を使用してストレージリソースを追加することもできます。

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

    apiVersion: v1
    kind: Secret
    metadata:
      name: <backingstore-secret-name>
    type: Opaque
    data:
      AccountName: <AZURE ACCOUNT NAME ENCODED IN BASE64>
      AccountKey: <AZURE ACCOUNT KEY ENCODED IN BASE64>
    1. Base64 を使用して独自の Azure アカウント名およびアカウントキーを指定し、エンコードし、その結果を <AZURE ACCOUNT NAME ENCODED IN BASE64> および <AZURE ACCOUNT KEY ENCODED IN BASE64> に使用する必要があります。
    2. <backingstore-secret-name> を一意の名前に置き換えます。
  2. 特定のバッキングストアについて以下の YAML を適用します。

    apiVersion: noobaa.io/v1alpha1
    kind: BackingStore
    metadata:
      finalizers:
      - noobaa.io/finalizer
      labels:
        app: noobaa
      name: bs
      namespace: openshift-storage
    spec:
      azureBlob:
        secret:
          name: <backingstore-secret-name>
          namespace: openshift-storage
        targetBlobContainer: <blob-container-name>
      type: azure-blob
    1. <blob-container-name> を既存の Azure blob コンテナー名に置き換えます。この引数は、Multicloud Object Gateway に対して、バッキングストア、およびその後のデータストレージおよび管理のためのターゲットバケットとして使用するバケットについて指示します。
    2. <backingstore-secret-name> を、直前の手順で作成されたシークレットの名前に置き換えます。

4.2.4. GCP でサポートされるバッキングストアの作成

前提条件

  • Multicloud Object Gateway(MCG)コマンドラインインターフェースをダウンロードします。

    # subscription-manager repos --enable=rh-ocs-4-for-rhel-8-x86_64-rpms
    # yum install mcg
  • または、mcg パッケージを、https://access.redhat.com/downloads/content/547/ver=4/rhel---8/4/x86_64/packages にある OpenShift Container Storage RPM からインストールできます。https://access.redhat.com/downloads/content/547/ver=4/rhel---8/4/x86_64/packages

手順

  1. MCG コマンドラインインターフェースから、以下のコマンドを実行します。

    noobaa backingstore create google-cloud-storage <backingstore_name> --private-key-json-file=<PATH TO GCP PRIVATE KEY JSON FILE> --target-bucket <GCP bucket name>
    1. <backingstore_name> を、バッキングストアの名前に置き換えます。
    2. <PATH TO GCP PRIVATE KEY JSON FILE> を、この目的で作成された GCP プライベートキーへのパスに置き換えます。
    3. <GCP bucket name> を、既存の GCP オブジェクトストレージバケット名に置き換えます。この引数は、Multicloud Object Gateway に対して、バッキングストア、およびその後のデータストレージおよび管理のためのターゲットバケットとして使用するバケットについて指示します。

      出力は次のようになります。

      INFO[0001] ✅ Exists: NooBaa "noobaa"
      INFO[0002] ✅ Created: BackingStore "google-gcp"
      INFO[0002] ✅ Created: Secret "backing-store-google-cloud-storage-gcp"

YAML を使用してストレージリソースを追加することもできます。

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

    apiVersion: v1
    kind: Secret
    metadata:
      name: <backingstore-secret-name>
    type: Opaque
    data:
      GoogleServiceAccountPrivateKeyJson: <GCP PRIVATE KEY ENCODED IN BASE64>
    1. Base64 を使用して独自の GCP サービスアカウントプライベートキー ID を指定し、エンコードし、その結果を <GCP PRIVATE KEY ENCODED IN BASE64> の場所で使用する必要があります。
    2. <backingstore-secret-name> を一意の名前に置き換えます。
  2. 特定のバッキングストアについて以下の YAML を適用します。

    apiVersion: noobaa.io/v1alpha1
    kind: BackingStore
    metadata:
      finalizers:
      - noobaa.io/finalizer
      labels:
        app: noobaa
      name: bs
      namespace: openshift-storage
    spec:
      googleCloudStorage:
        secret:
          name: <backingstore-secret-name>
          namespace: openshift-storage
        targetBucket: <target bucket>
      type: google-cloud-storage
    1. <target bucket> を、既存の Google ストレージバケットに置き換えます。この引数は、Multicloud Object Gateway に対して、バッキングストア、およびその後のデータストレージおよび管理のためのターゲットバケットとして使用するバケットについて指示します。
    2. <backingstore-secret-name> を、直前の手順で作成されたシークレットの名前に置き換えます。

4.2.5. ローカル永続ボリュームでサポートされるバッキングストアの作成

前提条件

  • Multicloud Object Gateway(MCG)コマンドラインインターフェースをダウンロードします。

    # subscription-manager repos --enable=rh-ocs-4-for-rhel-8-x86_64-rpms
    # yum install mcg
  • または、mcg パッケージを、https://access.redhat.com/downloads/content/547/ver=4/rhel---8/4/x86_64/packages にある OpenShift Container Storage RPM からインストールできます。https://access.redhat.com/downloads/content/547/ver=4/rhel---8/4/x86_64/packages

手順

  1. MCG コマンドラインインターフェースから、以下のコマンドを実行します。

    noobaa backingstore create  pv-pool <backingstore_name> --num-volumes=<NUMBER OF VOLUMES>  --pv-size-gb=<VOLUME SIZE> --storage-class=<LOCAL STORAGE CLASS>
    1. <backingstore_name> を、バッキングストアの名前に置き換えます。
    2. <NUMBER OF VOLUMES> を、作成するボリューム数に置き換えます。ボリュームの数を増やすと、ストレージが拡大することに注意してください。
    3. <VOLUME SIZE> を、各ボリュームに必要なサイズ (GB 単位) に置き換えます。
    4. <LOCAL STORAGE CLASS> をローカルストレージクラスに置き換えます。これは、ocs-storagecluster-ceph-rbd を使用する際に推奨されます。

      出力は次のようになります。

      INFO[0001] ✅ Exists: NooBaa "noobaa"
      INFO[0002] ✅ Exists: BackingStore "local-mcg-storage"

YAML を使用してストレージリソースを追加することもできます。

  1. 特定のバッキングストアについて以下の YAML を適用します。

    apiVersion: noobaa.io/v1alpha1
    kind: BackingStore
    metadata:
      finalizers:
      - noobaa.io/finalizer
      labels:
        app: noobaa
      name: <backingstore_name>
      namespace: openshift-storage
    spec:
       pvPool:
        numVolumes: <NUMBER OF VOLUMES>
        resources:
          requests:
            storage: <VOLUME SIZE>
        storageClass: <LOCAL STORAGE CLASS>
      type: pv-pool
    1. <backingstore_name> を、バッキングストアの名前に置き換えます。
    2. <NUMBER OF VOLUMES> を、作成するボリューム数に置き換えます。ボリュームの数を増やすと、ストレージが拡大することに注意してください。
    3. <VOLUME SIZE> を、各ボリュームに必要なサイズ (GB 単位) に置き換えます。文字 G は残る必要があることに注意してください。
    4. <LOCAL STORAGE CLASS> をローカルストレージクラスに置き換えます。これは、ocs-storagecluster-ceph-rbd を使用する際に推奨されます。

4.3. s3 と互換性のある Multicloud Object Gateway バッキングストアの作成

Multicloud Object Gateway は、任意の S3 と互換性のあるオブジェクトストレージをバッキングストアとして使用できます(例: Red Hat Ceph Storage の RADOS Gateway(RGW))。以下の手順では、Red Hat Ceph Storage の RADOS Gateway 用に S3 と互換性のある Multicloud Object Gateway バッキングストアを作成する方法を説明します。RGW がデプロイされると、OpenShift Container Storage Operator は Multicloud Object Gateway の S3 と互換性のあるバッキングストアを自動的に作成することに注意してください。

手順

  1. Multicloud Object Gateway(MCG)コマンドラインインターフェースから、以下の NooBaa コマンドを実行します。

    noobaa backingstore create s3-compatible rgw-resource --access-key=<RGW ACCESS KEY> --secret-key=<RGW SECRET KEY> --target-bucket=<bucket-name> --endpoint=<RGW endpoint>
    1. <RGW ACCESS KEY> および <RGW SECRET KEY> を取得するには、RGW ユーザーシークレット名を使用して以下のコマンドを実行します。

      oc get secret <RGW USER SECRET NAME> -o yaml -n openshift-storage
    2. Base64 からアクセスキー ID とアクセスキーをデコードし、保持します。
    3. <RGW USER ACCESS KEY> および <RGW USER SECRET ACCESS KEY> を、直前の手順のデコードされた適切なデータに置き換えます。
    4. <bucket-name> を既存の RGW バケット名に置き換えます。この引数は、Multicloud Object Gateway に対して、バッキングストア、およびその後のデータストレージおよび管理のためのターゲットバケットとして使用するバケットについて指示します。
    5. <RGW endpoint> を取得するには、「 RADOS Object Gateway S3 エンドポイントへのアクセス 」を参照してください。

      出力は次のようになります。

      INFO[0001] ✅ Exists: NooBaa "noobaa"
      INFO[0002] ✅ Created: BackingStore "rgw-resource"
      INFO[0002] ✅ Created: Secret "backing-store-secret-rgw-resource"

YAML を使用してバッキングストアを作成することもできます。

  1. CephObjectStore ユーザーを作成します。これにより、RGW 認証情報が含まれるシークレットも作成されます。

    apiVersion: ceph.rook.io/v1
    kind: CephObjectStoreUser
    metadata:
      name: <RGW-Username>
      namespace: openshift-storage
    spec:
      store: ocs-storagecluster-cephobjectstore
      displayName: "<Display-name>"
    1. <RGW-Username> および <Display-name> を一意のユーザー名および表示名に置き換えます。
  2. 以下の YAML を S3 と互換性のあるバッキングストアについて適用します。

    apiVersion: noobaa.io/v1alpha1
    kind: BackingStore
    metadata:
      finalizers:
      - noobaa.io/finalizer
      labels:
        app: noobaa
      name: <backingstore-name>
      namespace: openshift-storage
    spec:
      s3Compatible:
        endpoint: <RGW endpoint>
        secret:
          name: <backingstore-secret-name>
          namespace: openshift-storage
        signatureVersion: v4
        targetBucket: <RGW-bucket-name>
      type: s3-compatible
    1. <backingstore-secret-name> を、直前の手順で CephObjectStore で作成したシークレットの名前に置き換えます。
    2. <bucket-name> を既存の RGW バケット名に置き換えます。この引数は、Multicloud Object Gateway に対して、バッキングストア、およびその後のデータストレージおよび管理のためのターゲットバケットとして使用するバケットについて指示します。
    3. <RGW endpoint> を取得するには、「 RADOS Object Gateway S3 エンドポイントへのアクセス 」を参照してください。

4.4. ユーザーインターフェースを使用したハイブリッドおよびマルチクラウドのストレージリソースの追加

手順

  1. OpenShift Storage コンソールで、OverviewObject ServiceMulticloud Object Gateway リンクをクリックします。
  2. 以下に強調表示されているように左側にある Resources タブを選択します。設定する一覧から、Add Cloud Resource を選択します。

    MCG add cloud resource
  3. Add new connection を選択します。

    MCG add new connection
  4. 関連するネイティブクラウドプロバイダーまたは S3 互換オプションを選択し、詳細を入力します。

    MCG add cloud connection
  5. 新規に作成された接続を選択し、これを既存バケットにマップします。

    MCG map to existing bucket
  6. これらの手順を繰り返して、必要な数のバッキングストアを作成します。
注記

NooBaa UI で作成されたリソースは、OpenShift UI または MCG CLI で使用できません。

4.5. 新規バケットクラスの作成

バケットクラスは、Object Bucket Class(OBC)の階層ポリシーおよびデータ配置を定義するバケットのクラスを表す CRD です。

以下の手順を使用して、OpenShift Container Storage でバケットクラスを作成します。

手順

  1. OpenShift Web コンソールの左側のペインで Operators → Installed Operators をクリックし、インストールされた Operator を表示します。
  2. OpenShift Container Storage Operator をクリックします。
  3. OpenShift Container Storage Operator ページで右側にスクロールし、Bucket Class タブをクリックします。
  4. Create Bucket Class をクリックします。
  5. Create new Bucket Class ページで、以下を実行します。

    1. Bucket Class Name を入力し、Next をクリックします。
    2. Placement Policy で Tier 1 - Policy Type を選択し、Next をクリックします。要件に応じて、いずれかのオプションを選択できます。

      • 分散 により、選択したリソース全体にデータを分散できます。
      • mirror により、選択したリソース全体でデータが完全に複製されます。
      • Add Tier をクリックし、別のポリシー階層を追加します。
    3. Tier 1 - Policy Type を Spread として選択している場合は、利用可能な一覧から少なくとも 1 つの Backing Store リソースを選択し、Next をクリックします。または、新規バッキングストアを作成 することもできます。

      注記

      直前の手順で Policy Type を Mirror と選択した場合は、2 つ以上のバッキングストアを選択する必要があります。

    4. Bucket Class 設定を確認し、確認します。
    5. Create Bucket Class をクリックします。

検証手順

  1. OperatorsInstalled Operators をクリックします。
  2. OpenShift Container Storage Operator をクリックします。
  3. 新しい Bucket Class を検索するか、または Bucket Class タブをクリックし、すべての Bucket Class を表示します。

4.6. バケットクラスの編集

以下の手順に従って、Openshift Web コンソールの edit ボタンをクリックし、YAML ファイルを使用してバケットクラスコンポーネントを編集します。

前提条件

  • OpenShift への管理者アクセス。

手順

  1. OpenShift Web コンソールにログインします
  2. OperatorsInstalled Operators をクリックします。
  3. OpenShift Container Storage Operator をクリックします。
  4. OpenShift Container Storage Operator ページで右側にスクロールし、Bucket Class タブをクリックします。
  5. 編集する Bucket クラスの横にあるアクションメニュー(⋮)をクリックします。
  6. Edit Bucket Class をクリックします。
  7. YAML ファイルにリダイレクトされ、このファイルで必要な変更を加え、Save をクリックします。

4.7. バケットクラスのバッキングストアの編集

以下の手順を使用して、既存の Multicloud Object Gateway バケットクラスを編集し、バケットクラスで使用される基礎となるバッキングストアを変更します。

前提条件

  • OpenShift Web コンソールへの管理者アクセス。
  • バケットクラス。
  • バッキングストア。

手順

  1. Operators → Installed Operators をクリックし、インストールされた Operator を表示します。
  2. OpenShift Container Storage Operator をクリックします。
  3. Bucket Class タブをクリックします。
  4. 編集する Bucket クラスの横にあるアクションメニュー(⋮)をクリックします。

    Edit bucket class resources
  5. Edit Bucket Class Resources をクリックします。
  6. Edit Bucket Class Resources ページで、バッキングストアをバケットクラスに追加するか、またはバケットクラスからバッキングストアを削除してバケットクラスリソースを編集します。1 つまたは 2 つの層で作成されたバケットクラスリソースや、異なる配置ポリシーで編集することもできます。

    • バッキングストアをバケットクラスに追加するには、バッキングストアの名前を選択します。
    • バケットクラスからバッキングストアを削除するには、バッキングストアの名前を消去します。

      Editing backing stores for the bucket class
  7. 保存 をクリックします。

第5章 namespace バケットの管理

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

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

注記

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

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

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

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

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

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

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

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

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> に使用する必要があります。ii.<namespacestore-secret-name> を一意の名前に置き換えます。
  2. OpenShift カスタムリソース定義(CRD)を使用して NamespaceStore リソースを作成します。NamespaceStore は、Multicloud Object Gateway namespace バケットでデータの読み取りおよび書き込みターゲットとして使用される基礎となるストレージを表します。NamespaceStore リソースを作成するには、以下の YAML を適用します。

    apiVersion: noobaa.io/v1alpha1
    kind: NamespaceStore
    metadata:
      finalizers:
      - noobaa.io/finalizer
      labels:
        app: noobaa
      name: mybucketnamespace
      namespace: k8snamespace
    spec:
      awsS3:
        secret:
          name: <namespacestore-secret-name>
          namespace: k8snamespace
        targetBucket: awsdatalake
      type: aws-s3
    1. <namespacestore-secret-name> を、手順 1 で作成したシークレットに置き換えます。
  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. 以下の YAML を適用して、手順 2 に定義されたバケットクラスを使用する Object Bucket Class(OBC)リソースを使用してバケットを作成します。

    apiVersion: objectbucket.io/v1alpha1
    kind: ObjectBucketClaim
    metadata:
      name: my-bucket-claim
      namespace: my-app
    spec:
      generateBucketName: my-bucket
      storageClassName: noobaa.noobaa.io
      additionalConfig:
        bucketclass: <my-bucket-class>
    1. <my-bucket-class> を直前の手順で作成したバケットクラスに置き換えます。

OBC が Operator によってプロビジョニングされると、バケットが Multicloud Object Gateway で作成され、Operator は OBC の同じ namespace にある OBC の名前で Secret および ConfigMap を作成します。

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 は、Multicloud Object Gateway namespace バケットでデータの読み取りおよび書き込みターゲットとして使用される基礎となるストレージを表します。NamespaceStore リソースを作成するには、以下の YAML を適用します。

    apiVersion: noobaa.io/v1alpha1
    kind: NamespaceStore
    metadata:
      finalizers:
      - noobaa.io/finalizer
      labels:
        app: noobaa
      name: bs
      namespace: k8snamespace
    spec:
      s3Compatible:
        endpoint: <IBM COS ENDPOINT>
        secret:
          name: <namespacestore-secret-name>
          namespace: openshift-storage
        signatureVersion: v2
        targetBucket: BUCKET
      type: ibm-cos
    1. <IBM COS ENDPOINT> を適切な IBM COS エンドポイントに置き換えます。
    2. <namespacestore-secret-name> を手順 1 で作成したシークレットに置き換えます。
  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. 以下の YAML を適用して、手順 2 に定義されたバケットクラスを使用する Object Bucket Class(OBC)リソースを使用してバケットを作成します。

    apiVersion: objectbucket.io/v1alpha1
    kind: ObjectBucketClaim
    metadata:
      name: my-bucket-claim
      namespace: my-app
    spec:
      generateBucketName: my-bucket
      storageClassName: noobaa.noobaa.io
      additionalConfig:
        bucketclass: <my-bucket-class>
    1. <my-bucket-class> を直前の手順で作成したバケットクラスに置き換えます。

OBC が Operator によってプロビジョニングされると、バケットが Multicloud Object Gateway で作成され、Operator は OBC の同じ namespace にある OBC の名前で Secret および ConfigMap を作成します。

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

前提条件

手順

  1. NamespaceStore リソースを作成します。NamespaceStore は、Multicloud Object Gateway 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 バケット名に置き換えます。この引数は、Multicloud Object Gateway に対して、バッキングストア、およびその後のデータストレージおよび管理のためのターゲットバケットとして使用するバケットについて指示します。
  2. namespace バケットの namespace ポリシーを定義する namespace バケットクラスを作成します。Namespace ポリシーには、single または multi の タイプが必要です。

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

      noobaa bucketclass create namespace-bucketclass single <my-bucket-class> --resource <resource> -n openshift-storage

      <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

      <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. <custom-bucket-class> を、手順 2 で作成したバケットクラスの名前に置き換えます。

OBC が Operator によってプロビジョニングされると、バケットが Multicloud Object Gateway で作成され、Operator は OBC の同じ namespace にある OBC の名前で Secret および ConfigMap を作成します。

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

前提条件

手順

  1. NamespaceStore リソースを作成します。NamespaceStore は、Multicloud Object Gateway 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 バケット名に置き換えます。この引数は、Multicloud Object Gateway に対して、バッキングストア、およびその後のデータストレージおよび管理のためのターゲットバケットとして使用するバケットについて指示します。
  2. namespace バケットの namespace ポリシーを定義する namespace バケットクラスを作成します。Namespace ポリシーには、single または multi の タイプが必要です。

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

      noobaa bucketclass create namespace-bucketclass single <my-bucket-class> --resource <resource> -n openshift-storage

      <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

      <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. <custom-bucket-class> を、手順 2 で作成したバケットクラスの名前に置き換えます。

OBC が Operator によってプロビジョニングされると、バケットが Multicloud Object Gateway で作成され、Operator は OBC の同じ namespace にある OBC の名前で Secret および ConfigMap を作成します。

第6章 ハイブリッドおよびマルチクラウドバケットのデータのミラーリング

Multicloud Object Gateway(MCG)は、クラウドプロバイダーおよびクラスター全体にまたがるデータの処理を単純化します。

前提条件

次に、データ管理ポリシー(ミラーリング)を反映するバケットクラスを作成します。

手順

ミラーリングデータは、以下の 3 つの方法で設定できます。

6.1. MCG コマンドラインインターフェースを使用したデータのミラーリング用のバケットクラスの作成

  1. MCG コマンドラインインターフェースから以下のコマンドを実行し、ミラーリングポリシーでバケットクラスを作成します。

    $ noobaa bucketclass create placement-bucketclass mirror-to-aws --backingstores=azure-resource,aws-resource --placement Mirror
  2. 新規に作成されたバケットクラスを新規のバケット要求に設定し、2 つの場所間でミラーリングされる新規バケットを生成します。

    $ noobaa obc create  mirrored-bucket --bucketclass=mirror-to-aws

6.2. YAML を使用したデータのミラーリング用のバケットクラスの作成

  1. 以下の YAML を適用します。

    apiVersion: noobaa.io/v1alpha1
    kind: BucketClass
    metadata:
      labels:
        app: noobaa
      name: <bucket-class-name>
      namespace: openshift-storage
    spec:
      placementPolicy:
        tiers:
        - backingStores:
          - <backing-store-1>
          - <backing-store-2>
          placement: Mirror
  2. 以下の行を標準の Object Bucket Claim(オブジェクトバケット要求、OBC)に追加します。

    additionalConfig:
      bucketclass: mirror-to-aws

    OBC についての詳細は、8章Object Bucket Claim(オブジェクトバケット要求)を参照してください。

6.3. ユーザーインターフェースを使用したデータミラーリングを行うためのバケットの設定

  1. OpenShift Storage コンソールで、OverviewObject ServiceMulticloud Object Gateway リンクをクリックします。
  2. NooBaa ページの左側にある buckets アイコンをクリックします。バケットの一覧が表示されます。

    MCG noobaa bucket icon
  3. 更新するバケットをクリックします。
  4. Edit Tier 1 Resources をクリックします。

    MCG edit tier 1 resources
  5. Mirror を選択し、このバケットに使用する関連リソースを確認します。次の例では、RGW にあるnoobaa-default-backing-storeと AWS にあるAWS-backingstore の間のデータがミラーリングされます。

    MCG mirror relevant resources
  6. 保存 をクリックします。
注記

NooBaa UI で作成されたリソースは、OpenShift UI または MCG CLI で使用できません。

第7章 Multicloud Object Gateway のバケットポリシー

OpenShift Container Storage は AWS S3 バケットポリシーをサポートします。バケットポリシーにより、ユーザーにバケットおよびそれら内のオブジェクトのアクセスパーミッションを付与することができます。

7.1. バケットポリシーについて

バケットポリシーは、AWS S3 バケットおよびオブジェクトにパーミッションを付与するために利用できるアクセスポリシーオプションです。バケットポリシーは JSON ベースのアクセスポリシー言語を使用します。アクセスポリシー言語についての詳細は、「 AWS Access Policy Language Overview 」を参照してください。

7.2. バケットポリシーの使用

前提条件

手順

Multicloud Object Gateway でバケットポリシーを使用するには、以下を実行します。

  1. JSON 形式でバケットポリシーを作成します。以下の例を参照してください。

    {
        "Version": "NewVersion",
        "Statement": [
            {
                "Sid": "Example",
                "Effect": "Allow",
                "Principal": [
                        "john.doe@example.com"
                ],
                "Action": [
                    "s3:GetObject"
                ],
                "Resource": [
                    "arn:aws:s3:::john_bucket"
                ]
            }
        ]
    }

    アクセスパーミッションに関して、バケットポリシーには数多くの利用可能な要素があります。

    これらの要素の詳細と、それらを使用してアクセスパーミッションを制御する方法の例は、AWS Access Policy Language Overview を参照してください。

    バケットポリシーの他の例については、「 AWS バケットポリシーの例 」を参照してください。

    S3 ユーザーの作成方法については、「Multicloud Object Gateway での AWS S3 ユーザーの作成」 を参照してください。

  2. AWS S3 クライアントを使用して put-bucket-policy コマンドを使用してバケットポリシーを S3 バケットに適用します。

    # aws --endpoint ENDPOINT --no-verify-ssl s3api put-bucket-policy --bucket MyBucket --policy BucketPolicy

    ENDPOINT を S3 エンドポイントに置き換えます。

    MyBucket を、ポリシーを設定するバケットに置き換えます。

    BucketPolicy をバケットポリシー JSON ファイルに置き換えます。

    デフォルトの自己署名証明書を使用している場合は 、--no-verify-ssl を追加します。

    以下は例になります。

    # aws --endpoint https://s3-openshift-storage.apps.gogo44.noobaa.org --no-verify-ssl s3api put-bucket-policy -bucket MyBucket --policy file://BucketPolicy

    put-bucket-policy コマンドについての詳細は、「 AWS CLI Command Reference for put-bucket-policy 」を参照してください。

注記

principal 要素は、リソース(バケットなど)へのアクセスを許可または拒否されるユーザーを指定します。現在、NooBaa アカウントのみがプリンシパルとして使用できます。Object Bucket Claim (オブジェクトバケット要求) の場合、NooBaa はアカウント obc-account.<generated bucket name>@noobaa.io を自動的に作成します。

注記

バケットポリシー条件はサポートされていません。

7.3. Multicloud Object Gateway での AWS S3 ユーザーの作成

前提条件

手順

  1. OpenShift Storage コンソールで、OverviewObject Service → に移動し、Multicloud Object Gateway リンクを選択します。

    MCG object service noobaa link
  2. Accounts タブで、Create Account をクリックします。

    MCG accounts create account button
  3. S3 Access Only を選択し、Account Name を指定します(例: john.doe@example.com)。Next をクリックします。

    MCG create account s3 user
  4. S3 default placement を選択します(例: noobaa-default-backing-store)。Buckets Permissions を選択します。特定のバケットまたはすべてのバケットを選択できます。Create クリックします。

    MCG create account s3 user2

第8章 Object Bucket Claim(オブジェクトバケット要求)

Object Bucket Claim(オブジェクトバケット要求)は、ワークロードの S3 と互換性のあるバケットバックエンドを要求するために使用できます。

Object Bucket Claim(オブジェクトバケット要求)は 3 つの方法で作成できます。

Object Bucket Claim(オブジェクトバケット要求)は、新規アクセスキーおよびシークレットアクセスキーを含む、バケットへのパーミッションを持つ NooBaa に新しいバケットおよびアプリケーションアカウントを作成します。アプリケーションアカウントは単一のバケットにのみアクセスでき、デフォルトで新規バケットを作成することはできません。

8.1. 動的 Object Bucket Claim(オブジェクトバケット要求)

永続ボリュームと同様に、Object Bucket Claim(オブジェクトバケット要求)の詳細をアプリケーションの YAML に追加し、設定マップおよびシークレットで利用可能なオブジェクトサービスエンドポイント、アクセスキー、およびシークレットアクセスキーを取得できます。この情報は、アプリケーションの環境変数に動的に読み込むことができます。

手順

  1. 以下の行をアプリケーション YAML に追加します。

    apiVersion: objectbucket.io/v1alpha1
    kind: ObjectBucketClaim
    metadata:
      name: <obc-name>
    spec:
      generateBucketName: <obc-bucket-name>
      storageClassName: openshift-storage.noobaa.io

    これらの行は Object Bucket Claim(オブジェクトバケット要求)自体になります。

    1. <obc-name> を一意の Object Bucket Claim(オブジェクトバケット要求)の名前に置き換えます。
    2. <obc-bucket-name> を、Object Bucket Claim(オブジェクトバケット要求)の一意のバケット名に置き換えます。
  2. YAML ファイルにさらに行を追加して、Object Bucket Claim(オブジェクトバケット要求)の使用を自動化できます。以下の例は、バケット要求の結果のマッピングです。これは、データを含む設定マップおよび認証情報のあるシークレットです。この特定のジョブは NooBaa からオブジェクトバケットを要求し、バケットとアカウントを作成します。

    apiVersion: batch/v1
    kind: Job
    metadata:
      name: testjob
    spec:
      template:
        spec:
          restartPolicy: OnFailure
          containers:
            - image: <your application image>
              name: test
              env:
                - name: BUCKET_NAME
                  valueFrom:
                    configMapKeyRef:
                      name: <obc-name>
                      key: BUCKET_NAME
                - name: BUCKET_HOST
                  valueFrom:
                    configMapKeyRef:
                      name: <obc-name>
                      key: BUCKET_HOST
                - name: BUCKET_PORT
                  valueFrom:
                    configMapKeyRef:
                      name: <obc-name>
                      key: BUCKET_PORT
                - name: AWS_ACCESS_KEY_ID
                  valueFrom:
                    secretKeyRef:
                      name: <obc-name>
                      key: AWS_ACCESS_KEY_ID
                - name: AWS_SECRET_ACCESS_KEY
                  valueFrom:
                    secretKeyRef:
                      name: <obc-name>
                      key: AWS_SECRET_ACCESS_KEY
    1. <obc-name> のすべてのインスタンスを Object Bucket Claim(オブジェクトバケット要求)の名前に置き換えます。
    2. <your application image> をアプリケーションイメージに置き換えます。
  3. 更新された YAML ファイルを適用します。

    # oc apply -f <yaml.file>
    1. <yaml.file> を YAML ファイルの名前に置き換えます。
  4. 新規設定マップを表示するには、以下を実行します。

    # oc get cm <obc-name>
    1. obc-name を、Object Bucket Claim(オブジェクトバケット要求)の名前に置き換えます。

      出力では、以下の環境変数が表示されることが予想されます。

      • BUCKET_HOST: アプリケーションで使用するエンドポイント
      • BUCKET_PORT: アプリケーションで利用できるポート

        • ポートは BUCKET_HOST に関連します。たとえば、BUCKET_HOSThttps://my.example.com で、BUCKET_PORT が 443 の場合、オブジェクトサービスのエンドポイントは https://my.example.com:443 になります。
      • BUCKET_NAME: 要求されるか、または生成されるバケット名
      • AWS_ACCESS_KEY_ID: 認証情報の一部であるアクセスキー
      • AWS_SECRET_ACCESS_KEY: 認証情報の一部であるシークレットのアクセスキー
重要

AWS_ACCESS_KEY_ID および AWS_SECRET_ACCESS_KEY を取得します。名前は AWS S3 API との互換性を確保するために使用されます。S3 操作の実行中にキーを指定する必要があります(特に Multicloud Object Gateway(MCG)バケットから読み取り、書き込み、または一覧する場合)。キーは Base64 でエンコードされます。鍵を使用する前にデコードします。

# oc get secret <obc_name> -o yaml
<obc_name>
Object Bucket Claim(オブジェクトバケット要求)の名前を指定します。

8.2. コマンドラインインターフェースを使用した Object Bucket Claim(オブジェクトバケット要求)の作成

コマンドラインインターフェースを使用して Object Bucket Claim(オブジェクトバケット要求)を作成する場合、設定マップとシークレットを取得し、アプリケーションがオブジェクトストレージサービスを使用するために必要なすべての情報が含まれます。

前提条件

  • MCG コマンドラインインターフェースをダウンロードします。

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

手順

  1. コマンドラインインターフェースを使用して、新規バケットおよび認証情報の詳細を生成します。以下のコマンドを実行します。

    # noobaa obc create <obc-name> -n openshift-storage

    <obc-name> を一意の Object Bucket Claim(オブジェクトバケット要求)の名前に置き換えます(例: myappobc )。

    さらに 、--app-namespace オプションを使用して、Object Bucket Claim(オブジェクトバケット要求)設定マップおよびシークレットが作成される namespace を指定できます(例: myapp-namespace )。

    出力例:

    INFO[0001] ✅ Created: ObjectBucketClaim "test21obc"

    MCG コマンドラインインターフェースが必要な設定を作成し、新規 OBC について OpenShift に通知します。

  2. 以下のコマンドを実行して Object Bucket Claim(オブジェクトバケット要求)を表示します。

    # oc get obc -n openshift-storage

    出力例:

    NAME        STORAGE-CLASS                 PHASE   AGE
    test21obc   openshift-storage.noobaa.io   Bound   38s
  3. 以下のコマンドを実行して、新規 Object Bucket Claim(オブジェクトバケット要求)の YAML ファイルを表示します。

    # oc get obc test21obc -o yaml -n openshift-storage

    出力例:

    apiVersion: objectbucket.io/v1alpha1
    kind: ObjectBucketClaim
    metadata:
      creationTimestamp: "2019-10-24T13:30:07Z"
      finalizers:
      - objectbucket.io/finalizer
      generation: 2
      labels:
        app: noobaa
        bucket-provisioner: openshift-storage.noobaa.io-obc
        noobaa-domain: openshift-storage.noobaa.io
      name: test21obc
      namespace: openshift-storage
      resourceVersion: "40756"
      selfLink: /apis/objectbucket.io/v1alpha1/namespaces/openshift-storage/objectbucketclaims/test21obc
      uid: 64f04cba-f662-11e9-bc3c-0295250841af
    spec:
      ObjectBucketName: obc-openshift-storage-test21obc
      bucketName: test21obc-933348a6-e267-4f82-82f1-e59bf4fe3bb4
      generateBucketName: test21obc
      storageClassName: openshift-storage.noobaa.io
    status:
      phase: Bound
  4. openshift-storage namespace 内で、設定マップおよびシークレットを見つけ、この Object Bucket Claim(オブジェクトバケット要求)を使用することができます。CM とシークレットの名前はこの Object Bucket Claim(オブジェクトバケット要求)の名前と同じです。シークレットを表示するには、以下を実行します。

    # oc get -n openshift-storage secret test21obc -o yaml

    出力例:

    Example output:
    apiVersion: v1
    data:
      AWS_ACCESS_KEY_ID: c0M0R2xVanF3ODR3bHBkVW94cmY=
      AWS_SECRET_ACCESS_KEY: Wi9kcFluSWxHRzlWaFlzNk1hc0xma2JXcjM1MVhqa051SlBleXpmOQ==
    kind: Secret
    metadata:
      creationTimestamp: "2019-10-24T13:30:07Z"
      finalizers:
      - objectbucket.io/finalizer
      labels:
        app: noobaa
        bucket-provisioner: openshift-storage.noobaa.io-obc
        noobaa-domain: openshift-storage.noobaa.io
      name: test21obc
      namespace: openshift-storage
      ownerReferences:
      - apiVersion: objectbucket.io/v1alpha1
        blockOwnerDeletion: true
        controller: true
        kind: ObjectBucketClaim
        name: test21obc
        uid: 64f04cba-f662-11e9-bc3c-0295250841af
      resourceVersion: "40751"
      selfLink: /api/v1/namespaces/openshift-storage/secrets/test21obc
      uid: 65117c1c-f662-11e9-9094-0a5305de57bb
    type: Opaque

    シークレットは S3 アクセス認証情報を提供します。

  5. 設定マップを表示するには、以下を実行します。

    # oc get -n openshift-storage cm test21obc -o yaml

    出力例:

    apiVersion: v1
    data:
      BUCKET_HOST: 10.0.171.35
      BUCKET_NAME: test21obc-933348a6-e267-4f82-82f1-e59bf4fe3bb4
      BUCKET_PORT: "31242"
      BUCKET_REGION: ""
      BUCKET_SUBREGION: ""
    kind: ConfigMap
    metadata:
      creationTimestamp: "2019-10-24T13:30:07Z"
      finalizers:
      - objectbucket.io/finalizer
      labels:
        app: noobaa
        bucket-provisioner: openshift-storage.noobaa.io-obc
        noobaa-domain: openshift-storage.noobaa.io
      name: test21obc
      namespace: openshift-storage
      ownerReferences:
      - apiVersion: objectbucket.io/v1alpha1
        blockOwnerDeletion: true
        controller: true
        kind: ObjectBucketClaim
        name: test21obc
        uid: 64f04cba-f662-11e9-bc3c-0295250841af
      resourceVersion: "40752"
      selfLink: /api/v1/namespaces/openshift-storage/configmaps/test21obc
      uid: 651c6501-f662-11e9-9094-0a5305de57bb

    設定マップには、アプリケーションの S3 エンドポイント情報が含まれます。

8.3. OpenShift Web コンソールを使用した Object Bucket Claim(オブジェクトバケット要求)の作成

OpenShift Web コンソールを使用して Object Bucket Claim(オブジェクトバケット要求)を作成できます。

前提条件

手順

  1. OpenShift Web コンソールにログインします。
  2. 左側のナビゲーションバーで StorageObject Bucket Claims をクリックします。
  3. Create Object Bucket Claim をクリックします。

    Create Object Bucket Claims page
  4. Object Bucket Claim(オブジェクトバケット要求)の名前を入力し、ドロップダウンメニューから内部または外部のデプロイメントに応じて適切なストレージクラスを選択します。

    内部モード

    Create Object Bucket Claim wizard

    デプロイメント後に作成された以下のストレージクラスを使用できます。

    • ocs-storagecluster-ceph-rgw は Ceph Object Gateway (RGW) を使用します。
    • openshift-storage.noobaa.io は Multicloud Object Gateway を使用します。

    外部モード

    Create Object Bucket Claim wizard

    デプロイメント後に作成された以下のストレージクラスを使用できます。

    • ocs-external-storagecluster-ceph-rgw は Ceph Object Gateway (RGW) を使用します。
    • openshift-storage.noobaa.io は Multicloud Object Gateway を使用します。

      注記

      RGW OBC ストレージクラスは、OpenShift Container Storage バージョン 4.5 の新規インストールでのみ利用できます。これは、以前の OpenShift Container Storage リリースからアップグレードされたクラスターには適用されません。

  5. Create をクリックします。

    OBC を作成すると、その詳細ページにリダイレクトされます。

    Object Bucket Claim Details page

8.4. Object Bucket Claim(オブジェクトバケット要求)のデプロイメントへの割り当て

作成されると、Object Bucket Claim(オブジェクトバケット要求、OBC)を特定のデプロイメントに割り当てることができます。

前提条件

  • OpenShift Web コンソールへの管理者アクセス。

手順

  1. 左側のナビゲーションバーで StorageObject Bucket Claims をクリックします。
  2. 作成した OBC の横にあるアクションメニュー(⋮)をクリックします。
  3. ドロップダウンメニューから、Attach to Deployment を選択します。

    Attach Object Bucket Claim to deployment
  4. Deployment Name 一覧から必要なデプロイメントを選択し、Attach をクリックします。

    Deployment Name list

8.5. OpenShift Web コンソールを使用したオブジェクトバケットの表示

OpenShift Web コンソールを使用して、Object Bucket Claim(オブジェクトバケット要求、OBC)用に作成されたオブジェクトバケットの詳細を表示できます。

前提条件

  • OpenShift Web コンソールへの管理者アクセス。

手順

オブジェクトバケットの詳細を表示するには、以下を実行します。

  1. OpenShift Web コンソールにログインします。
  2. 左側のナビゲーションバーで StorageObject Buckets をクリックします。

    Object Buckets page

    特定の OBC の詳細ページに移動し、Resource リンクをクリックして、その OBC のオブジェクトバケットを表示できます。

  3. 詳細を表示するオブジェクトバケットを選択します。オブジェクトバケットの詳細ページに移動します。

    Object Bucket Details page

8.6. Object Bucket Claim(オブジェクトバケット要求)の削除

前提条件

  • OpenShift Web コンソールへの管理者アクセス。

手順

  1. 左側のナビゲーションバーで StorageObject Bucket Claims をクリックします。
  2. 削除する Object Bucket Claim(オブジェクトバケット要求)の横にあるアクションメニュー(⋮)をクリックします。

    MCG OBC action menu attach to deployment
  3. メニューから Delete Object Bucket Claim を選択します。

    MCG delete object bucket claim
  4. 削除 をクリックします。

第9章 オブジェクトバケットのキャッシュポリシー

キャッシュバケットは、ハブのターゲットとキャッシュターゲットが指定された namespace バケットです。ハブのターゲットは、S3 と互換性のある大規模なオブジェクトストレージバケットです。キャッシュバケットは、ローカルの Multicloud Object Gateway バケットです。AWS バケットまたは IBM COS バケットをキャッシュするキャッシュバケットを作成できます。

重要

キャッシュバケットはテクノロジープレビュー機能です。テクノロジープレビュー機能は Red Hat の実稼働環境でのサービスレベルアグリーメント (SLA) ではサポートされていないため、Red Hat では実稼働環境での使用を推奨していません。Red Hat は実稼働環境でこれらを使用することを推奨していません。これらの機能は、近々発表予定の製品機能をリリースに先駆けてご提供することにより、お客様は機能性をテストし、開発プロセス中にフィードバックをお寄せいただくことができます。

詳細は、「テクノロジープレビュー機能のサポート範囲」を参照してください。

9.1. AWS キャッシュバケットの作成

前提条件

  • Multicloud Object Gateway(MCG)コマンドラインインターフェースをダウンロードします。

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

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

手順

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

    noobaa namespacestore create aws-s3 <namespacestore> --access-key <AWS ACCESS KEY> --secret-key <AWS SECRET ACCESS KEY> --target-bucket <bucket-name>
    1. <namespacestore> を NamespaceStore の名前に置き換えます。
    2. <AWS ACCESS KEY> および <AWS SECRET ACCESS KEY> を、作成した AWS アクセスキー ID およびシークレットアクセスキーに置き換えます。
    3. <bucket-name> を既存の AWS バケット名に置き換えます。この引数は、Multicloud Object Gateway に対して、バッキングストア、およびその後のデータストレージおよび管理のためのターゲットバケットとして使用するバケットについて指示します。

      YAML を適用してストレージリソースを追加することもできます。まず、認証情報を使用してシークレットを作成します。

      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>

      Base64 を使用して独自の AWS アクセスキー ID およびシークレットアクセスキーを指定し、エンコードし、その結果を <AWS ACCESS KEY ID ENCODED IN BASE64> および < AWS SECRET ACCESS KEY ENCODED IN BASE64> に使用する必要があります。

      <namespacestore-secret-name> を一意の名前に置き換えます。

      次に、以下の YAML を適用します。

      apiVersion: noobaa.io/v1alpha1
      kind: NamespaceStore
      metadata:
        finalizers:
        - noobaa.io/finalizer
        labels:
          app: noobaa
        name: <namespacestore>
        namespace: openshift-storage
      spec:
        awsS3:
          secret:
            name: <namespacestore-secret-name>
            namespace: <namespace-secret>
          targetBucket: <target-bucket>
        type: aws-s3
    4. <namespacestore> を一意の名前に置き換えます。
    5. <namespacestore-secret-name> を、直前の手順で作成されたシークレットに置き換えます。
    6. <namespace-secret> を、直前の手順でシークレットを作成するために使用された namespace に置き換えます。
    7. <target-bucket> を namespacestore 用に作成した AWS S3 バケットに置き換えます。
  2. 以下のコマンドを実行してバケットクラスを作成します。

    noobaa bucketclass create namespace-bucketclass cache <my-cache-bucket-class> --backingstores <backing-store> --hub-resource <namespacestore>
    1. <my-cache-bucket-class> を一意のバケットクラス名に置き換えます。
    2. <backing-store> を関連するバッキングストアに置き換えます。コンマで区切られた 1 つ以上のバッキングストアを一覧表示できます。
    3. <namespacestore> を、直前の手順で作成された namespacestore に置き換えます。
  3. 以下のコマンドを実行して、手順 2 に定義されたバケットクラスを使用する Object Bucket Claim(オブジェクトバケット要求)リソースを使用してバケットを作成します。

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

9.2. IBM COS キャッシュバケットの作成

前提条件

  • Multicloud Object Gateway(MCG)コマンドラインインターフェースをダウンロードします。

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

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

手順

  1. NamespaceStore リソースを作成します。NamespaceStore は、Multicloud Object Gateway 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>
    1. <namespacestore> を NamespaceStore の名前に置き換えます。
    2. <IBM ACCESS KEY>, <IBM SECRET ACCESS KEY>, <IBM COS ENDPOINT> を IBM アクセスキー ID、シークレットアクセスキー、および既存の IBM バケットの場所に対応する地域のエンドポイントに置き換えます。
    3. <bucket-name> を既存の IBM バケット名に置き換えます。この引数は、Multicloud Object Gateway に対して、バッキングストア、およびその後のデータストレージおよび管理のためのターゲットバケットとして使用するバケットについて指示します。

      YAML を適用してストレージリソースを追加することもできます。まず、認証情報を使用してシークレットを作成します。

      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>

      Base64 を使用して独自の IBM COSアクセスキー ID およびシークレットアクセスキーを指定し、エンコードし、その結果を <IBM COS ACCESS KEY ID ENCODED IN BASE64> および <IBM COS SECRET ACCESS KEY ENCODED IN BASE64>` に使用する必要があります。

      <namespacestore-secret-name> を一意の名前に置き換えます。

      次に、以下の YAML を適用します。

      apiVersion: noobaa.io/v1alpha1
      kind: NamespaceStore
      metadata:
        finalizers:
        - noobaa.io/finalizer
        labels:
          app: noobaa
        name: <namespacestore>
        namespace: openshift-storage
      spec:
        s3Compatible:
          endpoint: <IBM COS ENDPOINT>
          secret:
            name: <backingstore-secret-name>
            namespace: <namespace-secret>
          signatureVersion: v2
          targetBucket: <target-bucket>
        type: ibm-cos
    4. <namespacestore> を一意の名前に置き換えます。
    5. <IBM COS ENDPOINT> を適切な IBM COS エンドポイントに置き換えます。
    6. <backingstore-secret-name> を、直前の手順で作成されたシークレットに置き換えます。
    7. <namespace-secret> を、直前の手順でシークレットを作成するために使用された namespace に置き換えます。
    8. <target-bucket> を namespacestore 用に作成した AWS S3 バケットに置き換えます。
  2. 以下のコマンドを実行してバケットクラスを作成します。

    noobaa bucketclass create namespace-bucketclass cache <my-bucket-class> --backingstores <backing-store> --hubResource <namespacestore>
    1. <my-bucket-class> を一意のバケットクラス名に置き換えます。
    2. <backing-store> を関連するバッキングストアに置き換えます。コンマで区切られた 1 つ以上のバッキングストアを一覧表示できます。
    3. <namespacestore> を、直前の手順で作成された namespacestore に置き換えます。
  3. 以下のコマンドを実行して、手順 2 に定義されたバケットクラスを使用する Object Bucket Claim(オブジェクトバケット要求)リソースを使用してバケットを作成します。

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

第10章 エンドポイントの追加による Multicloud Object Gateway パフォーマンスのスケーリング

Multicloud Object Gateway のパフォーマンスは環境によって異なる場合があります。特定のアプリケーションでは、高速なパフォーマンスを必要とする場合があり、これは S3 エンドポイントをスケーリングして簡単に対応できます。これは、テクノロジープレビュー機能となっています。

Multicloud Object Gateway リソースプールは、デフォルトで有効にされる 2 種類のサービスを提供する NooBaa デーモンコンテナーのグループです。

  • ストレージサービス
  • S3 エンドポイントサービス
重要

エンドポイントの追加による Multicloud Object Gateway パフォーマンスのスケーリングは、テクノロジープレビュー機能です。テクノロジープレビュー機能は Red Hat の実稼働環境でのサービスレベルアグリーメント (SLA) ではサポートされていないため、Red Hat では実稼働環境での使用を推奨していません。Red Hat は実稼働環境でこれらを使用することを推奨していません。これらの機能は、近々発表予定の製品機能をリリースに先駆けてご提供することにより、お客様は機能性をテストし、開発プロセス中にフィードバックをお寄せいただくことができます。

詳細は、「テクノロジープレビュー機能のサポート範囲」を参照してください。

10.1. Multicloud Object Gateway での S3 エンドポイント

S3 エンドポイントは、すべての Multicloud Object Gateway がデフォルトで提供するサービスで、Multicloud Object Gateway での負荷の高いデータ消費量を処理します。エンドポイントサービスは、インラインのデータチャンク、重複排除、圧縮、および暗号化を処理し、Multicloud Object Gateway からのデータ配置の指示を受け入れます。

10.2. ストレージノードを使用したスケーリング

前提条件

  • Multicloud Object Gateway へのアクセスのある OpenShift Container Platform で実行中の OpenShift Container Storage クラスター。

Multicloud Object Gateway のストレージノードは 1 つ以上の永続ボリュームに割り当てられた NooBaa デーモンコンテナーであり、ローカルオブジェクトサービスデータストレージに使用されます。NooBaa デーモンは Kubernetes ノードにデプロイできます。これは、StatefulSet Pod で構成される Kubernetes プールを作成して実行できます。

手順

  1. Multicloud Object Gateway ユーザーインターフェースの Overview ページから、Add Storage Resources をクリックします。

    MCG add storage resources button
  2. ウィンドウから Deploy Kubernetes Pool をクリックします。

    MCG deploy kubernetes pool
  3. Create Pool ステップで、今後インストールされるノードのターゲットプールを作成します。

    MCG deploy kubernetes pool create pool
  4. Configure 手順で、要求される Pod の数と各 PV のサイズを設定します。新規 Pod ごとに、1 つの PV が作成されます。

    MCG deploy kubernetes pool configure
  5. Review 手順で、新規プールの詳細を見つけ、ローカルまたは外部デプロイメントで使用するデプロイメント方法を選択します。ローカルデプロイメントが選択されている場合、Kubernetes ノードはクラスター内にデプロイされます。外部デプロイメントが選択されている場合、外部で実行する YAML ファイルが提供されます。
  6. すべてのノードは最初の手順で選択したプールに割り当てられ、ResourcesStorage resourcesResource name の下で確認できます。

    MCG storage resources overview

第11章 MultiCloud Object Gateway エンドポイントの自動スケーリング

MCG S3 サービスの負荷が増減すると、MultiCloud Object Gateway(MCG)エンドポイントの数が自動的にスケーリングされます。{product-name-short} クラスターは 1 つのアクティブな MCG エンドポイントでデプロイされます。デフォルトでは、MCG エンドポイント Pod はそれぞれ、CPU 1 つ、メモリー要求 2 Gi、要求に一致する制限で設定されます。エンドポイントの CPU 負荷が一貫した期間、使用率 80% のしきい値を超えると、2 番目のエンドポイントがデプロイされ、最初のエンドポイントの負荷を軽減します。両方のエンドポイントの平均 CPU 負荷が、一貫した期間 80% のしきい値を下回ると、エンドポイントの 1 つが削除されます。この機能により、MCG のパフォーマンスおよび保守性が向上します。

第12章 RADOS Object Gateway S3 エンドポイントへのアクセス

ユーザーは、RADOS Object Gateway(RGW)エンドポイントに直接アクセスできます。

前提条件

  • 実行中の OpenShift Container Storage Platform

手順

  1. oc get service コマンドを実行して RGW サービス名を取得します。

    $ oc get service
    
    NAME                                               TYPE
    rook-ceph-rgw-ocs-storagecluster-cephobjectstore   ClusterIP
    
    CLUSTER-IP       EXTERNAL-IP   PORT(S)    AGE
    172.30.99.207    <none>        80/TCP     4d15h
  2. oc expose コマンドを実行して RGW サービスを公開します。

    $ oc expose svc/<RGW service name> --hostname=<route name>

    <RGW-service name> を直前の手順の RGW サービス名に置き換えます。

    <route name> を RGW サービス用に作成するルートに置き換えます。

    以下は例になります。

    $ oc expose svc/rook-ceph-rgw-ocs-storagecluster-cephobjectstore --hostname=rook-ceph-rgw-ocs.ocp.host.example.com
  3. oc get route コマンドを実行して oc expose が成功し、RGW ルートがあることを確認します。

    $ oc get route
    
    NAME                                               HOST/PORT                                PATH
    rook-ceph-rgw-ocs-storagecluster-cephobjectstore   rook-ceph-rgw-ocsocp.host.example.com
    
    SERVICES                                           PORT         TERMINATION   WILDCARD
    rook-ceph-rgw-ocs-storagecluster-cephobjectstore   http         <none>

検証

  • ENDPOINT を確認するには、以下のコマンドを実行します。

    aws s3 --no-verify-ssl --endpoint <ENDPOINT> ls

    <ENDPOINT> を、上記の手順 3 のコマンドから取得したルートに置き換えます。

    以下は例になります。

    $ aws s3 --no-verify-ssl --endpoint http://rook-ceph-rgw-ocs.ocp.host.example.com ls
注記

デフォルトユーザー ocs-storagecluster-cephobjectstoreuser のアクセスキーおよびシークレットを取得するには、以下のコマンドを実行します。

  • アクセスキー:

    $ oc get secret rook-ceph-object-user-ocs-storagecluster-cephobjectstore-ocs-storagecluster-cephobjectstoreuser -n openshift-storage -o yaml | grep -w "AccessKey:" | head -n1 | awk '{print $2}' | base64 --decode
  • シークレットキー:

    $ oc get secret rook-ceph-object-user-ocs-storagecluster-cephobjectstore-ocs-storagecluster-cephobjectstoreuser -n openshift-storage -o yaml | grep -w "SecretKey:" | head -n1 | awk '{print $2}' | base64 --decode