4.3. 配置持久性存储

重要

Metering 是一个已弃用的功能。弃用的功能仍然包含在 OpenShift Container Platform 中,并将继续被支持。但是,这个功能会在以后的发行版本中被删除,且不建议在新的部署中使用。

有关 OpenShift Container Platform 中已弃用或删除的主要功能的最新列表,请参阅 OpenShift Container Platform 发行注记中已弃用和删除的功能部分。

Metering 需要持久性存储来保留 Metering Operator 收集的数据并存储报告结果。它支持多种存储系统和存储格式。选择您的存储系统并修改示例配置文件,以便为您的 metering 安装配置持久性存储。

4.3.1. 将数据存储至 Amazon S3 中

Metering 可以使用现有的 Amazon S3 存储桶,或为存储创建存储桶。

注意

Metering 不会管理或删除任何 S3 存储桶数据。您必须手动清理用于存储 metering 数据的 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
    metering 命名空间中的一个 secret 的名称。它包含了 AWS 凭证信息(data.aws-access-key-iddata.aws-secret-access-key)。更多详情请查看以下示例 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. 创建 secret:

    $ 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-id 值和 aws-secret-access-key 值自动进行 base64 编码。

aws-access-key-idaws-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"
            ]
        }
    ]
}

如果 s3-storage.yaml 文件中的 spec.storage.hive.s3.createBucket 被设置为 true 或取消设置,那么您应该使用包含创建和删除存储桶权限的 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"
            ]
        }
    ]
}