3.3. MCG コマンドラインインターフェイスを使用したハイブリッドまたはマルチクラウドのストレージリソースの追加
Multicloud Object Gateway (MCG) は、クラウドプロバイダーおよびクラスター全体にまたがるデータの処理を単純化します。
MCG で使用できるバッキングストレージを追加します。
デプロイメントのタイプに応じて、以下のいずれかの手順を選択してバッキングストレージを作成できます。
- AWS でサポートされるバッキングストアを作成する方法については、「AWS でサポートされるバッキングストアの作成」 を参照してください。
- AWS-STS でサポートされるバッキングストアの作成方法は、「AWS-STS でサポートされるバッキングストアの作成」 を参照してください。
- IBM COS でサポートされるバッキングストアを作成する方法については、「IBM COS でサポートされるバッキングストアの作成」 を参照してください。
- Azure でサポートされるバッキングストアを作成する方法については、「Azure でサポートされるバッキングストアの作成」 を参照してください。
- GCP でサポートされるバッキングストアを作成する方法については、「GCP でサポートされるバッキングストアの作成」 を参照してください。
- ローカルの永続ボリュームでサポートされるバッキングストアを作成する方法については、「ローカル永続ボリュームでサポートされるバッキングストアの作成」 を参照してください。
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 を使用してストレージリソースを追加する
認証情報でシークレットを作成します。
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 シークレットの名前。
特定のバッキングストアについて以下の 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) を指定する必要があります。
前提条件
- AWS STS を使用して Red Hat OpenShift Container Platform クラスターを設定している。詳細は、短期認証情報を使用するための AWS クラスターの設定 を参照してください。
手順
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 のインストール
前提条件
- AWS STS を使用して Red Hat OpenShift Container Platform クラスターを設定している。詳細は、短期認証情報を使用するための AWS クラスターの設定 を参照してください。
- OpenID Connect (OIDC) 設定に一致するスクリプトを使用して AWS ロールを作成している。詳細は、スクリプトを使用した AWS ロールの作成 を参照してください。
手順
Operator Hub から OpenShift Data Foundation Operator をインストールします。
- インストール中に、ロール ARN を ARN Details フィールドに追加します。
- Update approval フィールドが Manual に設定されていることを確認します。
3.3.2.3. 新規 AWS STS バッキングストアの作成
前提条件
- AWS STS を使用して Red Hat OpenShift Container Platform クラスターを設定している。詳細は、短期認証情報を使用するための AWS クラスターの設定 を参照してください。
- OpenID Connect (OIDC) 設定に一致するスクリプトを使用して AWS ロールを作成している。詳細は、スクリプトを使用した AWS ロールの作成 を参照してください。
- OpenShift Data Foundation Operator のインストール詳細は、AWS STS OpenShift クラスターへの OpenShift Data Foundation Operator のインストール を参照してください。
手順
Multicloud Object Gateway (MCG) をインストールします。
これは、有効期間の短い認証情報を使用して、デフォルトのバッキングストアとともにインストールされます。
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 です。
手順
コマンドラインインターフェイスの使用
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 を使用してストレージリソースを追加する
認証情報でシークレットを作成します。
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 シークレットの名前。
特定のバッキングストアについて以下の 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 を使用してストレージリソースを追加する
認証情報でシークレットを作成します。
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 シークレットの一意の名前。
特定のバッキングストアについて以下の 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 を使用してストレージリソースを追加する
認証情報でシークレットを作成します。
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 シークレットの一意の名前。
特定のバッキングストアについて以下の 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"