创建、修改和删除区域

本页面介绍如何创建、更新、列出和删除 Cloud DNS 代管可用区。在使用本页面之前,请先熟悉 Cloud DNS 概览关键术语

准备工作

Cloud DNS API 会要求您创建 Cloud DNS 项目并启用 Cloud DNS API。

如果您要创建使用 REST API 的应用,则还必须创建一个 OAuth 2.0 客户端 ID。

  1. 如果您还没有 Google 账号,请注册一个账号
  2. 在 Google Cloud 控制台中启用 Cloud DNS API。您可以选择现有的 Compute Engine 或 App Engine 项目,也可以创建一个新项目。
  3. 如果您需要向 REST API 发出请求,则需要创建 OAuth 2.0 ID。请参阅设置 OAuth 2.0
  4. 在项目中,请记下后续步骤中需要输入的信息:
    • 客户端 ID (xxxxxx.apps.googleusercontent.com)。
    • 您要使用的项目 ID。您可以在 Google Cloud 控制台的概览页面顶部找到此 ID。您也可以要求用户提供其要在您的应用中使用的项目名称。

如果您之前未运行过 Google Cloud CLI,则必须运行以下命令来指定项目名称并进行 Google Cloud Console 身份验证:

gcloud auth login

如果您要在另一个项目中的 Google Cloud 资源上运行 gcloud 命令,请为此命令和本页中的其他 gcloud 命令指定 --project 选项。

创建代管可用区

您创建的每个代管可用区都与一个 Google Cloud 项目相关联。以下几个部分介绍如何创建 Cloud DNS 支持的托管地区类型。

创建公共地区

如需创建新的代管可用区,请完成以下步骤。

控制台

  1. 在 Google Cloud Console 中,转到创建 DNS 可用区页面。

    转到“创建 DNS 可用区”

  2. 对于可用区类型,请选择公开

  3. 输入可用区名称,例如 my-new-zone

  4. 使用一个您拥有的域名输入该地区的 DNS 名称后缀。该地区中的所有记录都具有此后缀,例如:example.com

  5. DNSSEC 下,选择 OffOnTransfer。如需了解详情,请参阅为现有代管可用区启用 DNSSEC

  6. 点击创建。随即系统将显示可用区详情页面。

gcloud

运行 dns managed-zones create 命令:

gcloud dns managed-zones create NAME \
    --description=DESCRIPTION \
    --dns-name=DNS_SUFFIX \
    --labels=LABELS \
    --visibility=public

请替换以下内容:

  • NAME:您的可用区的名称
  • DESCRIPTION:您的可用区的说明
  • DNS_SUFFIX:您的可用区的 DNS 后缀,例如 example.com
  • LABELS:(可选)以英文逗号分隔的键值对列表,例如 dept=marketingproject=project1;如需了解详情,请参阅 SDK 文档

Terraform

resource "google_dns_managed_zone" "example_zone" {
  name        = "example-zone"
  dns_name    = "example-${random_id.rnd.hex}.com."
  description = "Example DNS zone"
  labels = {
    name = "value"
  }
}

resource "random_id" "rnd" {
  byte_length = 4
}

API

使用 managedZones.create 方法发送 POST 请求:

POST https://dns.googleapis.com/dns/v1/projects/PROJECT_ID/managedZones
{
  "name": "NAME",
  "description": "DESCRIPTION",
  "dnsName": "DNS_NAME",
  "visibility": "public"
}

请替换以下内容:

  • PROJECT_ID:创建代管可用区的项目的 ID
  • NAME:您的可用区的名称
  • DESCRIPTION:您的可用区的说明
  • DNS_NAME:您的可用区的 DNS 后缀,例如 example.com

创建专用可用区

如需使用 Cloud DNS 管理的专用 DNS 记录创建新的代管专用可用区,请完成以下步骤。如需了解详情,请参阅 Cloud DNS 专用可用区的最佳做法

控制台

  1. 在 Google Cloud Console 中,转到创建 DNS 可用区页面。

    转到“创建 DNS 可用区”

  2. 对于可用区类型,请选择专用

  3. 输入可用区名称,例如 my-new-zone

  4. 为专用地区输入 DNS 名称后缀。该地区中的所有记录都具有此后缀,例如:example.private

  5. 可选:添加说明。

  6. 选项下,选择默认(专用)

  7. 选择专用可用区必须可见的 Virtual Private Cloud (VPC) 网络。只有您选择的 VPC 网络才有权查询该地区中的记录。

  8. 点击创建

gcloud

运行 dns managed-zones create 命令:

gcloud dns managed-zones create NAME \
    --description=DESCRIPTION \
    --dns-name=DNS_SUFFIX \
    --networks=VPC_NETWORK_LIST \
    --labels=LABELS \
    --visibility=private

