VPC ネットワーク内の Cloudfunctions からの DNS 解決

VPC ネットワーク内の Cloudfunctions からの DNS 解決

次のように 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 が必要です。

内部 DNS 名と共有 VPC

関連情報