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


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

MCG で使用できるバッキングストレージを追加します。

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

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

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

前提条件

  • カスタマーポータル から Multicloud Object Gateway (MCG) コマンドラインインターフェイスバイナリーをダウンロードし、実行可能にする。

    注記

    アーキテクチャーに応じて適切な製品バリアントを選択してください。利用可能なプラットフォームは、Linux (x86_64)、Windows、Mac OS です。

手順

MCG コマンドラインインターフェイスの使用

  • 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
    <backingstore_name>
    バッキングストアの名前。
    <AWS ACCESS KEY><AWS SECRET ACCESS KEY>
    この目的のために作成した AWS アクセスキー ID とシークレットアクセスキー。
    <bucket-name>

    既存の AWS バケット名。この引数は、バッキングストアのターゲットバケットとして使用するバケットを MCG に示し、その後、データストレージと管理を行います。

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

    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>
    <AWS ACCESS KEY> および <AWS SECRET ACCESS KEY>
    Base64 を使用して独自の AWS アクセスキー ID とシークレットアクセスキーを指定してエンコードし、その結果を <AWS ACCESS KEY ID ENCODED IN BASE64><AWS SECRET ACCESS KEY ENCODED IN BASE64> に使用します。
    <backingstore-secret-name>
    前のステップで作成された backingstore シークレットの名前。
  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
    <bucket-name>
    既存の AWS バケット名。
    <backingstore-secret-name>
    前のステップで作成された backingstore シークレットの名前。

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

Amazon Web Services セキュリティートークンサービス (AWS STS) は AWS の機能であり、有効期間の短い認証情報を使用して認証する方法です。AWS-STS がサポートするバッキングストアを作成するには、次の作業が必要です。

  • スクリプトを使用して AWS ロールを作成し、ロールセッションの一時的なセキュリティー認証情報を取得
  • AWS STS OpenShift クラスターへの OpenShift Data Foundation Operator のインストール
  • AWS STS OpenShift クラスターでのバッキングストアの作成

3.3.2.1. スクリプトを使用した AWS ロールの作成

OpenShift Data Foundation Operator のインストール中に、ロールを作成し、ロール Amazon リソース名 (ARN) を指定する必要があります。

前提条件

手順

  • OpenShift Data Foundation 上の Multicloud Object Gateway (MCG) の OpenID Connect (OIDC) 設定に一致するスクリプトを使用して、AWS ロールを作成します。

    以下の例は、ロールの作成に必要な詳細を示しています。

    {
        “Version”: “2012-10-17",
        “Statement”: [
            {
                “Effect”: “Allow”,
                “Principal”: {
                    “Federated”: “arn:aws:iam::123456789123:oidc-provider/mybucket-oidc.s3.us-east-2.amazonaws.com”
                },
                “Action”: “sts:AssumeRoleWithWebIdentity”,
                “Condition”: {
                    “StringEquals”: {
                        “mybucket-oidc.s3.us-east-2.amazonaws.com:sub”: [
                            “system:serviceaccount:openshift-storage:noobaa”,
                            “system:serviceaccount:openshift-storage:noobaa-endpoint”
                        ]
                    }
                }
            }
        ]
    }

    ここでは、以下のようになります。

    123456789123
    AWS アカウント ID です。
    mybucket
    バケット名です (パブリックバケット設定を使用)。
    us-east-2
    AWS リージョンです。
    openshift-storage

    namespace 名

    サンプルスクリプト

    #!/bin/bash
    set -x
    
    # This is a sample script to help you deploy MCG on AWS STS cluster.
    # This script shows how to create role-policy and then create the role in AWS.
    # For more information see: https://docs.openshift.com/rosa/authentication/assuming-an-aws-iam-role-for-a-service-account.html
    
    # WARNING: This is a sample script. You need to adjust the variables based on your requirement.
    
    # Variables :
    # user variables - REPLACE these variables with your values:
    ROLE_NAME="<role-name>" # role name that you pick in your AWS account
    NAMESPACE="<namespace>" # namespace name where MCG is running. For OpenShift Data Foundation, it is openshift-storage.
    
    # MCG variables
    SERVICE_ACCOUNT_NAME_1="<service-account-name-1>" # The service account name of statefulset core and deployment operator (MCG operator)
    SERVICE_ACCOUNT_NAME_2="<service-account-name-2>" # The service account name of deployment endpoint (MCG endpoint)
    
    # AWS variables
    # Make sure these values are not empty (AWS_ACCOUNT_ID, OIDC_PROVIDER)
    # AWS_ACCOUNT_ID is your AWS account number
    AWS_ACCOUNT_ID=$(aws sts get-caller-identity --query "Account" --output text)
    # If you want to create the role before using the cluster, replace this field too.
    # The OIDC provider is in the structure:
    # 1) <OIDC-bucket>.s3.<aws-region>.amazonaws.com. for OIDC bucket configurations are in an S3 public bucket
    # 2) `<characters>.cloudfront.net` for OIDC bucket configurations in an S3 private bucket with a public CloudFront distribution URL
    OIDC_PROVIDER=$(oc get authentication cluster -ojson | jq -r .spec.serviceAccountIssuer | sed -e "s/^https:\/\///")
    # the permission (S3 full access)
    POLICY_ARN_STRINGS="arn:aws:iam::aws:policy/AmazonS3FullAccess"
    
    # Creating the role (with AWS command line interface)
    
    read -r -d '' TRUST_RELATIONSHIP <<EOF
    {
     "Version": "2012-10-17",
     "Statement": [
       {
     	"Effect": "Allow",
     	"Principal": {
       	"Federated": "arn:aws:iam::${AWS_ACCOUNT_ID}:oidc-provider/${OIDC_PROVIDER}"
     	},
     	"Action": "sts:AssumeRoleWithWebIdentity",
     	"Condition": {
       	"StringEquals": {
        	"${OIDC_PROVIDER}:sub": [
          	"system:serviceaccount:${NAMESPACE}:${SERVICE_ACCOUNT_NAME_1}",
          	"system:serviceaccount:${NAMESPACE}:${SERVICE_ACCOUNT_NAME_2}"
          	]
       	}
     	}
       }
     ]
    }
    EOF
    
    echo "${TRUST_RELATIONSHIP}" > trust.json
    
    aws iam create-role --role-name "$ROLE_NAME" --assume-role-policy-document file://trust.json --description "role for demo"
    
    while IFS= read -r POLICY_ARN; do
       echo -n "Attaching $POLICY_ARN ... "
       aws iam attach-role-policy \
       	--role-name "$ROLE_NAME" \
       	--policy-arn "${POLICY_ARN}"
       echo "ok."
    done <<< "$POLICY_ARN_STRINGS"