请替换以下内容:

  • NAME:您的可用区的名称
  • DESCRIPTION:您的可用区的说明
  • DNS_SUFFIX:您的可用区的 DNS 后缀,例如 example.private
  • VPC_NETWORK_LIST:有权查询地区的 VPC 网络的逗号分隔列表。
  • LABELS:(可选)以英文逗号分隔的键值对列表,例如 dept=marketingproject=project1;如需了解详情,请参阅 SDK 文档

Terraform

resource "google_dns_managed_zone" "private_zone" {
  name        = "private-zone"
  dns_name    = "private.example.com."
  description = "Example private DNS zone"
  labels = {
    foo = "bar"
  }

  visibility = "private"

  private_visibility_config {
    networks {
      network_url = google_compute_network.network_1.id
    }
    networks {
      network_url = google_compute_network.network_2.id
    }
  }
}

resource "google_compute_network" "network_1" {
  name                    = "network-1"
  auto_create_subnetworks = false
}

resource "google_compute_network" "network_2" {
  name                    = "network-2"
  auto_create_subnetworks = false
}

API

使用 managedZones.create 方法发送 POST 请求:

POST https://dns.googleapis.com/dns/v1/projects/PROJECT_ID/managedZones
{

"name": "NAME",
"description": "DESCRIPTION",
"dnsName": "DNS_NAME",
"visibility": "private"
"privateVisibilityConfig": {
    "kind": "dns#managedZonePrivateVisibilityConfig",
    "networks": [{
            "kind": "dns#managedZonePrivateVisibilityConfigNetwork",
            "networkUrl": VPC_NETWORK_1
        },
        {
            "kind": "dns#managedZonePrivateVisibilityConfigNetwork",
            "networkUrl": VPC_NETWORK_2
        },
        ....
    ]
}

请替换以下内容:

  • PROJECT_ID:创建代管可用区的项目的 ID
  • NAME:您的可用区的名称
  • DESCRIPTION:您的可用区的说明
  • DNS_NAME:您的可用区的 DNS 后缀,例如 example.private
  • VPC_NETWORK_1VPC_NETWORK_2:同一项目中可以查询此可用区中记录的 VPC 网络的网址。您可以按照指示添加多个 VPC 网络。要确定 VPC 网络的网址,请使用以下 gcloud 命令,并将 VPC_NETWORK_NAME 替换为网络的名称:

    gcloud compute networks describe VPC_NETWORK_NAME \
     --format="get(selfLink)"
    

创建具有特定 IAM 权限的可用区

借助针对单个资源代管式可用区的 Identity and Access Management (IAM) 权限,您可以为同一项目下的不同代管式可用区设置特定的读取、写入或管理员权限。

如需了解如何创建具有特定 Identity and Access Management (IAM) 权限的可用区,请参阅创建具有特定 IAM 权限的可用区

创建 Service Directory DNS 可用区

您可以创建一个 Service Directory 地区,以允许基于 Google Cloud 的服务通过 DNS 查询您的 Service Directory 命名空间。

如需详细了解如何创建 Service Directory DNS 可用区,请参阅配置 Service Directory DNS 可用区

如需了解如何使用 DNS 查询 Service Directory,请参阅使用 DNS 查询

Terraform

resource "google_dns_managed_zone" "private_zone" {
  name        = "private-zone"
  dns_name    = "private.example.com."
  description = "Example private DNS zone"
  labels = {
    foo = "bar"
  }

  visibility = "private"

  private_visibility_config {
    networks {
      network_url = google_compute_network.network_1.id
    }
    networks {
      network_url = google_compute_network.network_2.id
    }
  }
}

resource "google_compute_network" "network_1" {
  name                    = "network-1"
  auto_create_subnetworks = false
}

resource "google_compute_network" "network_2" {
  name                    = "network-2"
  auto_create_subnetworks = false
}

创建托管反向查找专用可用区

托管反向查找地区是具有特殊属性的专用地区,它指示 Cloud DNS 对 Compute Engine DNS 数据执行 PTR 查找。您必须为 Cloud DNS 设置代管反向查找可用区才能正确解析虚拟机实例的非 RFC 1918 PTR 记录。

如需了解如何创建新的代管式反向查找专用可用区,请参阅创建代管式反向查找可用区

创建转发区域

转发可用区可让您为特定专用可用区定位域名服务器。如需了解如何创建新的代管式专用转发可用区,请参阅创建转发可用区

创建对等互连可用区

借助 DNS 对等互连功能,您可以将一个地区的命名空间内记录的请求发送至另一个 VPC 网络。如需了解如何创建对等互连可用区,请参阅创建对等互连可用区

创建跨项目绑定可用区

创建可绑定到同一组织中的另一个项目拥有的网络的代管专用可用区。如需了解如何创建跨项目绑定可用区,请参阅跨项目绑定可用区

更新代管可用区

通过 Cloud DNS,您可以修改代管公开或 代管专用可用区的某些特性。

更新公共可用区

您可以更改公开可用区的说明或 DNSSEC 配置

控制台

  1. 在 Google Cloud 控制台中,转到 Cloud DNS 可用区页面。

    转到“Cloud DNS 可用区”

  2. 点击要更新的公开可用区。

  3. 点击 修改

  4. 如需更改 DNSSEC 设置,请在 DNSSEC 下,选择 OffOnTransfer。如需了解详情,请参阅为现有代管可用区启用 DNSSEC

  5. 可选:更新说明。

  6. 点击保存

gcloud

运行 dns managed-zones update 命令:

gcloud dns managed-zones update NAME \
    --description=DESCRIPTION \
    --dnssec-state=STATE

请替换以下内容:

  • NAME:您的可用区的名称
  • DESCRIPTION:您的可用区的说明
  • STATE:DNSSEC 设置,例如 OffOnTransfer

如需修改可以看见专用地区的 VPC 网络,请执行以下操作:

控制台

  1. 在 Google Cloud 控制台中,转到 Cloud DNS 可用区页面。

    转到“Cloud DNS 可用区”

  2. 点击要更新的专用可用区。

  3. 点击 修改

  4. 选择专用可用区必须在其中公开的 VPC 网络。只有您选择的 VPC 网络才有权查询该地区中的记录。

  5. 点击保存

gcloud

运行 dns managed-zones update 命令:

gcloud dns managed-zones update NAME \
    --description=DESCRIPTION \
    --networks=VPC_NETWORK_LIST

请替换以下内容:

  • NAME:您的可用区的名称
  • DESCRIPTION:您的可用区的说明
  • VPC_NETWORK_LIST:有权查询地区的 VPC 网络的逗号分隔列表。

更新标签

如需在代管可用区中添加新标签、更改现有标签、移除所选标签或清除所有标签,请完成以下步骤。

gcloud

运行 dns managed-zones update 命令:

gcloud dns managed-zones update NAME \
    --update-labels=LABELS
gcloud dns managed-zones update NAME \
    --remove-labels=LABELS
gcloud dns managed-zones update NAME \
    --clear-labels

请替换以下内容:

  • NAME:您的可用区的名称
  • LABELS:(可选)以英文逗号分隔的键值对列表,例如 dept=marketingproject=project1;如需了解详情,请参阅 SDK 文档

列出和描述代管可用区

以下部分介绍了如何列出或描述代管可用区。

列出代管可用区

如需列出项目中的所有代管可用区,请完成以下步骤。

控制台

  1. 在 Google Cloud 控制台中,转到 Cloud DNS 可用区页面。

    转到“Cloud DNS 可用区”

  2. 在右侧窗格中查看代管可用区。

gcloud

运行 dns managed-zones list 命令:

gcloud dns managed-zones list

如需列出所有托管地区,请按如下所示修改命令:

gcloud dns managed-zones list 
--filter="visibility=public"
如需列出所有托管专用地区,请按如下所示修改命令:

gcloud dns managed-zones list \
   --filter="visibility=private"

描述代管可用区

如需查看代管可用区的特性,请完成以下步骤。

控制台

  1. 在 Google Cloud 控制台中,转到 Cloud DNS 可用区页面。

    转到“Cloud DNS 可用区”

  2. 点击要检查的地区。

gcloud

运行 dns managed-zones describe 命令:

gcloud dns managed-zones describe NAME

NAME 替换为您的可用区名称。

删除代管可用区

删除某个网域后,其 DNS 记录会被永久移除,无法恢复。为防止 DNS 记录丢失,请在删除之前导出区域数据。如需了解如何导出区域数据,请参阅导入和导出资源记录集

如需删除代管可用区,请完成以下步骤。

控制台

  1. 在 Google Cloud 控制台中,转到 Cloud DNS 可用区页面。

    转到“Cloud DNS 可用区”

  2. 点击要删除的托管地区。

  3. 点击删除区域

gcloud

  1. 移除该地区中除 SOANS 记录之外的所有记录。 如需了解详情,请参阅移除记录。您可以通过将空文件导入记录集来快速清空整个地区。如需了解详情,请参阅导入和导出记录集。 例如:

    touch empty-file
    gcloud dns record-sets import -z NAME \
       --delete-all-existing \
       empty-file
    rm empty-file
    

    NAME 替换为您的可用区名称。

  2. 如需删除新的代管专用可用区,请运行 dns managed-zones delete 命令:

    gcloud dns managed-zones delete NAME
    

    NAME 替换为您的可用区名称。

后续步骤