在 GCP 中指向并使用子域

Joh*_*ike 11 amazon-web-services google-compute-engine google-cloud-platform

www.example.com在 AWS 上的 Route 53 中有一个主域设置。

我想指向subdomain1.example.comGoogle Cloud,特别是在 Google Compute Engine 中运行的实例组。

这可能吗?

Ant*_*dis 14

是的,这是一个很好的设计实践,称为名称服务委托。最好的方法是为 GCP 委派整个子域,因此让我们使用域 example.com 和 gcp.example.com 作为域和子域。

这样 Google 将为您管理 DNS,而不是您手动更新 route53 中的 A 和 CNAME 记录。

总体而言,这会采取这些步骤(1)创建gcp.example.com的GCP(2)区获得的NS记录gcp.example.com(3)委托NS进行gcp.example.com到谷歌云NS,然后(4)创建资源级别的记录(例如用于VM或AppEngine上的应用) 在 GCP Cloud DNS 中。

(1) 在 GCP 中创建 Zone

这可以在控制台Network Services -> Cloud DNS或云外壳下完成。我喜欢贝壳。

$ gcloud dns managed-zones create gcp-example --description="GCP Example Zone" \
      --dns-name="gcp.example.com"
Run Code Online (Sandbox Code Playgroud)

(2) 获取新区的 NS 记录

下面是一个例子——复制特定于你的 NS 的那些

gcloud dns managed-zones describe gcp-example |grep -A5 nameServers
nameServers:
- ns-cloud-d1.googledomains.com.
- ns-cloud-d2.googledomains.com.
- ns-cloud-d3.googledomains.com.
- ns-cloud-d4.googledomains.com.

Run Code Online (Sandbox Code Playgroud)

(3)在AWS中添加delegate NS记录

创建 update.json(确保值记录正确):

{
            "Comment": "CREATE/DELETE/UPSERT a record ",
            "Changes": [{
            "Action": "CREATE",
                        "ResourceRecordSet": {
                                    "Name": "gcp.example.com",
                                    "Type": "NS",
                                    "TTL": 300,
                                 "ResourceRecords": [ {"Value" : "ns-cloud-d1.googledomains.com."}, {"Value": "ns-cloud-d2.googledomains.com."},
                                     {"Value" : "ns-cloud-d3.googledomains.com."}, {"Value": "ns-cloud-d4.googledomains.com."}]
}}]
}

Run Code Online (Sandbox Code Playgroud)
HOSTED_ZONE_ID=XXXXXX
aws route53 change-resource-record-sets --hosted-zone-id=${HOSTED_ZONE_ID} --change-batch=file://./update.json
{
    "ChangeInfo": {
        "Status": "PENDING",
        "Comment": "CREATE/DELETE/UPSERT a record ",
        "SubmittedAt": "2019-02-27T23:43:35.327Z",
        "Id": "/change/XXXXXX"
    }
}

Run Code Online (Sandbox Code Playgroud)

(4) 在 GCP Cloud DNS 中,在下面创建所有 gcp 资源记录 gcp.example.com

此时,您可以在 GCP Cloud DNS 中管理所有 GCP dns。继续创建vm1.gcp.example.comappengine1.gcp.example.com