我正在使用 VPC 网络部署 Cloudfunction,如下所示:
gcloud beta functions deploy my-function
--trigger-http
--region europe-west1
--memory 128MB
--runtime nodejs16
--entry-point entrypoint
--allow-unauthenticated
# needed to access compute instances
# https://console.cloud.google.com/networking/connectors/list
--vpc-connector cloud-function-connector
# vpc connector should be used only to access private network
--egress-settings private-ranges-only
现在,如果我的 Cloudfunction 使用计算资源的 IP 地址,我可以轻松访问它们。但是当我使用它们的主机名时,DNS 无法解析,最终导致:
Error: getaddrinfo ENOTFOUND my-compute-resource
我需要做什么才能将 DNS 用于我的计算实例?
答案1
要通过主机名访问资源,您必须使用完全限定域名 (FQDN)。仅使用主机部分将失败。
Compute Engine VM 具有以下 FQDN 格式:
VM_NAME.ZONE.c.PROJECT_ID.internal
如果仅指定 VM_NAME,请求应解析为哪个 ZONE 和 PROJECT_ID?该答案还决定应查询哪个内部 DNS 服务器以获取答案。
为了防止这种歧义,Google Cloud DNS 需要 FQDN。