Разрешение DNS из облачных функций в сети VPC
Я развертываю облачную функцию с сетью 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
Теперь, если моя облачная функция использует 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 требует полного доменного имени.