启用 VPC 作为 DNS 中心
您可以启用 VPC 作为 DNS 中心,以便其他 VPC 可以使用此 VPC 创建 DNS 解析绑定,并在启用了 DNS 解析绑定的情况下集中用于 VPE 网关的 DNS 解析。
准备工作
- 在启用 VPC 作为 DNS 中心之前,请查看 规划注意事项 和 已知问题和限制。
- 确保您选择作为中心启用的 VPC 将其 DNS 解析器类型设置为“系统”(缺省值) 或“手动”。 有关更多信息,请参阅 设置 DNS 解析器类型。
您可以使用控制台、CLI、API 或 Terraform 将 VPC 启用为 DNS 中心。
在控制台中将 VPC 启用为 DNS 中心
要在 IBM Cloud 控制台中启用 VPC 作为 DNS 中心,请执行以下步骤:
-
从浏览器打开 IBM Cloud 控制台并登录账户。
-
选择导航菜单
,然后单击基础架构 > 网络 > VPC。
-
单击要指定为 DNS 中心 VPC 的虚拟私有云的链接。 将显示“概述”页面。
-
滚动到页面末尾的“可选 DNS 设置”部分,然后展开 DNS 中心部分并启用 DNS 中心开关。
现在,“虚拟私有云”表在指定中心 VPC 的名称旁边显示
DNS-hub
标记。
从 CLI 启用 VPC 作为 DNS 中心
要使用 CLI 将 VPC 启用为 DNS 中心,请执行以下步骤:
-
使用 CLI 登录您的账户。 输入密码后,系统会询问要使用的帐户和区域:
ibmcloud login --sso
-
为 VPC 启用 DNS 中心并指定解析器类型:
ibmcloud is vpc-create my-cli-vpc [--dns-enable-hub true] [--dns-resolver-type manual] [--dns-resolver-manual-servers MANUAL_SERVERS | @MANUAL_SERVERS]
其中:
--dns-enable-hub
- 指示是否将此 VPC 作为 DNS 名称解析中心启用。 其中一个:
false
,true
。 --dns-resolver-type
- 表示要使用的 DNS 解析器类型。 其中一个:
system
(缺省值),manual
。 --dns-resolver-manual-servers
- 解析器类型为
manual
时有效。 为 VPC 配置手动 DNS 服务器地址。JSON 或 JSON 文件中的MANUAL_SERVERS|@MANUAL_SERVERS
手动服务器。
使用 API 将 VPC 启用为 DNS 中心
要使用 API 将 VPC 启用为 DNS 中心,请执行以下步骤:
-
设置 API 环境。
-
要启用现有 VPC 作为 DNS 中心,请输入以下命令:
curl -X PATCH -sH "Authorization:${iam_token}" "${vpc_api_endpoint}/v1/vpcs/${vpc_id}?version=${api_version}&generation=2" -d '{"dns": {"enable_hub": true}}'
-
要创建具有缺省 DNS 服务器的中心 VPC,请输入以下命令:
curl -X POST -sH "Authorization:${iam_token}" "${vpc_api_endpoint}/v1/vpcs?version=$api_version&generation=2" -d '{"name": "test-hub", "dns": {"enable_hub": true}, "resource_group": {"id": "'$ResourceGroupId'"}}'
有关更多信息,请参阅 创建 VPC API。
样本输出:
"classic_access": false,
"created_at": "2019-01-27T14:39:40Z",
"crn": "crn:[...]",
"default_network_acl": {
"crn": "crn:[...]",
"href": "https://us-south.iaas.cloud.ibm.com/v1/network_acls/dcfd9b64-9119-48ea-8697-23f9f5fb6bd6",
"id": "dcfd9b64-9119-48ea-8697-23f9f5fb6bd6",
"name": "my-network-acl"
},
"default_routing_table": {
"href": "https://us-south.iaas.cloud.ibm.com/v1/vpcs/2a842e76-1302-45ad-8b1f-cc7eb0f3868b/routing_tables/f4e65793-1b51-4548-b0c5-769e18d64775",
"id": "f4e65793-1b51-4548-b0c5-769e18d64775",
"name": "my-routing-table",
"resource_type": "routing_table"
},
"default_security_group": {
"crn": "crn:[...]",
"href": "https://us-south.iaas.cloud.ibm.com/v1/security_groups/95770f87-81f3-4164-8f6d-9f54a3f3a459",
"id": "95770f87-81f3-4164-8f6d-9f54a3f3a459",
"name": "my-security-group"
},
"href": "https://us-south.iaas.cloud.ibm.com/v1/vpcs/f64efe74-a5a2-45c7-b37d-5071d2dd6339",
"id": "2a842e76-1302-45ad-8b1f-cc7eb0f3868b",
"name": "my-vpc-2",
"resource_group": {
"href": "https://resource-controller.cloud.ibm.com/v2/resource_groups/4bbce614c13444cd8fc5e7e878ef8e21",
"id": "4bbce614c13444cd8fc5e7e878ef8e21",
"name": "Default"
},
"resource_type": "vpc",
"status": "available"
}
使用 Terraform 将 VPC 启用为 DNS 中心
您可以使用 Terraform 来启用 VPC 作为 DNS 中心。
要使用 Terraform,请下载 Terraform CLI 并配置 IBM Cloud 提供者插件。 有关更多信息,请参阅 Terraform 入门。
VPC 基础架构服务使用特定于区域的端点,缺省情况下以 us-south
为目标。 如果在另一个区域中创建了 VPC,请确保将 provider.tf
文件的提供程序块中的相应区域作为目标。
以下示例详细信息以缺省 us-south
以外的区域为目标:
provider "ibm" {
region = "eu-de"
}
要启用 VPC 作为 DNS 中心:
resource "ibm_is_vpc" "example" {
name = "example-vpc"
dns {
enable_hub = true
resolver {
manual_servers {
type = "manual"
address = "192.168.3.4"
}
}
}
}
后续步骤
- 为中心 VPC 中的多租户服务创建 VPE 网关,并为每个端点网关启用 DNS 共享。
- 创建 DNS 解析绑定 以允许 DNS 共享 VPC 与 DNS 中心 VPC 之间的 VPE 网关 DNS 记录。
- 如果您具有中心 VPC 和 DNS 共享 VPC 的不同帐户,那么中心 VPC 管理员必须 创建服务到服务(s2s)授权策略 以授予对 DNS 共享 VPC 帐户的“读”访问权。
- 确保在 DNS 共享 VPC 上的冗余或冲突 VPE 上禁用 DNS 解析绑定。 缺省情况下,在 VPE 上启用 DNS 解析绑定开关。