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 存储桶。
流程
编辑
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
使用以下
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 编码。创建 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-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" ] } ] }
如果 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" ] } ] }
4.3.2. 将数据存储至 S3 兼容存储中
您可以使用 S3 兼容存储,如 Noobaa。
流程
编辑
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
使用以下
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 存储中,必须使用已有容器。
流程
编辑
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
使用以下
Secret
对象作为模板:Azure
Secret
对象示例apiVersion: v1 kind: Secret metadata: name: my-azure-secret data: azure-storage-account-name: "dGVzdAo=" azure-secret-access-key: "c2VjcmV0Cg=="
创建 secret:
$ 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 中,您必须使用现有的存储桶。
流程
编辑
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
使用以下
Secret
对象作为模板:Google Cloud Storage
Secret
对象示例apiVersion: v1 kind: Secret metadata: name: my-gcs-secret data: gcs-service-account.json: "c2VjcmV0Cg=="
创建 secret:
$ oc create secret -n openshift-metering generic my-gcs-secret \ --from-file gcs-service-account.json=/path/to/my/service-account-key.json