10.7. Object Bucket Claim(オブジェクトバケット要求)
Object Bucket Claim(オブジェクトバケット要求) は、ワークロードの S3 と互換性のあるバケットバックエンドを要求するために使用できます。
Object Bucket Claim(オブジェクトバケット要求) は 3 つの方法で作成できます。
Object Bucket Claim(オブジェクトバケット要求) は、新しいアクセスキーおよびシークレットアクセスキーを含む、バケットのパーミッションのある NooBaa の新しいバケットとアプリケーションアカウントを作成します。アプリケーションアカウントは単一バケットにのみアクセスでき、デフォルトで新しいバケットを作成することはできません。
10.7.1. 動的 Object Bucket Claim(オブジェクトバケット要求)
永続ボリュームと同様に、Object Bucket Claim (OBC) の詳細をアプリケーションの YAML に追加し、設定マップおよびシークレットで利用可能なオブジェクトサービスエンドポイント、アクセスキー、およびシークレットアクセスキーを取得できます。この情報をアプリケーションの環境変数に動的に読み込むことは容易に実行できます。
Multicloud Object Gateway エンドポイントは、OpenShift が自己署名証明書を使用する場合にのみ、自己署名証明書を使用します。OpenShift で署名付き証明書を使用すると、Multicloud Object Gateway エンドポイント証明書が署名付き証明書に自動的に置き換えられます。ブラウザーを介してエンドポイントにアクセスし、Multicloud Object Gateway で現在使用されている証明書を取得します。詳細は、アプリケーションの使用による Multicloud Object Gateway へのアクセス を参照してください。
手順
以下の行をアプリケーション YAML に追加します。
apiVersion: objectbucket.io/v1alpha1 kind: ObjectBucketClaim metadata: name: <obc-name> spec: generateBucketName: <obc-bucket-name> storageClassName: openshift-storage.noobaa.io
これらの行は OBC 自体になります。
-
<obc-name>
を、一意の OBC の名前に置き換えます。 -
<obc-bucket-name>
を、OBC の一意のバケット名に置き換えます。
-
YAML ファイルにさらに行を追加して、OBC の使用を自動化します。
以下に例を示します。
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
以下は、バケット要求の結果のマッピングの例になります。これは、データを含む設定マップおよび認証情報を含むシークレットです。この特定のジョブは NooBaa からオブジェクトバケットを要求し、バケットとアカウントを作成します。
-
<obc-name>
のすべてのインスタンスを、OBC の名前に置き換えます。 -
<your application image>
をアプリケーションイメージに置き換えます。
-
更新された YAML ファイルを適用します。
# oc apply -f <yaml.file>
<yaml.file>
を YAML ファイルの名前に置き換えます。新しい設定マップを表示するには、以下を実行します。
# oc get cm <obc-name> -o yaml
obc-name
を OBC の名前に置き換えます。出力には、以下の環境変数が表示されることが予想されます。
-
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
: 認証情報の一部であるシークレットのアクセスキー
-
AWS_ACCESS_KEY_ID
と AWS_SECRET_ACCESS_KEY
を取得します。名前は、AWS S3 と互換性があるように使用されます。S3 操作の実行中、特に Multicloud Object Gateway (MCG) バケットから読み取り、書き込み、または一覧表示する場合は、キーを指定する必要があります。キーは Base64 でエンコードされています。キーを使用する前に、キーをデコードしてください。
# oc get secret <obc_name> -o yaml
<obc_name>
- オブジェクトバケットクレームの名前を指定します。
10.7.2. コマンドラインインターフェイスを使用した Object Bucket Claim(オブジェクトバケット要求) の作成
コマンドラインインターフェイスを使用して Object Bucket Claim (OBC) を作成する場合、設定マップとシークレットを取得します。これらには、アプリケーションがオブジェクトストレージサービスを使用するために必要なすべての情報が含まれます。
前提条件
Multicloud Object Gateway (MCG) コマンドラインインターフェイスをダウンロードします。
# subscription-manager repos --enable=rh-odf-4-for-rhel-8-x86_64-rpms # yum install mcg
注記サブスクリプションマネージャーを使用してリポジトリーを有効にするための適切なアーキテクチャーを指定します。
- IBM Power の場合は、次のコマンドを使用します。
# subscription-manager repos --enable=rh-odf-4-for-rhel-8-ppc64le-rpms
- IBM Z インフラストラクチャーの場合は、以下のコマンドを使用します。
# subscription-manager repos --enable=rh-odf-4-for-rhel-8-s390x-rpms
手順
コマンドラインインターフェイスを使用して、新規バケットおよび認証情報の詳細を生成します。
以下のコマンドを実行します。
# noobaa obc create <obc-name> -n openshift-storage
<obc-name>
を一意の OBC 名に置き換えます (例:myappobc
)。さらに、
--app-namespace
オプションを使用して、OBC 設定マップおよびシークレットが作成される namespace を指定できます (例:myapp-namespace
)。以下に例を示します。
INFO[0001] ✅ Created: ObjectBucketClaim "test21obc"
MCG コマンドラインインターフェイスが必要な設定を作成し、新規 OBC について OpenShift に通知します。
以下のコマンドを実行して OBC を表示します。
# oc get obc -n openshift-storage
以下に例を示します。
NAME STORAGE-CLASS PHASE AGE test21obc openshift-storage.noobaa.io Bound 38s
以下のコマンドを実行して、新規 OBC の 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 内で、設定マップおよびシークレットを見つけ、この OBC を使用することができます。CM とシークレットの名前はこの OBC の名前と同じです。以下のコマンドを実行してシークレットを表示します。
# oc get -n openshift-storage secret test21obc -o yaml
以下に例を示します。
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 エンドポイント情報が含まれます。
10.7.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 (MCG) を使用します。
-
- 外部モード
デプロイメント後に作成された以下のストレージクラスを使用できます。
-
ocs-external-storagecluster-ceph-rgw
は RGW を使用します。 openshift-storage.noobaa.io
は MCG を使用します。注記RGW OBC ストレージクラスは、OpenShift Data Foundation バージョン 4.5 の新規インストールでのみ利用できます。これは、以前の OpenShift Data Foundation リリースからアップグレードされたクラスターには適用されません。
-
Create をクリックします。
OBC を作成すると、その詳細ページにリダイレクトされます。
10.7.4. Object Bucket Claim(オブジェクトバケット要求) のデプロイメントへの割り当て
Object Bucket Claim(オブジェクトバケット要求、OBC) は作成後に、特定のデプロイメントに割り当てることができます。
前提条件
- OpenShift Web コンソールへの管理者アクセス。
手順
-
左側のナビゲーションバーで Storage
Object Bucket Claims をクリックします。 作成した OBC の横にあるアクションメニュー (⋮) をクリックします。
- ドロップダウンメニューで、Attach to Deployment を選択します。
- Deployment Name 一覧から必要なデプロイメントを選択し、Attach をクリックします。
10.7.5. OpenShift Web コンソールを使用したオブジェクトバケットの表示
OpenShift Web コンソールを使用して、Object Bucket Claim(オブジェクトバケット要求、OBC) 用に作成されたオブジェクトバケットの詳細を表示できます。
前提条件
- OpenShift Web コンソールへの管理者アクセス。
手順
- OpenShift Web コンソールにログインします。
左側のナビゲーションバーで Storage
Object Buckets をクリックします。 オプション: 特定の OBC の詳細ページに移動し、Resource リンクをクリックして、その OBC のオブジェクトバケットを表示することもできます。
- 詳細を表示するオブジェクトバケットを選択します。選択すると、Object Bucket Details ページに移動します。
10.7.6. Object Bucket Claim(オブジェクトバケット要求) の削除
前提条件
- OpenShift Web コンソールへの管理者アクセス。
手順
-
左側のナビゲーションバーで Storage
Object Bucket Claims をクリックします。 削除する Object Bucket Claim(オブジェクトバケット要求) の横にあるアクションメニュー (⋮) をクリックします。
- Delete Object Bucket Claim を選択します。
- Delete をクリックします。