查看和管理配额¶
Designate 中存在各种资源的配额。您可以全局配置配额,也可以按项目配置配额。
查看配额¶
用于 OpenStack Client 的 Designate 插件 允许用户使用 dns quota list 命令查询其当前配额。
$ openstack dns quota list
+-------------------+-------+
| Field | Value |
+-------------------+-------+
| api_export_size | 1000 |
| recordset_records | 20 |
| zone_records | 500 |
| zone_recordsets | 500 |
| zones | 10 |
+-------------------+-------+
用户还可以使用简单的 查看当前项目的配额 Designate API 调用来查看其配额
GET /v2/quotas/ HTTP/1.1
Accept: application/json
Content-Type: application/json
响应
HTTP/1.1 200 OK
Content-Type: application/json; charset=UTF-8
X-Openstack-Request-Id: req-bfcd0723-624c-4ec2-bbd5-99e985efe8db
{
"api_export_size": 1000,
"recordset_records": 20,
"zone_records": 500,
"zone_recordsets": 500,
"zones": 10
}
具有跨项目读取角色的管理员可以使用 --project-id 选项来使用 dns quota list 命令查询其他项目的配额,或者在发出 查看配额 Designate API 调用时指定 project_id。
$ openstack dns quota list --project-id ecd4341280d645e5959d32a4b7659da1
+-------------------+-------+
| Field | Value |
+-------------------+-------+
| api_export_size | 1000 |
| recordset_records | 20 |
| zone_records | 500 |
| zone_recordsets | 500 |
| zones | 20 |
+-------------------+-------+
GET /v2/quotas/ecd4341280d645e5959d32a4b7659da1 HTTP/1.1
Accept: application/json
Content-Type: application/json
修改配额¶
您可以按项目修改 Designate 配额。管理员可以编辑任何项目的配额,但他们必须具有 all_tenants 角色或使用系统范围的管理员令牌。
管理员可以使用 OpenStack Client dns quota set 命令为项目设置自定义配额。
$ openstack dns quota set --project-id ecd4341280d645e5959d32a4b7659da1 --zones 30
+-------------------+-------+
| Field | Value |
+-------------------+-------+
| api_export_size | 1000 |
| recordset_records | 20 |
| zone_records | 500 |
| zone_recordsets | 500 |
| zones | 30 |
+-------------------+-------+
以下是使用 设置配额 Designate API 设置配额的示例。
PATCH /v2/quotas/ecd4341280d645e5959d32a4b7659da1 HTTP/1.1
Accept: application/json
Content-Type: application/json
X-Auth-All-Projects: True
{
"zones": 30
}
响应将是
HTTP/1.1 200 OK
Content-Type: application/json; charset=UTF-8
X-Openstack-Request-Id: req-ee264c7d-d9f3-4de8-92ec-7de4dc93a255
{
"api_export_size": 1000,
"recordset_records": 20,
"zone_records": 500,
"zone_recordsets": 500,
"zones": 30
}
重置配额¶
您可以使用 dns quota reset 命令将项目的自定义配额重置为其默认值。管理员可以重置任何项目的配额,但他们必须具有 all_tenants 角色或使用系统范围的管理员令牌。
$ openstack dns quota reset --project-id ecd4341280d645e5959d32a4b7659da1
注意
成功的 dns quota reset 命令不会产生任何输出。
以下是使用 重置配额 Designate API 重置项目配额的示例。
DELETE /v2/quotas/ecd4341280d645e5959d32a4b7659da1 HTTP/1.1
Accept: application/json
Content-Type: application/json
X-Auth-All-Projects: True
响应将是
HTTP/1.1 204 No Content
X-Openstack-Request-Id: req-82b85853-145d-4253-be86-b9aa3116b975
可用配额¶
Designate 中可用的配额如下,并附有简短的描述和默认值。
区域¶
配额 |
描述 |
默认值 |
zones |
每个项目允许的区域数量 |
10 |
记录集/记录¶
配额 |
描述 |
默认值 |
zone_recordsets |
每个区域允许的记录集数量 |
500 |
zone_records |
每个区域允许的记录数量 |
500 |
recordset_records |
每个记录集允许的记录数量 |
20 |
区域导出¶
配额 |
描述 |
默认值 |
api_export_size |
区域导出中允许的记录集数量 |
1000 |
默认配额¶
您可以通过编辑 [DEFAULT] 配置部分中的 designate.conf 文件来为每个配额设置默认值,例如
[DEFAULT]
########################
## General Configuration
########################
quota_zones = 10
quota_zone_recordsets = 500
quota_zone_records = 500
quota_recordset_records = 20
quota_api_export_size = 1000
项目 ID 验证¶
虽然 Designate API 可以接受任意字符串作为项目 ID 以设置配额,但实际的配额执行仅在配额的项目 ID 与尝试创建资源的请求中的 project-id 匹配时才会执行。
为了避免在指定 project-id 时出错,您可以在 Designate 配置文件中启用项目 ID 验证
[service:api]
quotas_verify_project_id = True
您还必须指定 Designate 如何连接到 Keystone 并找到执行请求的适当 Keystone 端点。在 [keystone] 部分,请确保设置了与会话和适配器相关的选项。
这是一个例子
[keystone]
cafile = /path/to/ca/bundle
valid_interfaces = internal,public
region_name = RegionWest
有关更多详细信息,请参阅 keystoneauth 文档。
启用项目 ID 验证后,Designate 将使用请求中提供的凭据尝试验证项目 ID 在 Keystone 中是否有效。
作为此验证的结果,在这些情况下,请求可能会返回其他错误
如果在服务目录中找不到 Keystone V3 端点(如在
[keystone]部分中指定)- 将返回504错误如果使用传入令牌的身份验证成功,但实际上未找到项目 ID - 将返回
400
为了使项目 ID 验证成功,设置配额的用户必须具有在 Keystone 中列出项目的权限。如果用户没有在 Keystone 中列出项目的权限,则将跳过验证。