3.3.2.2. AWS STS OpenShift クラスターへの OpenShift Data Foundation Operator のインストール

前提条件

手順

  • Operator Hub から OpenShift Data Foundation Operator をインストールします。

    • インストール中に、ロール ARN を ARN Details フィールドに追加します。
    • Update approval フィールドが Manual に設定されていることを確認します。

3.3.2.3. 新規 AWS STS バッキングストアの作成

前提条件

手順

  1. Multicloud Object Gateway (MCG) をインストールします。

    これは、有効期間の短い認証情報を使用して、デフォルトのバッキングストアとともにインストールされます。

  2. MCG システムの準備ができたら、次の MCG コマンドラインインターフェイスコマンドを使用して、aws-sts-s3 タイプのバッキングストアをさらに作成できます。

    $ noobaa backingstore create aws-sts-s3 <backingstore-name> --aws-sts-arn=<aws-sts-role-arn> --region=<region> --target-bucket=<target-bucket>

    ここでは、以下のようになります。

    backingstore-name
    バッキングストアの名前
    aws-sts-role-arn
    ロールを引き受ける AWS STS ロール ARN
    region
    AWS バケットリージョン
    target-bucket
    クラウド上のターゲットバケット名

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

前提条件

  • カスタマーポータル から Multicloud Object Gateway (MCG) コマンドラインインターフェイスバイナリーをダウンロードし、実行可能にする。

    注記

    アーキテクチャーに応じて適切な製品バリアントを選択してください。利用可能なプラットフォームは、Linux (x86_64)、Windows、Mac OS です。

手順

コマンドラインインターフェイスの使用

  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
    <backingstore_name>
    バッキングストアの名前。
    <IBM ACCESS KEY><IBM SECRET ACCESS KEY>、および <IBM COS ENDPOINT>

    IBM アクセスキー ID、シークレットアクセスキー、および既存の IBM バケットの場所に対応する該当する地域エンドポイント

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

    <bucket-name>

    既存の IBM バケット名。この引数は、バッキングストア、およびその後のデータストレージと管理のターゲットバケットとして使用するバケットに関する MCG を示します。

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

    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>
      namespace: openshift-storage
    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>
    <IBM COS ACCESS KEY ID ENCODED IN BASE64><IBM COS SECRET ACCESS KEY ENCODED IN BASE64>
    Base64 を使用して独自の IBM COS アクセスキー ID とシークレットアクセスキーを提供およびエンコードし、これらの属性の代わりに結果をそれぞれ使用します。
    <backingstore-secret-name>
    backingstore シークレットの名前。
  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
    <bucket-name>
    既存の IBM COS バケット名。この引数は、バッキングストアのターゲットバケットとして使用するバケットについて MCG に指示し、その後、データストレージと管理を行います。
    <endpoint>
    既存の IBM バケット名の場所に対応する地域エンドポイント。この引数は、バッキングストアに使用するエンドポイントを MCG に示し、その後、データストレージと管理を行います。
    <backingstore-secret-name>
    前のステップで作成されたシークレットの名前。

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

前提条件

  • カスタマーポータル から Multicloud Object Gateway (MCG) コマンドラインインターフェイスバイナリーをダウンロードし、実行可能にする。

    注記

    アーキテクチャーに応じて適切な製品バリアントを選択してください。利用可能なプラットフォームは、Linux (x86_64)、Windows、Mac OS です。

