4.3. 配置持久性存储
metering 需要持久性存储来长久保留通过 metering-operator 收集的数据并存储报告结果。它支持多种存储系统和存储格式。选择您的存储系统并修改示例配置文件,以便为您的 metering 安装配置持久性存储。
4.3.1. 将数据存储至 Amazon S3 中 复制链接链接已复制到粘贴板!
Metering 可以使用现有的 Amazon S3 存储桶,或为存储创建存储桶。
Metering 不会管理或删除任何 S3 存储桶数据。卸载 metering 时,必须手动清理用于存储 metering 数据的 S3 存储桶。
要将 Amazon S3 用于存储,请编辑以下示例 s3-storage.yaml 文件中的 spec.storage 部分。
apiVersion: metering.openshift.io/v1
kind: MeteringConfig
metadata:
name: "operator-metering"
spec:
storage:
type: "hive"
hive:
type: "s3"
s3:
bucket: "bucketname/path/"
region: "us-west-1"
secretName: "my-aws-secret"
# Set to false if you want to provide an existing bucket, instead of
# having metering create the bucket on your behalf.
createBucket: true
使用以下示例 secret 作为模板。
Aws-access-key-id 值和 aws-secret-access-key 值必须采用 base64 编码。
apiVersion: v1
kind: Secret
metadata:
name: your-aws-secret
data:
aws-access-key-id: "dGVzdAo="
aws-secret-access-key: "c2VjcmV0Cg=="
您可使用以下命令创建 secret。
该命令会对您的 aws-access-key-id 值和 aws-secret-access-key 值自动进行 base64 编码。
oc create secret -n openshift-metering generic your-aws-secret --from-literal=aws-access-key-id=your-access-key --from-literal=aws-secret-access-key=your-secret-key
aws-access-key-id 和 aws-secret-access-key 凭证必须具有存储桶的读取和写入权限。有关授予所需权限的 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.createBucket 设置为 true 或取消设置,则需使用以下 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 部分。
apiVersion: metering.openshift.io/v1
kind: MeteringConfig
metadata:
name: "operator-metering"
spec:
storage:
type: "hive"
hive:
type: "s3Compatible"
s3Compatible:
bucket: "bucketname"
endpoint: "http://example:port-number"
secretName: "my-aws-secret"
使用以下示例 secret 作为模板。
apiVersion: v1
kind: Secret
metadata:
name: your-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 部分。
apiVersion: metering.openshift.io/v1
kind: MeteringConfig
metadata:
name: "operator-metering"
spec:
storage:
type: "hive"
hive:
type: "azure"
azure:
container: "bucket1"
secretName: "my-azure-secret"
rootDirectory: "/testDir"
使用以下示例 secret 作为模板。
apiVersion: v1
kind: Secret
metadata:
name: your-azure-secret
data:
azure-storage-account-name: "dGVzdAo="
azure-secret-access-key: "c2VjcmV0Cg=="
您可使用以下命令创建 secret。
oc create secret -n openshift-metering generic your-azure-secret --from-literal=azure-storage-account-name=your-storage-account-name --from-literal=azure-secret-access-key=your-secret-key
4.3.4. 将数据存储至 Google Cloud Storage 中 复制链接链接已复制到粘贴板!
要将数据存储至 Google Cloud Storage 中,必须使用已有存储桶。编辑以下示例 gcs-storage.yaml 文件中的 spec.storage 部分。
apiVersion: metering.openshift.io/v1
kind: MeteringConfig
metadata:
name: "operator-metering"
spec:
storage:
type: "hive"
hive:
type: "gcs"
gcs:
bucket: "metering-gcs/test1"
secretName: "my-gcs-secret"
使用以下示例 secret 作为模板。
apiVersion: v1
kind: Secret
metadata:
name: your-gcs-secret
data:
gcs-service-account.json: "c2VjcmV0Cg=="
您可使用以下命令创建 secret。
oc create secret -n openshift-metering generic your-gcs-secret --from-file gcs-service-account.json=/path/to/your/service-account-key.json