
Ich stelle eine Cloudfunktion mit VPC-Netzwerk wie folgt bereit:
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
Wenn meine Cloudfunktion nun die IP-Adresse von Rechenressourcen verwendet, kann ich problemlos darauf zugreifen. Wenn ich jedoch ihre Hostnamen verwende, werden die DNS nicht aufgelöst, was zu folgendem Ergebnis führt:
Error: getaddrinfo ENOTFOUND my-compute-resource
Was muss ich tun, um DNS für meine Compute-Instanzen verwenden zu können?
Antwort1
Um über einen Hostnamen auf eine Ressource zuzugreifen, müssen Sie den vollqualifizierten Domänennamen (FQDN) verwenden. Die Verwendung nur des Host-Teils schlägt fehl.
Eine Compute Engine-VM hat das folgende FQDN-Format:
VM_NAME.ZONE.c.PROJECT_ID.internal
Wenn Sie nur den VM_NAME angeben, für welche ZONE und PROJECT_ID soll die Anfrage dann aufgelöst werden? Diese Antwort bestimmt auch, welcher interne DNS-Server für die Antwort abgefragt werden soll.
Um diese Mehrdeutigkeit zu vermeiden, erfordert Google Cloud DNS einen FQDN.