手順

MCG コマンドラインインターフェイスの使用

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

    noobaa backingstore create azure-blob <backingstore_name> --account-key=<AZURE ACCOUNT KEY> --account-name=<AZURE ACCOUNT NAME> --target-blob-container <blob container name> -n openshift-storage
    <backingstore_name>
    バッキングストアの名前。
    <AZURE ACCOUNT KEY> および <AZURE ACCOUNT NAME>
    この目的のために作成した AZURE アカウントキーとアカウント名。
    <blob container name>

    既存の Azure Blob コンテナー名。この引数は、バッキングストアのターゲットバケットとして使用するバケットについて MCG に指示し、その後、データストレージと管理を行います。

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

    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>
    <AZURE ACCOUNT NAME ENCODED IN BASE64> および <AZURE ACCOUNT KEY ENCODED IN BASE64>
    Base64 を使用して独自の Azure アカウント名とアカウントキーを指定してエンコードし、これらの属性の代わりに結果をそれぞれ使用します。
    <backingstore-secret-name>
    backingstore シークレットの一意の名前。
  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
    <blob-container-name>
    既存の Azure Blob コンテナー名。この引数は、バッキングストアのターゲットバケットとして使用するバケットについて MCG に指示し、その後、データストレージと管理を行います。
    <backingstore-secret-name>
    前の手順で作成したシークレットの名前に置き換えます。

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

前提条件

  • カスタマーポータル から Multicloud Object Gateway (MCG) コマンドラインインターフェイスバイナリーをダウンロードし、実行可能にする。

    注記

    アーキテクチャーに応じて適切な製品バリアントを選択してください。利用可能なプラットフォームは、Linux (x86_64)、Windows、Mac OS です。

手順

MCG コマンドラインインターフェイスの使用

  • 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> -n openshift-storage
    <backingstore_name>
    バッキングストアの名前。
    <PATH TO GCP PRIVATE KEY JSON FILE>
    この目的のために作成された GCP 秘密鍵へのパス。
    <GCP bucket name>

    既存の GCP オブジェクトストレージバケット名。この引数は、MCG に対して、バッキングストア、およびその後のデータストレージおよび管理のためのターゲットバケットとして使用するバケットについて指示します。

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

    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>
    <GCP PRIVATE KEY ENCODED IN BASE64>
    Base64 を使用して独自の GCP サービスアカウントの秘密鍵を提供およびエンコードし、この属性の結果を使用します。
    <backingstore-secret-name>
    backingstore シークレットの一意の名前。
  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
    <target bucket>
    既存の Google ストレージバケット。この引数は、バッキングストアのターゲットバケットとして使用するバケットについて MCG に指示し、その後、データストレージ dfdand 管理を行います。
    <backingstore-secret-name>
    前のステップで作成されたシークレットの名前。

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

前提条件

  • カスタマーポータル から Multicloud Object Gateway (MCG) コマンドラインインターフェイスバイナリーをダウンロードし、実行可能にする。

    注記

    アーキテクチャーに応じて適切な製品バリアントを選択してください。利用可能なプラットフォームは、Linux (x86_64)、Windows、Mac OS です。

手順

MCG コマンドラインインターフェイスを使用したストレージリソースの追加

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

    注記

    このコマンドは、openshift-storage namespace 内から実行する必要があります。

    $ noobaa -n openshift-storage backingstore create pv-pool <backingstore_name> --num-volumes <NUMBER OF VOLUMES>  --pv-size-gb <VOLUME SIZE> --request-cpu <CPU REQUEST> --request-memory <MEMORY REQUEST> --limit-cpu <CPU LIMIT> --limit-memory <MEMORY LIMIT> --storage-class <LOCAL STORAGE CLASS>

YAML を使用してストレージリソースの追加

  • 特定のバッキングストアについて以下の 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>
            cpu: <CPU REQUEST>
            memory: <MEMORY REQUEST>
          limits:
            cpu: <CPU LIMIT>
            memory: <MEMORY LIMIT>
        storageClass: <LOCAL STORAGE CLASS>
      type: pv-pool
    <backingstore_name>
    バッキングストアの名前。
    <NUMBER OF VOLUMES>
    作成するボリュームの数。ボリュームの数を増やすと、ストレージが拡大することに注意してください。
    <VOLUME SIZE>
    各ボリュームの必要なサイズ (GB)。
    <CPU REQUEST>
    CPU ユニット m で要求された CPU の保証量。
    <MEMORY REQUEST>
    要求されたメモリー量の保証。
    <CPU LIMIT>
    CPU ユニット m で消費できる CPU の最大量。
    <MEMORY LIMIT>
    消費できるメモリーの最大量。
    <LOCAL STORAGE CLASS>

    ocs-storagecluster-ceph-rbd の使用を推奨するローカルストレージクラス名。

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

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

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。

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

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

© 2024 Red Hat, Inc.