
Я развертываю Cloudfunction с сетью VPC следующим образом:
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_NAME.ZONE.c.PROJECT_ID.internal
Если указать только VM_NAME, для какой ZONE и PROJECT_ID должен быть разрешен запрос? Этот ответ также определяет, какой внутренний DNS-сервер следует запросить для ответа.
Чтобы избежать этой неоднозначности, Google Cloud DNS требует FQDN.