创建 DNS 记录

本文档将引导您创建 DNS 记录,以管理流量如何到达 Google Distributed Cloud (GDC) 空气隔离环境中的应用和服务。借助 DNS 记录,您可以将域名映射到特定资源,以便向用户授予应用访问权限、管理服务别名、验证所有权、启用反向查找或路由电子邮件。本文档的目标受众群体是负责管理项目内 DNS 记录的平台管理员和应用运维人员。

创建 DNS 区域后,您可以创建不同类型的 DNS 记录,以将您的域名和子网域指向您的服务。您可以在 GDC 中创建以下 DNS 记录类型:

  • 地址 (A) 记录:将域名映射到一个或多个 IPv4 地址。此记录是将网域指向服务器的最基本记录类型。
  • 规范名称 (CNAME) 记录:用于将一个域名创建为另一个规范(权威)域名的别名。此记录类型有助于重定向流量或简化 DNS 管理。
  • 文本 (TXT) 记录:可让您将任意文本与域名相关联。这些记录通常用于验证目的,或用于存储信息,例如用于电子邮件身份验证的发件人政策框架 (SPF) 记录。
  • 指针 (PTR) 记录:将 IP 地址映射回域名,也称为 DNS 反向查找。此记录通常用于电子邮件服务器声誉和日志分析。
  • 邮件交换 (MX) 记录:用于指定负责接受网域电子邮件的邮件服务器。这对于设置电子邮件服务至关重要。

GDC 不支持为网域设置域名服务器 (NS)起始授权 (SOA) 记录。

准备工作

如需在 GDC 中创建 DNS 记录,您必须具备以下条件:

  • 现有的公开或专用 DNS 区域。如需了解详情,请参阅创建 DNS 区域
  • 必要的身份和访问权限角色。如需管理项目的 DNS 记录,请让您的 Project IAM Admin 为您授予 Managed DNS Project Admin (managed-dns-project-admin) 角色。
  • 如需使用 gdcloud CLI,请确保您已安装该 CLI。如需了解详情,请参阅安装 gdcloud CLI
  • 如果您使用的是 kubectl,则为全局 API 服务器的 kubeconfig 文件。 如果您尚未生成此文件,请参阅登录。 如需了解详情,请参阅全球和可用区级 API 服务器

创建 DNS 记录

您可以使用 gdcloud CLI 或 Kubernetes API 创建 DNS 记录。

gdcloud

如需创建 DNS 记录,请使用 gdcloud dns record-sets create 命令:

gdcloud dns record-sets create RESOURCE_RECORD_NAME \
    --fqdn=RESOURCE_RECORD_FQDN \
    --type=RR_TYPE \
    --rrdatas=RECORD_DATA \
    --dns-zone=DNS_ZONE_NAME \
    [--ttl=TIME_TO_LIVE] \
    [--project=PROJECT_NAMESPACE] \
    [--async]

替换以下内容:

  • RESOURCE_RECORD_NAME:您为命名空间内的相应 ResourceRecordSet 资源选择的唯一名称,例如 cname.system.example.com
  • RESOURCE_RECORD_FQDN:记录的完全限定域名 (FQDN),例如 another.ai.system.example.com
  • RR_TYPE:相应 ResourceRecordSet 的类型。选项包括:ACNAMETXTPTRMX
  • RECORD_DATAResourceRecordSet 中所有资源记录的数据。每个条目都代表一条单独的资源记录。 如有多个条目,请使用逗号分隔列表。
  • DNS_ZONE_NAME:要添加此记录的 ManagedDNSZone 自定义资源的名称。
  • TIME_TO_LIVE:相应记录的存留时间 (TTL),以秒为单位。此字段是可选字段。默认值为 300
  • PROJECT_NAMESPACE:项目的命名空间。 如果您已使用 gdcloud config set project 全局设置默认项目,则此标志是可选的。
  • --async:如果您希望命令立即返回结果,而不是等待操作完成,请指定此标志。您可以使用 describe 来检查操作的状态。

以下是基于记录类型的 --rrdatas 标志的一些示例:

  • A 记录:--rrdatas=10.6.7.8
  • CNAME 记录:--rrdatas=ai.system.example.com
  • TXT 记录:--rrdatas="Example text"
  • PTR 记录:--rrdatas=8.7.6.10.in-addr.arpa.
  • MX 记录:--rrdatas="10 mail.example.com."

API

  • 创建并应用 ResourceRecordSet 资源,以在现有代管 DNS 区域中创建 DNS 记录:
kubectl --kubeconfig GLOBAL_API_SERVER apply -f - <<EOF
apiVersion: networking.global.gdc.goog/v1
kind: ResourceRecordSet
metadata:
  name: RESOURCE_RECORD_NAME
  namespace: PROJECT_NAMESPACE
spec:
  name:  RESOURCE_RECORD_FQDN
  ttlSeconds: TIME_TO_LIVE
  type: RR_TYPE
  rrData:
  - RECORD_DATA
  dnsZone: DNS_ZONE_NAME
EOF

替换以下内容:

  • GLOBAL_API_SERVER:全局 API 服务器的 kubeconfig 文件的路径。如果您尚未生成此文件,请参阅登录
  • PROJECT_NAMESPACE:项目的命名空间。
  • RESOURCE_RECORD_NAME:您为命名空间内的相应 ResourceRecordSet 资源选择的唯一名称,例如 cname.system.example.com
  • RESOURCE_RECORD_FQDN:记录的完全限定域名 (FQDN),例如 another.ai.system.example.com
  • TIME_TO_LIVE:相应记录的存留时间 (TTL),以秒为单位。此字段是可选字段。默认值为 300
  • RR_TYPE:相应 ResourceRecordSet 的类型。选项包括:ACNAMETXTPTRMX
  • RECORD_DATA:RRset 中所有资源记录的数据。每个条目都代表一条单独的资源记录。下面是一些示例,具体取决于记录类型:

    • A 记录:此 A 记录指向的 IP 地址:

      type: A
      rrData:
      - 10.6.7.8
      
    • CNAME 记录:相应 CNAME 记录的目标域名:

      type: CNAME
      rrData:
      - "ai.system.example.com"
      
    • TXT 记录:相应 TXT 记录的文本数据:

      type: TXT
      rrData:
      - "Example text"
      
    • PTR 记录:此 PTR 记录指向的域名,用于 IP 地址的 DNS 反向查找:

      type: PTR
      rrData:
      - "8.7.6.10.in-addr.arpa."
      
    • MX 记录:邮件服务器的优先级和主机名:

      type: MX
      rrData:
      - "10 mail.example.com."
      
  • DNS_ZONE_NAME:要添加此记录的 ManagedDNSZone 自定义资源的名称。如需了解详情,请参阅创建 DNS 区域