4.3. 永続ストレージの設定


重要

メータリングは非推奨の機能です。非推奨の機能は依然として OpenShift Container Platform に含まれており、引き続きサポートされますが、本製品の今後のリリースで削除されるため、新規デプロイメントでの使用は推奨されません。

OpenShift Container Platform で非推奨となったか、または削除された主な機能の最新の一覧については、OpenShift Container Platform リリースノートの 非推奨および削除された機能セクションを参照してください。

メータリングでは、メータリング Operator によって収集されるデータを永続化し、レポートの結果を保存するための永続ストレージが必要です。数多くの異なるストレージプロバイダーおよびストレージ形式がサポートされています。ストレージプロバイダーを選択し、設定ファイルのサンプルを変更して、メータリングのインストール用に永続ストレージを設定します。

4.3.1. Amazon S3 でのデータの保存

メータリングは既存の Amazon S3 バケットを使用するか、またはストレージのバケットを作成できます。

注記

メータリングは S3 バケットデータを管理したり、削除したりしません。メータリングデータを保存するために使用される S3 バケットを手動でクリーンアップする必要があります。

手順

  1. s3-storage.yaml ファイルの spec.storage セクションを編集します。

    例: s3-storage.yaml ファイル

    apiVersion: metering.openshift.io/v1
    kind: MeteringConfig
    metadata:
      name: "operator-metering"
    spec:
      storage:
        type: "hive"
        hive:
          type: "s3"
          s3:
            bucket: "bucketname/path/" 1
            region: "us-west-1" 2
            secretName: "my-aws-secret" 3
            # Set to false if you want to provide an existing bucket, instead of
            # having metering create the bucket on your behalf.
            createBucket: true 4

    1
    データを格納するバケットの名前を指定します。オプション: バケット内でパスを指定します。
    2
    バケットのリージョンを指定します。
    3
    data.aws-access-key-id および data.aws-secret-access-key フィールドに AWS 認証情報を含むメータリング namespace のシークレットの名前。詳細は、以下の Secret オブジェクトのサンプルを参照してください。
    4
    既存の S3 バケットを指定する必要がある場合や、CreateBucket パーミッションを持つ IAM 認証情報を指定する必要がない場合は、このフィールドを false に設定します。
  2. 以下の Secret オブジェクトをテンプレートとして使用します。

    AWS Secret オブジェクトの例

    apiVersion: v1
    kind: Secret
    metadata:
      name: my-aws-secret
    data:
      aws-access-key-id: "dGVzdAo="
      aws-secret-access-key: "c2VjcmV0Cg=="

    注記

    aws-access-key-id および aws-secret-access-key の値は base64 でエンコードされる必要があります。

  3. シークレットを作成します。

    $ oc create secret -n openshift-metering generic my-aws-secret \
      --from-literal=aws-access-key-id=my-access-key \
      --from-literal=aws-secret-access-key=my-secret-key
    注記

    このコマンドは、aws-access-key-idaws-secret-access-key の値を自動的に base64 でエンコードします。

aws-access-key-id および aws-secret-access-key 認証情報には、バケットへの読み取りおよび書き込みアクセスがなければなりません。以下の aws/read-write.json ファイルは、必要なパーミッションを付与する IAM ポリシーを示しています。

aws/read-write.json ファイルの例

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "1",
            "Effect": "Allow",
            "Action": [
                "s3:AbortMultipartUpload",
                "s3:DeleteObject",
                "s3:GetObject",
                "s3:HeadBucket",
                "s3:ListBucket",
                "s3:ListMultipartUploadParts",
                "s3:PutObject"
            ],
            "Resource": [
                "arn:aws:s3:::operator-metering-data/*",
                "arn:aws:s3:::operator-metering-data"
            ]
        }
    ]
}

spec.storage.hive.s3.createBuckettrue に設定しているか、または s3-storage.yaml ファイルで未設定にされている場合、バケットの作成および削除のためのパーミッションが含まれる aws/read-write-create.json ファイルを使用する必要があります。

aws/read-write-create.json ファイルの例

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "1",
            "Effect": "Allow",
            "Action": [
                "s3:AbortMultipartUpload",
                "s3:DeleteObject",
                "s3:GetObject",
                "s3:HeadBucket",
                "s3:ListBucket",
                "s3:CreateBucket",
                "s3:DeleteBucket",
                "s3:ListMultipartUploadParts",
                "s3:PutObject"
            ],
            "Resource": [
                "arn:aws:s3:::operator-metering-data/*",
                "arn:aws:s3:::operator-metering-data"
            ]
        }
    ]
}

