10.5.5.2. YAML を使用した IBM COS namespace バケットの追加

前提条件

手順

  1. 認証情報でシークレットを作成します。

    apiVersion: v1
    kind: Secret
    metadata:
    name: <namespacestore-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>
    1. Base64 を使用して独自の IBM COS アクセスキー ID およびシークレットアクセスキーを指定し、エンコードし、その結果を <IBM COS ACCESS KEY ID ENCODED IN BASE64> および <IBM COS SECRET ACCESS KEY ENCODED IN BASE64> に使用する必要があります。
    2. <namespacestore-secret-name> を一意の名前に置き換えます。
  2. OpenShift カスタムリソース定義 (CRD) を使用して NamespaceStore リソースを作成します。NamespaceStore は、Multicloud Object Gateway namespace バケットでデータの読み取りおよび書き込みターゲットとして使用される基礎となるストレージを表します。NamespaceStore リソースを作成するには、以下の YAML を適用します。

    apiVersion: noobaa.io/v1alpha1
    kind: NamespaceStore
    metadata:
      finalizers:
      - noobaa.io/finalizer
      labels:
        app: noobaa
      name: bs
      namespace: k8snamespace
    spec:
      s3Compatible:
        endpoint: <IBM COS ENDPOINT>
        secret:
          name: <namespacestore-secret-name>
          namespace: openshift-storage
        signatureVersion: v2
        targetBucket: BUCKET
      type: ibm-cos
    1. <IBM COS ENDPOINT> を適切な IBM COS エンドポイントに置き換えます。
    2. <namespacestore-secret-name> を手順 1 で作成したシークレットに置き換えます。
  3. namespace バケットの namespace ポリシーを定義する namespace バケットクラスを作成します。namespace ポリシーには、single または multi のタイプが必要です。

    • タイプ single の namespace ポリシーには、以下の設定が必要です。

      apiVersion: noobaa.io/v1alpha1
      kind: BucketClass
      metadata:
        labels:
          app: noobaa
        name: <my-bucket-class>
        namespace: openshift-storage
      spec:
        namespacePolicy:
          type:
          single:
            resource: <resource>

      <my-bucket-class> を一意のバケットクラス名に置き換えます。

      <resource> を namespace バケットの読み取りおよび書き込みターゲットを定義する単一の namespace-store に置き換えます。

    • タイプが multi の namespace ポリシーには、以下の設定が必要です。

      apiVersion: noobaa.io/v1alpha1
      kind: BucketClass
      metadata:
        labels:
          app: noobaa
        name: <my-bucket-class>
        namespace: openshift-storage
      spec:
        namespacePolicy:
          type: Multi
          multi:
            writeResource: <write-resource>
            readResources:
            - <read-resources>
            - <read-resources>

      <my-bucket-class> を一意のバケットクラス名に置き換えます。

      write-resource を、namespace バケットの書き込みターゲットを定義する単一の namespace-store に置き換えます。

      <read-resources を、namespace バケットの読み取りターゲットを定義する namespace-stores の一覧に置き換えます。

  4. 以下のコマンドを実行して、手順 2 に定義されたバケットクラスを使用する Object Bucket Class (OBC) リソースを使用してバケットを作成します。

    apiVersion: objectbucket.io/v1alpha1
    kind: ObjectBucketClaim
    metadata:
      name: my-bucket-claim
      namespace: my-app
    spec:
      generateBucketName: my-bucket
      storageClassName: noobaa.noobaa.io
      additionalConfig:
        bucketclass: <my-bucket-class>
    1. <my-bucket-class> を直前の手順で作成したバケットクラスに置き換えます。

OBC が Operator によってプロビジョニングされると、バケットが Multicloud Object Gateway で作成され、Operator は OBC の同じ namespace 上に OBC に同じ名前でシークレットおよび ConfigMap を作成します。