ハイブリッドおよびマルチクラウドリソースの管理
クラスターおよびストレージ管理者のハイブリッドおよびマルチクラウドリソース管理
概要
第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 エンドポイントへのアクセスに関する詳細は、11章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 つの方法でアクセスできます。
- 「ターミナルから Multicloud Object Gateway へのアクセス」
「MCG コマンドラインインターフェイスからの Multicloud Object Gateway へのアクセス」
- 仮想ホストのスタイルを使用した MCG バケットへのアクセス
例2.1 例
クライアントアプリケーションが https://<bucket-name>.s3-openshift-storage.apps.mycluster-cluster.qe.rh-ocs.com にアクセスしようとする場合
ここで、
<bucket-name>
は MCG バケットの名前です。たとえば、https://mcg-test-bucket.s3-openshift-storage.apps.mycluster-cluster.qe.rh-ocs.com になります。
DNS エントリーは、S3 サービスを参照するように、
mcg-test-bucket.s3-openshift-storage.apps.mycluster-cluster.qe.rh-ocs.com
が必要です。
仮想ホストスタイルを使用してクライアントアプリケーションを 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
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.
これで、アプリケーションに接続するための関連するエンドポイント、アクセスキー、およびシークレットアクセスキーを使用できます。
例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
手順
Multicloud Object Gateway へのアクセスを有効にします。
クラスターで以下の手順を実行します。
cluster-admins
グループを作成します。# oc adm groups new cluster-admins
グループを
cluster-admin
ロールにバインドします。# oc adm policy add-cluster-role-to-group cluster-admin cluster-admins
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>
は削除するユーザーの名前です。
検証手順
- OpenShift Web コンソールで、Multicloud Object Gateway コンソールへのアクセスパーミッションを持つユーザーとしてログインします。
- Home → Overview → Object Service タブ → に移動し、Multicloud Object Gateway リンクを選択します。
- Multicloud Object Gateway コンソールで、アクセスパーミッションを持つ同じユーザーでログインします。
- Allow selected permissions をクリックします。
第4章 ハイブリッドまたはマルチクラウド用のストレージリソースの追加
4.1. 新規バッキングストアの作成
以下の手順を使用して、OpenShift Container Storage で新規のバッキングストアを作成します。
前提条件
- OpenShift への管理者アクセス。
手順
- OpenShift Web コンソールの左側のペインで Operators → Installed Operators をクリックし、インストールされた Operator を表示します。
- OpenShift Container Storage Operator をクリックします。
OpenShift Container Storage Operator ページで右側にスクロールし、Backing Store タブをクリックします。
図4.1 バッキングストアタブのある OpenShift Container Storage Operator ページ
Create Backing Store をクリックします。
図4.2 Create Backing Store ページ
Create New Backing Store ページで、以下を実行します。
- Backing Store Name を入力します。
- Provider を選択します。
- Region を選択します。
- Endpoint を入力します。これはオプションです。
ドロップダウンリストから Secret を選択するか、または独自のシークレットを作成します。オプションで、Switch to Credentials ビューを選択すると、必要なシークレットを入力できます。
OCP シークレットの作成に関する詳細は、Openshift Container Platform ドキュメントの シークレットの作成 を参照してください。
バッキングストアごとに異なるシークレットが必要です。特定のバッキングストアのシークレット作成についての詳細は 「MCG コマンドラインインターフェイスを使用したハイブリッドまたはマルチクラウドのストレージリソースの追加」 を参照して、YAML を使用したストレージリソースの追加についての手順を実行します。
注記このメニューは、Google Cloud およびローカル PVC 以外のすべてのプロバイダーに関連します。
- Target bucket を入力します。ターゲットバケットは、リモートクラウドサービスでホストされるコンテナーストレージです。MCG に対してシステム用にこのバケットを使用できることを通知する接続を作成できます。
- Create Backing Store をクリックします。
検証手順
- Operators → Installed Operators をクリックします。
- OpenShift Container Storage Operator をクリックします。
- 新しいバッキングストアを検索するか、または Backing Store タブをクリックし、すべてのバッキングストアを表示します。
4.2. MCG コマンドラインインターフェイスを使用したハイブリッドまたはマルチクラウドのストレージリソースの追加
Multicloud Object Gateway (MCG) は、クラウドプロバイダーおよびクラスター全体にまたがるデータの処理を単純化します。
MCG で使用できるバッキングストレージを追加する必要があります。
デプロイメントのタイプに応じて、以下のいずれかの手順を選択してバッキングストレージを作成できます。
- AWS でサポートされるバッキングストアを作成する方法については、「AWS でサポートされるバッキングストアの作成」 を参照してください。
- IBM COS でサポートされるバッキングストアを作成する方法については、「IBM COS でサポートされるバッキングストアの作成」 を参照してください。
- Azure でサポートされるバッキングストアを作成する方法については、「Azure でサポートされるバッキングストアの作成」 を参照してください。
- GCP でサポートされるバッキングストアを作成する方法については、「GCP でサポートされるバッキングストアの作成」 を参照してください。
- ローカルの永続ボリュームでサポートされるバッキングストアを作成する方法については、「ローカル永続ボリュームでサポートされるバッキングストアの作成」 を参照してください。
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 からインストールできます。
手順
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 バケット名に置き換えます。この引数は、Multicloud Object Gateway に対して、バッキングストア、およびその後のデータストレージおよび管理のためのターゲットバケットとして使用するバケットについて指示します。出力は次のようになります。
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> 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>
に使用する必要があります。 -
<backingstore-secret-name>
を一意の名前に置き換えます。
-
Base64 を使用して独自の AWS アクセスキー ID およびシークレットアクセスキーを指定し、エンコードし、その結果を
特定のバッキングストアについて以下の 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: noobaa targetBucket: <bucket-name> type: aws-s3
-
<bucket-name>
を既存の AWS バケット名に置き換えます。この引数は、Multicloud Object Gateway に対して、バッキングストア、およびその後のデータストレージおよび管理のためのターゲットバケットとして使用するバケットについて指示します。 -
<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 からインストールできます。
手順
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>
-
<backingstore_name>
を、バッキングストアの名前に置き換えます。 <IBM ACCESS KEY>
,<IBM SECRET ACCESS KEY>
,<IBM COS ENDPOINT>
を IBM アクセスキー ID、シークレットアクセスキー、および既存の IBM バケットの場所に対応する地域のエンドポイントに置き換えます。IBM クラウドで上記のキーを生成するには、ターゲットバケットのサービス認証情報を作成する際に HMAC 認証情報を含める必要があります。
<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 を使用してストレージリソースを追加することもできます。
認証情報でシークレットを作成します。
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>
-
Base64 を使用して独自の IBM COS アクセスキー ID およびシークレットアクセスキーを指定し、エンコードし、その結果を
<IBM COS ACCESS KEY ID ENCODED IN BASE64>
および<IBM COS SECRET ACCESS KEY ENCODED IN BASE64>
に使用する必要があります。 -
<backingstore-secret-name>
を一意の名前に置き換えます。
-
Base64 を使用して独自の IBM COS アクセスキー ID およびシークレットアクセスキーを指定し、エンコードし、その結果を
特定のバッキングストアについて以下の 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 バケット名に置き換えます。この引数は、Multicloud Object Gateway に対して、バッキングストア、およびその後のデータストレージおよび管理のためのターゲットバケットとして使用するバケットについて指示します。 -
<endpoint>
を、既存の IBM バケット名の場所に対応する地域のエンドポイントに置き換えます。この引数は、Multicloud Object Gateway に対して、バッキングストア、およびその後のデータストレージおよび管理に使用するエンドポイントについて指示します。 -
<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 からインストールできます。
手順
MCG コマンドラインインターフェイスから、以下のコマンドを実行します。
noobaa backingstore create azure-blob <backingstore_name> --account-key=<AZURE ACCOUNT KEY> --account-name=<AZURE ACCOUNT NAME> --target-blob-container <blob container name>
-
<backingstore_name>
を、バッキングストアの名前に置き換えます。 -
<AZURE ACCOUNT KEY>
および<AZURE ACCOUNT NAME>
は、この目的のために作成した AZURE アカウントキーおよびアカウント名に置き換えます。 <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 を使用してストレージリソースを追加することもできます。
認証情報でシークレットを作成します。
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>
-
Base64 を使用して独自の Azure アカウント名およびアカウントキーを指定し、エンコードし、その結果を
<AZURE ACCOUNT NAME ENCODED IN BASE64>
および<AZURE ACCOUNT KEY ENCODED IN BASE64>
に使用する必要があります。 -
<backingstore-secret-name>
を一意の名前に置き換えます。
-
Base64 を使用して独自の Azure アカウント名およびアカウントキーを指定し、エンコードし、その結果を
特定のバッキングストアについて以下の 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 コンテナー名に置き換えます。この引数は、Multicloud Object Gateway に対して、バッキングストア、およびその後のデータストレージおよび管理のためのターゲットバケットとして使用するバケットについて指示します。 -
<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 からインストールできます。
手順
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>
-
<backingstore_name>
を、バッキングストアの名前に置き換えます。 -
<PATH TO GCP PRIVATE KEY JSON FILE>
を、この目的で作成された GCP プライベートキーへのパスに置き換えます。 <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 を使用してストレージリソースを追加することもできます。
認証情報でシークレットを作成します。
apiVersion: v1 kind: Secret metadata: name: <backingstore-secret-name> type: Opaque data: GoogleServiceAccountPrivateKeyJson: <GCP PRIVATE KEY ENCODED IN BASE64>
-
Base64 を使用して独自の GCP サービスアカウントプライベートキー ID を指定し、エンコードし、その結果を
<GCP PRIVATE KEY ENCODED IN BASE64>
の場所で使用する必要があります。 - <backingstore-secret-name> を一意の名前に置き換えます。
-
Base64 を使用して独自の GCP サービスアカウントプライベートキー ID を指定し、エンコードし、その結果を
特定のバッキングストアについて以下の 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 ストレージバケットに置き換えます。この引数は、Multicloud Object Gateway に対して、バッキングストア、およびその後のデータストレージおよび管理のためのターゲットバケットとして使用するバケットについて指示します。 -
<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 からインストールできます。
手順
MCG コマンドラインインターフェイスから、以下のコマンドを実行します。
noobaa backingstore create pv-pool <backingstore_name> --num-volumes=<NUMBER OF VOLUMES> --pv-size-gb=<VOLUME SIZE> --storage-class=<LOCAL STORAGE CLASS>
-
<backingstore_name>
を、バッキングストアの名前に置き換えます。 -
<NUMBER OF VOLUMES>
を、作成するボリューム数に置き換えます。 -
<VOLUME SIZE>
を、各ボリュームに必要なサイズ (GB 単位) に置き換えます。 <LOCAL STORAGE CLASS>
をローカルストレージクラスに置き換えます。これは、ocs-storagecluster-ceph-rbd を使用する際に推奨されます。出力は次のようになります。
INFO[0001] ✅ Exists: NooBaa "noobaa" INFO[0002] ✅ Exists: BackingStore "local-mcg-storage"
-
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> storageClass: <LOCAL STORAGE CLASS> type: pv-pool
-
<backingstore_name>
を、バッキングストアの名前に置き換えます。 -
<NUMBER OF VOLUMES>
を、作成するボリューム数に置き換えます。 -
<VOLUME SIZE>
を、各ボリュームに必要なサイズ (GB 単位) に置き換えます。文字 G はそのままにする必要があることに注意してください。 -
<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 と互換性のあるバッキングストアを自動的に作成することに注意してください。
手順
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>
<RGW ACCESS KEY>
および<RGW SECRET KEY>
を取得するには、RGW ユーザーシークレット名を使用して以下のコマンドを実行します。oc get secret <RGW USER SECRET NAME> -o yaml
- Base64 からアクセスキー ID とアクセスキーをデコードし、それらのキーを保持します。
-
<RGW USER ACCESS KEY>
と<RGW USER SECRET ACCESS KEY>
を、直前の手順でデコードした適切なデータに置き換えます。 -
<bucket-name>
を既存の RGW バケット名に置き換えます。この引数は、Multicloud Object Gateway に対して、バッキングストア、およびその後のデータストレージおよび管理のためのターゲットバケットとして使用するバケットについて指示します。 <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 を使用してバッキングストアを作成することもできます。
CephObjectStore
ユーザーを作成します。これにより、RGW 認証情報が含まれるシークレットも作成されます。apiVersion: ceph.rook.io/v1 kind: CephObjectStoreUser metadata: name: <RGW-Username> namespace: openshift-storage spec: store: ocs-storagecluster-cephobjectstore displayName: "<Display-name>"
-
<RGW-Username>
と<Display-name>
を、一意のユーザー名および表示名に置き換えます。
-
以下の 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
-
<backingstore-secret-name>
を、直前の手順でCephObjectStore
で作成したシークレットの名前に置き換えます。 -
<bucket-name>
を既存の RGW バケット名に置き換えます。この引数は、Multicloud Object Gateway に対して、バッキングストア、およびその後のデータストレージおよび管理のためのターゲットバケットとして使用するバケットについて指示します。 -
<RGW endpoint>
を取得するには、RADOS Object Gateway S3 エンドポイントへのアクセス を参照してください。
-
4.4. ユーザーインターフェイスを使用したハイブリッドおよびマルチクラウドのストレージリソースの追加
手順
OpenShift Storage コンソールで、Overview → Object Service → に移動し、Multicloud Object Gateway リンクを選択します。
以下に強調表示されているように左側にある Resources タブを選択します。設定する一覧から、Add Cloud Resource を選択します。
Add new connection を選択します。
関連するネイティブクラウドプロバイダーまたは S3 互換オプションを選択し、詳細を入力します。
新規に作成された接続を選択し、これを既存バケットにマップします。
- これらの手順を繰り返して、必要な数のバッキングストアを作成します。
NooBaa UI で作成されたリソースは、OpenShift UI または MCG CLI では使用できません。
4.5. 新規バケットクラスの作成
バケットクラスは、OBC (Object Bucket Class) の階層ポリシーおよびデータ配置を定義するバケットのクラスを表す CRD です。
以下の手順を使用して、OpenShift Container Storage でバケットクラスを作成します。
手順
- OpenShift Web コンソールの左側のペインで Operators → Installed Operators をクリックし、インストールされた Operator を表示します。
- OpenShift Container Storage Operator をクリックします。
OpenShift Container Storage Operator ページで右側にスクロールし、Bucket Class タブをクリックします。
図4.3 Bucket Class タブのある OpenShift Container Storage Operator ページ
- Create Bucket Class をクリックします。
Create new Bucket Class ページで、以下を実行します。
Bucket Class Name を入力し、Next をクリックします。
図4.4 Create Bucket Class ページ
Placement Policy で Tier 1 - Policy Type を選択し、Next をクリックします。要件に応じて、いずれかのオプションを選択できます。
- Spread により、選択したリソース全体にデータを分散できます。
- Mirror により、選択したリソース全体でデータを完全に複製できます。
Add Tier をクリックし、別のポリシー階層を追加します。
図4.5 階層 1 - Policy Type 選択ページ
Tier 1 - Policy Type で Spread を選択した場合、利用可能な一覧から 1 つ以上の Backing Store リソースを選択してから、Next をクリックします。または、新規バッキングストアを作成 することもできます。
図4.6 階層 1 - Baking Store 選択ページ
直前の手順で Policy Type に Mirror を選択する場合、2 つ以上のバッキングストアを選択する必要があります。
Bucket Class 設定を確認し、確認します。
図4.7 バケットクラス設定の確認ページ
- Create Bucket Class をクリックします。
検証手順
- Operators → Installed Operators をクリックします。
- OpenShift Container Storage Operator をクリックします。
- 新しい Bucket Class を検索するか、または Bucket Class タブをクリックし、すべての Bucket Class を表示します。
第5章 namespace バケットの設定
namespace バケットを使用すると、異なるプロバイダーのデータリポジトリーを接続できるため、単一の統合ビューを使用してすべてのデータと対話できます。各プロバイダーに関連付けられたオブジェクトバケットを namespace バケットに追加し、namespace バケット経由でデータにアクセスし、一度にすべてのオブジェクトバケットを表示します。これにより、他の複数のストレージプロバイダーから読み込む間に、希望するストレージプロバイダーへの書き込みを行うことができ、新規ストレージプロバイダーへの移行コストが大幅に削減されます。
- プロバイダーを Multicloud Object Gateway に接続します。
- プロバイダーのそれぞれに namespace リソースを作成 し、それらが namespace バケットに作成されるようにします。
- namespace リソースを namespace バケットに追加 し、バケットを適切な namespace リソースからの読み込み/への書き込みを行えるように設定します。
S3 API を使用して namespace バケットのオブジェクトと対話できます。詳細は、namespace バケットのオブジェクトの S3 API エンドポイント について参照してください。
namespace バケットは、このバケットの書き込みターゲットが利用可能で機能している場合にのみ使用できます。
5.1. プロバイダー接続の Multicloud Object Gateway への追加
Multicloud Object Gateway がプロバイダーにアクセスできるように各プロバイダーの接続を追加する必要があります。
前提条件
- OpenShift コンソールへの管理者アクセス。
手順
- OpenShift コンソールで、Home → Overview をクリックし、 Object Service タブをクリックします。
- Multicloud Object Gateway をクリックし、プロンプトが表示されたらログインします。
- Accounts をクリックし、接続を追加するアカウントを選択します。
- My Connections をクリックします。
Add Connection をクリックします。
- Connection Name を入力します。
- クラウドプロバイダーは、デフォルトで Service ドロップダウンに表示されます。別のプロバイダーを使用するように選択を変更します。
- クラウドプロバイダーのデフォルトエンドポイントはデフォルトで Endpoint フィールドに表示されます。必要に応じて代替エンドポイントを入力します。
- このクラウドプロバイダーの Access Key を入力します。
- このクラウドプロバイダーの Secret Key を入力します。
- Save をクリックします。
5.2. Multicloud Object Gateway を使用した namespace リソースの追加
既存のストレージを namespace リソースとして Multicloud Storage Gateway に追加し、それらを Amazon Web Services S3 バケット、Microsoft Azure blob、IBM Cloud Object Storage バケットなどの既存のストレージターゲットの統合ビュー用に namespace バケットに含めることができます。
前提条件
- OpenShift コンソールへの管理者アクセス。
- ターゲット接続 (プロバイダー) がすでに Multicloud Object Gateway に追加されている。詳細は、「プロバイダー接続の Multicloud Object Gateway への追加」 を参照してください。
手順
- OpenShift コンソールで、Home → Overview をクリックし、Object Service タブをクリックします。
- Multicloud Storage Gateway をクリックし、プロンプトが表示されたらログインします。
- Resources をクリックし、Namespace Resources タブをクリックします。
Create Namespace Resource をクリックします。
Target Connection で、この namespace のストレージプロバイダーに使用される接続を選択します。
新規の接続を追加する必要がある場合は、Add New Connection をクリックし、プロバイダーの詳細を入力します。詳細は、「プロバイダー接続の Multicloud Object Gateway への追加」 を参照してください。
- Target Bucket で、ターゲットとして使用するバケットの名前を選択します。
- namespace リソースの Resource Name を入力します。
- Create をクリックします。
検証
- 新規リソースが State 列に緑色のチェックマークと共に、また Connected Namespace Buckets 列の 0 バケットと共に一覧表示されていることを確認します。
5.3. Multicloud Object Gateway を使用した namespace バケットへのリソースの追加
namespace リソースを、各種プロバイダー間でのストレージの統合ビュー用に namespace バケットに追加します。また、1 つのプロバイダーのみが新しいデータを受け入れ、すべてのプロバイダーで既存データの読み取りが許可されるように読み取りおよび書き込み動作を設定できます。
前提条件
- バケットで処理する必要のあるすべての namespace リソースが Multicloud Object Gateway: Multicloud Object Gateway に追加されていることを確認します:Multicloud Object Gateway を使用した namespace リソースの追加
手順
- OpenShift コンソールで、Home → Overview をクリックし、 Object Service タブをクリックします。
- Multicloud Object Gateway をクリックし、プロンプトが表示されたらログインします。
- Buckets をクリックし、Namespace Buckets タブをクリックします。
Create Namespace Bucket をクリックします。
- Choose Name タブで、namespace バケットの Name を指定し、Next をクリックします。
Set Placement タブで、以下を実行します。
- Read Policy で、namespace バケットがデータの読み取りに使用する各 namespace リソースのチェックボックスを選択します。
- Write Policy で、namespace バケットがデータを書き込む namespace リソースを指定します。
- Next をクリックします。
- 実稼働環境の Set Caching Policy タブを変更しないでください。このタブは開発プレビューとして提供され、サポート制限の対象となります。
- Create をクリックします。
検証
- namespace バケットが State 列の緑色のチェックマークと、予想される読み取りリソースの数、および予想される書き込みリソース名と共に一覧表示されていることを確認します。
5.4. namespace バケットのオブジェクトの Amazon S3 API エンドポイント
Amazon Simple Storage Service (S3) API を使用して namespace バケットのオブジェクトと対話できます。
Red Hat OpenShift Container Storage 4.6 は、以下の namespace バケット操作をサポートします。
これらの操作および使用方法に関する最新情報は、Amazon S3 API リファレンスのドキュメントを参照してください。
第6章 ハイブリッドおよびマルチクラウドバケットのデータのミラーリング
Multicloud Object Gateway (MCG) は、クラウドプロバイダーおよびクラスター全体にまたがるデータの処理を単純化します。
前提条件
- まず、MCG で使用できるバッキングストレージを追加する必要があります。4章ハイブリッドまたはマルチクラウド用のストレージリソースの追加 を参照してください。
次に、データ管理ポリシー (ミラーリング) を反映するバケットクラスを作成します。
手順
ミラーリングデータは、以下の 3 つの方法で設定できます。
6.1. MCG コマンドラインインターフェイスを使用したデータのミラーリング用のバケットクラスの作成
MCG コマンドラインインターフェイスから以下のコマンドを実行し、ミラーリングポリシーでバケットクラスを作成します。
$ noobaa bucketclass create mirror-to-aws --backingstores=azure-resource,aws-resource --placement Mirror
新たに作成されたバケットクラスを新規のバケット要求に設定し、2 つのロケーション間でミラーリングされる新規バケットを生成します。
$ noobaa obc create mirrored-bucket --bucketclass=mirror-to-aws
6.2. YAML を使用したデータのミラーリング用のバケットクラスの作成
以下の YAML を適用します。この YAML は、ローカル Ceph ストレージと AWS 間でデータをミラーリングするハイブリッドの例です。
apiVersion: noobaa.io/v1alpha1 kind: BucketClass metadata: name: hybrid-class labels: app: noobaa spec: placementPolicy: tiers: - tier: mirrors: - mirror: spread: - cos-east-us - mirror: spread: - noobaa-test-bucket-for-ocp201907291921-11247_resource
以下の行を標準の Object Bucket Claim (オブジェクトバケット要求、OBC) に追加します。
additionalConfig: bucketclass: mirror-to-aws
OBC についての詳細は、8章Object Bucket Claim(オブジェクトバケット要求)を参照してください。
6.3. ユーザーインターフェイスを使用したデータミラーリングを行うためのバケットの設定
OpenShift Storage コンソールで、Overview → Object Service → に移動し、Multicloud Object Gateway リンクを選択します。
左側の buckets アイコンをクリックします。バケットの一覧が表示されます。
- 更新するバケットをクリックします。
Edit Tier 1 Resources をクリックします。
Mirror を選択し、このバケットに使用する関連リソースを確認します。以下の例では、prem Ceph RGW と AWS 間でデータのミラーリングをします。
- Save をクリックします。
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. バケットポリシーの使用
前提条件
- 実行中の OpenShift Container Storage Platform
- Multicloud Object Gateway へのアクセス。2章アプリケーションの使用による Multicloud Object Gateway へのアクセス を参照してください。
手順
Multicloud Object Gateway でバケットポリシーを使用するには、以下を実行します。
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 Bucket Policy Examples を参照してください。
S3 ユーザーの作成方法については、「Multicloud Object Gateway での AWS S3 ユーザーの作成」 を参照してください。
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 を参照してください。
主となる要素では、リソース (バケットなど) へのアクセスを許可または拒否されるユーザーを指定します。現在、NooBaa アカウントのみがプリンシパルとして使用できます。Object Bucket Claim (オブジェクトバケット要求) の場合、NooBaa はアカウント obc-account.<generated bucket name>@noobaa.io
を自動的に作成します。
バケットポリシー条件はサポートされていません。
7.3. Multicloud Object Gateway での AWS S3 ユーザーの作成
前提条件
- 実行中の OpenShift Container Storage Platform
- Multicloud Object Gateway へのアクセス。2章アプリケーションの使用による Multicloud Object Gateway へのアクセス を参照してください。
手順
OpenShift Storage コンソールで、Overview → Object Service → に移動し、Multicloud Object Gateway リンクを選択します。
Accounts タブで、Create Account をクリックします。
S3 Access Only を選択し、Account Name を指定します (例: john.doe@example.com)。Next をクリックします。
S3 default placement を選択します (例: noobaa-default-backing-store)。Buckets Permissions を選択します。特定のバケットまたはすべてのバケットを選択できます。Create をクリックします。
第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 に追加し、設定マップおよびシークレットで利用可能なオブジェクトサービスエンドポイント、アクセスキー、およびシークレットアクセスキーを取得できます。この情報をアプリケーションの環境変数に動的に読み込むことは容易に実行できます。
手順
以下の行をアプリケーション YAML に追加します。
apiVersion: objectbucket.io/v1alpha1 kind: ObjectBucketClaim metadata: name: <obc-name> spec: generateBucketName: <obc-bucket-name> storageClassName: openshift-storage.noobaa.io
これらの行は Object Bucket Claim(オブジェクトバケット要求) 自体になります。
-
<obc-name>
を、一意の Object Bucket Claim(オブジェクトバケット要求) の名前に置き換えます。 -
<obc-bucket-name>
を、Object Bucket Claim(オブジェクトバケット要求) の一意のバケット名に置き換えます。
-
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
- <obc-name> のすべてのインスタンスを、Object Bucket Claim(オブジェクトバケット要求) の名前に置き換えます。
- <your application image> をアプリケーションイメージに置き換えます。
更新された YAML ファイルを適用します。
# oc apply -f <yaml.file>
-
<yaml.file>
を YAML ファイルの名前に置き換えます。
-
新しい設定マップを表示するには、以下を実行します。
# oc get cm <obc-name>
obc-name
を、Object Bucket Claim(オブジェクトバケット要求) の名前に置き換えます。出力には、以下の環境変数が表示されることが予想されます。
-
BUCKET_HOST
: アプリケーションで使用するエンドポイント BUCKET_PORT
: アプリケーションで利用できるポート-
ポートは
BUCKET_HOST
に関連します。たとえば、BUCKET_HOST
が https://my.example.com で、BUCKET_PORT
が 443 の場合、オブジェクトサービスのエンドポイントは https://my.example.com:443 になります。
-
ポートは
-
BUCKET_NAME
: 要求されるか、または生成されるバケット名 -
AWS_ACCESS_KEY_ID
: 認証情報の一部であるアクセスキー -
AWS_SECRET_ACCESS_KEY
: 認証情報の一部であるシークレットのアクセスキー
-
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
手順
コマンドラインインターフェイスを使用して、新規バケットおよび認証情報の詳細を生成します。以下のコマンドを実行します。
# 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 に通知します。
以下のコマンドを実行して Object Bucket Claim(オブジェクトバケット要求) を表示します。
# oc get obc -n openshift-storage
出力例:
NAME STORAGE-CLASS PHASE AGE test21obc openshift-storage.noobaa.io Bound 38s
以下のコマンドを実行して、新規 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
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 アクセス認証情報を提供します。
設定マップを表示するには、以下を実行します。
# 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 (オブジェクトバケット要求) を作成できます。
前提条件
- OpenShift Web コンソールへの管理者アクセス。
- アプリケーションが OBC と通信できるようにするには、configmap およびシークレットを使用する必要があります。これに関する詳細情報は、「動的 Object Bucket Claim(オブジェクトバケット要求)」 を参照してください。
手順
- OpenShift Web コンソールにログインします。
- 左側のナビゲーションバーで Storage → Object Bucket Claims をクリックします。
Create Object Bucket Claim をクリックします。
Object Bucket Claim(オブジェクトバケット要求) の名前を入力し、ドロップダウンメニューから、内部または外部かのデプロイメントに応じて適切なストレージクラスとバケットクラスを選択します。
内部モード
デプロイメント後に作成された以下のストレージクラスを使用できます。
-
ocs-storagecluster-ceph-rgw
は Ceph Object Gateway (RGW) を使用します。 -
openshift-storage.noobaa.io
は Multicloud Object Gateway を使用します。
外部モード
デプロイメント後に作成された以下のストレージクラスを使用できます。
-
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 リリースからアップグレードされたクラスターには適用されません。
-
Create をクリックします。
OBC を作成すると、その詳細ページにリダイレクトされます。
8.4. Object Bucket Claim(オブジェクトバケット要求) のデプロイメントへの割り当て
Object Bucket Claim(オブジェクトバケット要求、OBC) は作成後に、特定のデプロイメントに割り当てることができます。
前提条件
- OpenShift Web コンソールへの管理者アクセス。
手順
- 左側のナビゲーションバーで Storage → Object Bucket Claims をクリックします。
- 作成した OBC の横にあるアクションメニュー (✓) をクリックします。
ドロップダウンメニューで、Attach to Deployment を選択します。
Deployment Name 一覧から必要なデプロイメントを選択し、Attach をクリックします。
8.5. OpenShift Web コンソールを使用したオブジェクトバケットの表示
OpenShift Web コンソールを使用して、Object Bucket Claim(オブジェクトバケット要求、OBC) 用に作成されたオブジェクトバケットの詳細を表示できます。
前提条件
- OpenShift Web コンソールへの管理者アクセス。
手順
オブジェクトバケットの詳細を表示するには、以下を実行します。
- OpenShift Web コンソールにログインします。
左側のナビゲーションバーで Storage → Object Buckets をクリックします。
特定の OBC の詳細ページに移動し、Resource リンクをクリックして、その OBC のオブジェクトバケットを表示します。
詳細を表示するオブジェクトバケットを選択します。オブジェクトバケットの詳細ページに移動します。
8.6. Object Bucket Claim(オブジェクトバケット要求) の削除
前提条件
- OpenShift Web コンソールへの管理者アクセス。
手順
- 左側のナビゲーションバーで Storage → Object Bucket Claims をクリックします。
削除する Object Bucket Claim(オブジェクトバケット要求) の横にあるアクションメニュー (⋮) をクリックします。
メニューから Delete Object Bucket Claim を選択します。
- Delete をクリックします。
第9章 エンドポイントの追加による Multicloud Object Gateway パフォーマンスのスケーリング
Multicloud Object Gateway のパフォーマンスは環境によって異なる場合があります。特定のアプリケーションでは、高速なパフォーマンスを必要とする場合があり、これは S3 エンドポイントをスケーリングして簡単に対応できます。これはテクノロジープレビュー機能です。
Multicloud Object Gateway リソースプールは、デフォルトで有効にされる 2 種類のサービスを提供する NooBaa デーモンコンテナーのグループです。
- ストレージサービス
- S3 エンドポイントサービス
エンドポイントの追加による Multicloud Object Gateway パフォーマンスのスケーリングは、テクノロジープレビュー機能です。テクノロジープレビュー機能は Red Hat の実稼働環境でのサービスレベルアグリーメント (SLA) ではサポートされていないため、Red Hat では実稼働環境での使用を推奨していません。Red Hat は実稼働環境でこれらを使用することを推奨していません。これらの機能は、近々発表予定の製品機能をリリースに先駆けてご提供することにより、お客様は機能性をテストし、開発プロセス中にフィードバックをお寄せいただくことができます。
詳細は、テクノロジープレビュー機能のサポート範囲 を参照してください。
9.1. Multicloud Object Gateway での S3 エンドポイント
S3 エンドポイントは、すべての Multicloud Object Gateway がデフォルトで提供するサービスであり、これは Multicloud Object Gateway で負荷の高いデータ消費タスクの大部分を処理します。エンドポイントサービスは、インラインのデータチャンク、重複排除、圧縮、および暗号化を処理し、Multicloud Object Gateway からのデータ配置の指示を受け入れます。
9.2. ストレージノードを使用したスケーリング
前提条件
- Multicloud Object Gateway へのアクセスのある OpenShift Container Platform で実行中の OpenShift Container Storage Platform
Multicloud Object Gateway のストレージノードは 1 つ以上の永続ボリュームに割り当てられた NooBaa デーモンコンテナーであり、ローカルオブジェクトサービスデータストレージに使用されます。NooBaa デーモンは Kubernetes ノードにデプロイできます。これは、StatefulSet Pod で設定される Kubernetes プールを作成して実行できます。
手順
Mult-Cloud Object Gateway ユーザーインターフェイスの Overview ページで、 Add Storage Resources をクリックします。
ウィンドウから Deploy Kubernetes Pool をクリックします。
Create Pool 手順で、今後インストールされるノードのターゲットプールを作成します。
Configure 手順で、要求される Pod 数と各 PV のサイズを設定します。新規 Pod ごとに、1 つの PV が作成されます。
- Review 手順で、新規プールの詳細を検索し、ローカルまたは外部デプロイメントのいずれかの使用するデプロイメント方法を選択します。ローカルデプロイメントが選択されている場合、Kubernetes ノードはクラスター内にデプロイされます。外部デプロイメントが選択されている場合、外部で実行するための YAML ファイルが提供されます。
すべてのノードは最初の手順で選択したプールに割り当てられ、Resources → Storage resources → Resource name の下で確認できます。
第10章 MultiCloud Object Gateway エンドポイントの自動スケーリング
OpenShift Container Storage バージョン 4.6 の時点で、MultiCloud Object Gateway の S3 サービスの負荷が増減すると、MultiCloud Object Gateway エンドポイントの数が自動的にスケーリングされます。OpenShift Container Storage 4.6 クラスターは、アクティブな MultiCloud Object Gateway エンドポイントを 1 つ使用してデプロイされます。デフォルトでは、MultiCloud Object Gateway エンドポイント Pod はそれぞれ、CPU 1 つ、メモリー要求 2 Gi、要求に一致する制限で設定されます。エンドポイントの CPU 負荷が一貫した期間、使用率 80% のしきい値を超えると、2 番目のエンドポイントがデプロイされ、最初のエンドポイントの負荷を軽減します。両方のエンドポイントの平均 CPU 負荷が、一貫した期間 80% のしきい値を下回ると、エンドポイントの 1 つが削除されます。この機能により、MultiCloud Object Gateway のパフォーマンスおよび保守性が向上します。
第11章 RADOS Object Gateway S3 エンドポイントへのアクセス
ユーザーは、RADOS Object Gateway (RGW) エンドポイントに直接アクセスできます。
前提条件
- 実行中の OpenShift Container Storage Platform
手順
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
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
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 -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 -o yaml | grep -w "SecretKey:" | head -n1 | awk '{print $2}' | base64 --decode