4.3.2. S3 互換ストレージへのデータの保存

Noobaa などの S3 互換ストレージを使用できます。

手順

  1. s3-compatible-storage.yaml ファイルで spec.storage セクションを編集します。

    例: s3-compatible-storage.yaml ファイル

    apiVersion: metering.openshift.io/v1
    kind: MeteringConfig
    metadata:
      name: "operator-metering"
    spec:
      storage:
        type: "hive"
        hive:
          type: "s3Compatible"
          s3Compatible:
            bucket: "bucketname" 1
            endpoint: "http://example:port-number" 2
            secretName: "my-aws-secret" 3

    1
    S3 互換バケットの名前を指定します。
    2
    ストレージのエンドポイントを指定します。
    3
    data.aws-access-key-id および data.aws-secret-access-key フィールドに AWS 認証情報を含むメータリング namespace のシークレットの名前。詳細は、以下の Secret オブジェクトのサンプルを参照してください。
  2. 以下の Secret オブジェクトをテンプレートとして使用します。

    S3 と互換性のある Secret オブジェクトの例

    apiVersion: v1
    kind: Secret
    metadata:
      name: my-aws-secret
    data:
      aws-access-key-id: "dGVzdAo="
      aws-secret-access-key: "c2VjcmV0Cg=="

4.3.3. Microsoft Azure へのデータの保存

Azure Blob ストレージにデータを保存するには、既存のコンテナーを使用する必要があります。

手順

  1. azure-blob-storage.yaml ファイルで spec.storage セクションを編集します。

    azure-blob-storage.yaml ファイルの例

    apiVersion: metering.openshift.io/v1
    kind: MeteringConfig
    metadata:
      name: "operator-metering"
    spec:
      storage:
        type: "hive"
        hive:
          type: "azure"
          azure:
            container: "bucket1" 1
            secretName: "my-azure-secret" 2
            rootDirectory: "/testDir" 3

    1
    コンテナー名を指定します。
    2
    シークレットをメータリング namespace に指定します。詳細は、以下の Secret オブジェクトのサンプルを参照してください。
    3
    オプション: データを格納するディレクトリーを指定します。
  2. 以下の Secret オブジェクトをテンプレートとして使用します。

    Azure Secret オブジェクトの例

    apiVersion: v1
    kind: Secret
    metadata:
      name: my-azure-secret
    data:
      azure-storage-account-name: "dGVzdAo="
      azure-secret-access-key: "c2VjcmV0Cg=="

  3. シークレットを作成します。

    $ oc create secret -n openshift-metering generic my-azure-secret \
      --from-literal=azure-storage-account-name=my-storage-account-name \
      --from-literal=azure-secret-access-key=my-secret-key

4.3.4. Google Cloud Storage へのデータの保存

Google Cloud Storage にデータを保存するには、既存のバケットを使用する必要があります。

手順

  1. gcs-storage.yaml ファイルで spec.storage セクションを編集します。

    gcs-storage.yaml ファイルの例

    apiVersion: metering.openshift.io/v1
    kind: MeteringConfig
    metadata:
      name: "operator-metering"
    spec:
      storage:
        type: "hive"
        hive:
          type: "gcs"
          gcs:
            bucket: "metering-gcs/test1" 1
            secretName: "my-gcs-secret" 2

    1
    バケットの名前を指定します。オプションで、データを保存するバケット内でディレクトリーを指定することができます。
    2
    シークレットをメータリング namespace に指定します。詳細は、以下の Secret オブジェクトのサンプルを参照してください。
  2. 以下の Secret オブジェクトをテンプレートとして使用します。

    Google Cloud Storage Secret オブジェクトの例

    apiVersion: v1
    kind: Secret
    metadata:
      name: my-gcs-secret
    data:
      gcs-service-account.json: "c2VjcmV0Cg=="

  3. シークレットを作成します。

    $ oc create secret -n openshift-metering generic my-gcs-secret \
      --from-file gcs-service-account.json=/path/to/my/service-account-key.json

4.3.5. 共有ボリュームへのデータの保存

メータリングはデフォルトでストレージを設定しません。ただし、メータリングストレージ用に ReadWriteMany 永続ボリューム (PV) または ReadWriteMany PV をプロビジョニングするすべてのストレージクラスを使用できます。

