为 GCP 后端配置 CVS
了解如何使用提供的示例配置将适用于Google Cloud Platform (GCP)的NetApp Cloud Volumes Service (CVS)配置为Astra Trident安装的后端。
了解适用于GCP的CVS的Astra Trident支持
Astra Trident支持默认CVS服务类型为on的卷 "GCP"。无论CVS服务类型允许的最小值如何、Astra Trident都不支持小于100 GiB的CVS卷。因此、如果请求的卷小于最小大小、Trident会自动创建100 GiB卷。
以配置和使用 "适用于 Google Cloud 的 Cloud Volumes Service" 后端,您需要满足以下要求:
-
配置了 NetApp CVS 的 Google Cloud 帐户
-
Google Cloud 帐户的项目编号
-
Google Cloud服务帐户
netappcloudvolumes.admin
role -
CVS 服务帐户的 API 密钥文件
后端配置选项
有关后端配置选项,请参见下表:
参数 | Description | Default |
---|---|---|
|
始终为 1 |
|
|
存储驱动程序的名称 |
"GCP-CVS" |
|
自定义名称或存储后端 |
驱动程序名称 + "_" + API 密钥的一部分 |
|
存储类型选择选项 |
|
|
Google Cloud 帐户项目编号。该值可在 Google Cloud 门户的主页页面上找到。 |
|
|
CVS 帐户区域。后端将在该区域配置卷。 |
|
|
Google Cloud服务帐户的API密钥 |
|
|
代理服务器需要连接到 CVS 帐户时的代理 URL 。代理服务器可以是 HTTP 代理,也可以是 HTTPS 代理。对于 HTTPS 代理,将跳过证书验证,以允许在代理服务器中使用自签名证书。不支持启用了身份验证的代理服务器。 |
|
|
精细控制 NFS 挂载选项。 |
"nfsvers=3" |
|
如果请求的卷大小超过此值,则配置失败 |
"" (默认情况下不强制实施) |
|
新卷的 CVS 服务级别。这些值包括 "standard" , "premer" 和 "Extreme " 。 |
标准 |
|
用于CVS卷的GCP网络 |
default |
|
故障排除时要使用的调试标志。示例、 |
空 |
如果使用共享VPC网络、则同时使用这两者 projectNumber
和 hostProjectNumber
必须指定。在这种情况下、 projectNumber
是服务项目、和 hostProjectNumber
是主机项目。
。 apiRegion
表示Astra Trident创建CVS卷的GCP区域。创建跨区域Kubernetes集群时、在中创建的CVS卷 apiRegion
可用于在多个GCP区域的节点上计划的工作负载。请注意,跨区域流量会产生额外成本。
|
Astra Trident 与 Google Cloud 上的基本 CVS 服务类型集成是一项 * 测试版功能 * ,不适用于生产工作负载。在 CVS-Performance 服务类型中, Trident 是 "* 完全支持 "* ,默认情况下会使用它。 |
每个后端都会在一个 Google Cloud 区域中配置卷。要在其他区域创建卷,您可以定义其他后端。
您可以通过在配置文件的特殊部分中指定以下选项来控制默认配置每个卷的方式。请参见以下配置示例。
参数 | Description | Default |
---|---|---|
|
新卷的导出规则 |
"0.0.0.0/0 |
|
访问 |
false |
|
为快照预留的卷百分比 |
"" (接受 CVS 默认值为 0 ) |
|
新卷的大小 |
"100Gi" |
。 exportRule
值必须是以CIDR表示法表示的IPv4地址或IPv4子网任意组合的逗号分隔列表。
对于在 CVS Google Cloud 后端创建的所有卷, Trident 会在配置存储池时将其上的所有标签复制到该存储卷。存储管理员可以为每个存储池定义标签,并对存储池中创建的所有卷进行分组。这样,您就可以根据后端配置中提供的一组可自定义标签来方便地区分卷了。 |
示例 1 :最低配置
这是绝对的最低后端配置。
{ "version": 1, "storageDriverName": "gcp-cvs", "projectNumber": "012345678901", "apiRegion": "us-west2", "apiKey": { "type": "service_account", "project_id": "my-gcp-project", "private_key_id": "<id_value>", "private_key": " -----BEGIN PRIVATE KEY----- <key_value> -----END PRIVATE KEY-----\n", "client_email": "cloudvolumes-admin-sa@my-gcp-project.iam.gserviceaccount.com", "client_id": "123456789012345678901", "auth_uri": "https://accounts.google.com/o/oauth2/auth", "token_uri": "https://oauth2.googleapis.com/token", "auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs", "client_x509_cert_url": "https://www.googleapis.com/robot/v1/metadata/x509/cloudvolumes-admin-sa%40my-gcp-project.iam.gserviceaccount.com" } }
示例 2 :基本 CVS 服务类型配置
此示例显示了使用基本 CVS 服务类型的后端定义,该服务类型适用于通用工作负载,可提供轻 / 中性能以及高区域可用性。
{ "version": 1, "storageDriverName": "gcp-cvs", "projectNumber": "012345678901", "storageClass": "software", "apiRegion": "us-east4", "apiKey": { "type": "service_account", "project_id": "my-gcp-project", "private_key_id": "<id_value>", "private_key": " -----BEGIN PRIVATE KEY----- <key_value> -----END PRIVATE KEY-----\n", "client_email": "cloudvolumes-admin-sa@my-gcp-project.iam.gserviceaccount.com", "client_id": "123456789012345678901", "auth_uri": "https://accounts.google.com/o/oauth2/auth", "token_uri": "https://oauth2.googleapis.com/token", "auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs", "client_x509_cert_url": "https://www.googleapis.com/robot/v1/metadata/x509/cloudvolumes-admin-sa%40my-gcp-project.iam.gserviceaccount.com" } }
示例 3 :单服务级别配置
此示例显示了一个后端文件,该文件对 Google Cloud us-west2 区域中由 Astra Trident 创建的所有存储应用相同的方面。此示例还显示了的使用情况 proxyURL
在后端配置文件中。
{ "version": 1, "storageDriverName": "gcp-cvs", "projectNumber": "012345678901", "apiRegion": "us-west2", "apiKey": { "type": "service_account", "project_id": "my-gcp-project", "private_key_id": "<id_value>", "private_key": " -----BEGIN PRIVATE KEY----- <key_value> -----END PRIVATE KEY-----\n", "client_email": "cloudvolumes-admin-sa@my-gcp-project.iam.gserviceaccount.com", "client_id": "123456789012345678901", "auth_uri": "https://accounts.google.com/o/oauth2/auth", "token_uri": "https://oauth2.googleapis.com/token", "auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs", "client_x509_cert_url": "https://www.googleapis.com/robot/v1/metadata/x509/cloudvolumes-admin-sa%40my-gcp-project.iam.gserviceaccount.com" }, "proxyURL": "http://proxy-server-hostname/", "nfsMountOptions": "vers=3,proto=tcp,timeo=600", "limitVolumeSize": "10Ti", "serviceLevel": "premium", "defaults": { "snapshotDir": "true", "snapshotReserve": "5", "exportRule": "10.0.0.0/24,10.0.1.0/24,10.0.2.100", "size": "5Ti" } }
示例 4 :虚拟存储池配置
此示例显示了使用虚拟存储池和配置的后端定义文件 StorageClasses
这是指它们。
在下面所示的示例后端定义文件中、为所有存储池设置了特定的默认值、这些存储池设置了 snapshotReserve
5%和 exportRule
到0.0.0.0/0。虚拟存储池在中进行定义 storage
部分。在此示例中、每个存储池都设置了自己的存储池 serviceLevel
、并且某些池会覆盖默认值。
{ "version": 1, "storageDriverName": "gcp-cvs", "projectNumber": "012345678901", "apiRegion": "us-west2", "apiKey": { "type": "service_account", "project_id": "my-gcp-project", "private_key_id": "<id_value>", "private_key": " -----BEGIN PRIVATE KEY----- <key_value> -----END PRIVATE KEY-----\n", "client_email": "cloudvolumes-admin-sa@my-gcp-project.iam.gserviceaccount.com", "client_id": "123456789012345678901", "auth_uri": "https://accounts.google.com/o/oauth2/auth", "token_uri": "https://oauth2.googleapis.com/token", "auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs", "client_x509_cert_url": "https://www.googleapis.com/robot/v1/metadata/x509/cloudvolumes-admin-sa%40my-gcp-project.iam.gserviceaccount.com" }, "nfsMountOptions": "vers=3,proto=tcp,timeo=600", "defaults": { "snapshotReserve": "5", "exportRule": "0.0.0.0/0" }, "labels": { "cloud": "gcp" }, "region": "us-west2", "storage": [ { "labels": { "performance": "extreme", "protection": "extra" }, "serviceLevel": "extreme", "defaults": { "snapshotDir": "true", "snapshotReserve": "10", "exportRule": "10.0.0.0/24" } }, { "labels": { "performance": "extreme", "protection": "standard" }, "serviceLevel": "extreme" }, { "labels": { "performance": "premium", "protection": "extra" }, "serviceLevel": "premium", "defaults": { "snapshotDir": "true", "snapshotReserve": "10" } }, { "labels": { "performance": "premium", "protection": "standard" }, "serviceLevel": "premium" }, { "labels": { "performance": "standard" }, "serviceLevel": "standard" } ] }
以下 StorageClass 定义引用了上述存储池。使用 parameters.selector
字段中、您可以为每个StorageClass指定用于托管卷的虚拟池。卷将在选定池中定义各个方面。
第一个StorageClass (cvs-extreme-extra-protection
)映射到第一个虚拟存储池。这是唯一一个可提供极高性能且 Snapshot 预留为 10% 的池。最后一个StorageClass (cvs-extra-protection
)调用提供10%快照预留的任何存储池。Astra Trident 决定选择哪个虚拟存储池,并确保满足快照预留要求。
apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: name: cvs-extreme-extra-protection provisioner: netapp.io/trident parameters: selector: "performance=extreme; protection=extra" allowVolumeExpansion: true --- apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: name: cvs-extreme-standard-protection provisioner: netapp.io/trident parameters: selector: "performance=premium; protection=standard" allowVolumeExpansion: true --- apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: name: cvs-premium-extra-protection provisioner: netapp.io/trident parameters: selector: "performance=premium; protection=extra" allowVolumeExpansion: true --- apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: name: cvs-premium provisioner: netapp.io/trident parameters: selector: "performance=premium; protection=standard" allowVolumeExpansion: true --- apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: name: cvs-standard provisioner: netapp.io/trident parameters: selector: "performance=standard" allowVolumeExpansion: true --- apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: name: cvs-extra-protection provisioner: netapp.io/trident parameters: selector: "protection=extra" allowVolumeExpansion: true
下一步是什么?
创建后端配置文件后,运行以下命令:
tridentctl create backend -f <backend-file>
如果后端创建失败,则后端配置出现问题。您可以运行以下命令来查看日志以确定发生原因:
tridentctl logs
确定并更正配置文件中的问题后,您可以再次运行 create 命令。