在GCP中指向和使用子域

时间:2019-02-27 22:13:24

标签: amazon-web-services google-cloud-platform google-compute-engine

我在AWS的Route 53中设置了主域www.example.com

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

这可能吗?

1 个答案:

答案 0 :(得分:3)

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

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

总体而言,这将采取以下步骤(1)在GCP中创建gcp.example.com区域(2)获取gcp.example.com的NS记录(3)将NS委派给gcp.example.com到Google Cloud NS,然后(4)在GCP Cloud DNS中创建资源级别的记录(例如,对于VM或appengine应用)。

(1)在GCP中创建区域

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

$ gcloud dns managed-zones create gcp-example --description="GCP Example Zone" \
      --dns-name="gcp.example.com"

(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.

(3)在AWS中添加委托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."}]
}}]
}

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"
    }
}

(4)在GCP Cloud DNS中,在gcp.example.com

下创建所有gcp资源记录

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