動的オブジェクト・バケット・クレーム

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

このタスクについて

注: Multicloud Object Gateway エンドポイントは、 OpenShift が自己署名証明書を使用する場合にのみ、自己署名証明書を使用します。 OpenShift で署名付き証明書を使用すると、Multicloud Object Gateway エンドポイント証明書が署名付き証明書に自動的に置き換えられます。 ブラウザーを介してエンドポイントにアクセスすることにより、Multicloud Object Gateway によって現在使用されている証明書を取得します。 詳しくは、 Multicloud Object Gateway へのアプリケーションとのアクセスを参照してください。

手順

  1. 以下の行をアプリケーション YAML に追加します。
    これらの線は OBC 自体である。
    apiVersion: objectbucket.io/v1alpha1
    kind: ObjectBucketClaim
    metadata:
      name: <obc-name>
    spec:
      generateBucketName: <obc-bucket-name>
      storageClassName: openshift-storage.noobaa.io
    < Obc-name>
    固有の OBC 名を使用してください。
    < oc-バケット名>
    OBC には固有のバケット名を使用してください。
  2. OBC の使用を自動化するには、YAML ファイルにさらに行を追加します。
    例:
    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, から Object Bucket を要求し、Bucket とアカウントを作成する。
    < Obc-name>
    OBC 名を使用してください。
    < アプリケーション・イメージ>
    アプリケーション・イメージを使用します。
  3. 更新した YAML ファイルを適用します。ここで、 <yaml.file> は YAML ファイルの名前です。
    oc apply -f <yaml.file>
  4. 新しい構成マップを表示するには、次のコマンドを実行します。ここで、 < obc-name> は OBC の名前です。
    oc get cm <obc-name> -o yaml
    出力には以下の環境変数が予期されます。
    バケット・ホスト (BUCKET_HOST)
    アプリケーションで使用するエンドポイント。
    バケット・ホスト (BUCKET_HOST)
    ポートは BUCKET_HOSTに関連しています。 例えば、 BUCKET_HOSThttps://my.example.comで、 BUCKET_PORT が 443 の場合、オブジェクト・サービスのエンドポイントは https://my.exaple.com:443になります。
    バケット名 (BUCKET_NAME)
    要求または生成されたバケット名。
    「AWS_ACCESS_KEY_ID」
    資格情報の一部であるアクセス・キー。
    「AWS_SECRET_ACCESS_KEY」
    資格情報の一部である秘密アクセス・キー。
    重要: AWS_ACCESS_KEY_ID および AWS_SECRET_ACCESS_KEYを取得します。 これらの名前は、 AWS S3 API と互換性があるように使用されます。 特に Multicloud Object Gateway (MCG) バケットから読み取り、書き込み、またはリストする場合は、 S3 操作の実行中に鍵を指定する必要があります。 鍵は Base64でエンコードされます。
    以下のコマンドを使用して、使用する前に鍵をデコードします。ここで、 < obc_name> はオブジェクト・バケット・クレームの名前を指定します。
    oc get secret <obc_name> -o yaml