注記

NFS を実稼働環境で使用することは推奨されません。RHEL の NFS サーバーをストレージバックエンドとして使用すると、メータリングの要件を満たせず、メータリング Operator が適切に機能するために必要なパフォーマンスを出せない可能性があります。

marketplace の他の NFS 実装にはこれらの問題が検出されない可能性があります (Parallel Network File System (pNFS) など)。pNFS は分散および並列機能を持つ NFS 実装です。OpenShift Container Platform コアコンポーネントに対して実施された可能性のあるテストに関する詳細情報は、個別の NFS 実装ベンダーにお問い合わせください。

手順

  1. ストレージに ReadWriteMany 永続ボリュームを使用するには、shared-storage.yaml ファイルを変更します。

    apiVersion: metering.openshift.io/v1
    kind: MeteringConfig
    metadata:
      name: "operator-metering"
    spec:
      storage:
        type: "hive"
        hive:
          type: "sharedPVC"
          sharedPVC:
            claimName: "metering-nfs" 1
            # Uncomment the lines below to provision a new PVC using the specified storageClass. 2
            # createPVC: true
            # storageClass: "my-nfs-storage-class"
            # size: 5Gi

    以下のいずれかの設定オプションを選択します。

    1
    storage.hive.sharedPVC.claimName を既存の ReadWriteMany 永続ボリューム要求 (PVC) の名前に設定します。この設定は、動的ボリュームプロビジョニングがない場合や、永続ボリュームの作成方法をより詳細に制御する必要がある場合に必要です。
    2
    storage.hive.sharedPVC.createPVCtrue に設定し、storage.hive.sharedPVC.storageClass を ReadWriteMany アクセスモードのストレージクラスの名前に設定します。この設定は、動的ボリュームプロビジョニングを使用して、ボリュームを自動的に作成します。
  2. メータリング用に NFS サーバーをデプロイするために必要な以下のリソースオブジェクトを作成します。oc create -f <file-name>.yaml コマンドを使用してオブジェクト YAML ファイルを作成します。

    1. PersistentVolume リソースオブジェクトを設定します。

      nfs_persistentvolume.yaml ファイルの例

      apiVersion: v1
      kind: PersistentVolume
      metadata:
        name: nfs
        labels:
          role: nfs-server
      spec:
        capacity:
          storage: 5Gi
        accessModes:
        - ReadWriteMany
        storageClassName: nfs-server 1
        nfs:
          path: "/"
          server: REPLACEME
        persistentVolumeReclaimPolicy: Delete

      1
      [kind: StorageClass].metadata.name フィールドの値に一致する必要があります。
    2. Pod リソースオブジェクトを nfs-server ロールで設定します。

      nfs_server.yaml ファイルの例

      apiVersion: v1
      kind: Pod
      metadata:
        name: nfs-server
        labels:
          role: nfs-server
      spec:
        containers:
          - name: nfs-server
            image: <image_name> 1
            imagePullPolicy: IfNotPresent
            ports:
              - name: nfs
                containerPort: 2049
            securityContext:
              privileged: true
            volumeMounts:
            - mountPath: "/mnt/data"
              name: local
        volumes:
          - name: local
            emptyDir: {}

      1
      NFS サーバーイメージをインストールします。
    3. Service リソースオブジェクトを nfs-server ロールで設定します。

      nfs_service.yaml ファイルの例:

      apiVersion: v1
      kind: Service
      metadata:
        name: nfs-service
        labels:
          role: nfs-server
      spec:
        ports:
        - name: 2049-tcp
          port: 2049
          protocol: TCP
          targetPort: 2049
        selector:
          role: nfs-server
        sessionAffinity: None
        type: ClusterIP

    4. StorageClass リソースオブジェクトを設定します。

      nfs_storageclass.yaml ファイルの例

      apiVersion: storage.k8s.io/v1
      kind: StorageClass
      metadata:
        name: nfs-server 1
      provisioner: example.com/nfs
      parameters:
        archiveOnDelete: "false"
      reclaimPolicy: Delete
      volumeBindingMode: Immediate

      1
      [kind: PersistentVolume].spec.storageClassName フィールドの値に一致する必要があります。
警告

NFS ストレージおよび関連するリソースオブジェクトの設定は、メータリングストレージに使用する NFS サーバーイメージによって異なります。

Red Hat logoGithubRedditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

© 2024 Red Hat, Inc.