When you create a VM instance, Google Cloud creates an internal DNS name from the instance name. Unless you specify a custom hostname, Google Cloud uses the automatically created internal DNS name as the hostname it provides to the VM.
You can create a VM with a custom hostname by specifying any fully-qualified DNS name. Custom hostnames are useful to maintain conventions or to support requirements for applications that expect a particular hostname.
Limitations
You must manually configure the DNS record for your custom hostname. Custom hostnames are not resolved by the automatically created records provided by Compute Engine internal DNS. You can use any of the following to host the DNS record for the custom hostname:
any other public DNS name server
You cannot change a custom hostname after you have created the VM.
Even when you specify a custom hostname, Google Cloud still creates the Compute Engine internal DNS name. You can still contact your VM by using this automatically created DNS record.
Requirements
The hostname must conform to
RFC 1035 requirements for valid
hostnames. To meet this requirement, hostnames must contain a series of labels
matching the regular expression [a-z]([-a-z0-9]*[a-z0-9])?
, and each label is
concatenated with a dot. Each label can be 1-63 characters long, and the entire
sequence must not exceed 253 characters.
Before you begin
- If you want to use the command-line examples in this guide:
- Install or update to the latest version of the gcloud command-line tool.
- Set a default region and zone.
- If you want to use the API examples in this guide, set up API access.
Create a VM with a custom hostname
Console
- Go to the Create instance page
- Expand the Management, security, disks, networking, sole tenancy section.
- Under Hostname in the Networking tab, set the custom hostname.
- Continue with the rest of the instance creation process.
gcloud
Follow the same instructions to
create an instance from an image
or a
snapshot,
add the --hostname=[HOST_NAME]
flag and use the
gcloud compute instances create
command:
gcloud compute instances create [INSTANCE_NAME] \
--hostname=[HOST_NAME]
where:
[INSTANCE_NAME]
is the name of the instance.[HOST_NAME]
is the fully qualified domain hostname that you want to assign.
For example, to create an instance called myinstance
with the custom
hostname test.example.com
. You can run the following command:
gcloud compute instances create myinstance \
--hostname=test.example.com
API
Follow the API instructions to
create an instance from an image
or a
snapshot,
and specify the hostname
field in the request body.
POST https://compute.googleapis.com/compute/v1/projects/[PROJECT_ID]/zones/[ZONE]/instances
{
"name": "[INSTANCE_NAME]",
"hostname": "[HOST_NAME]",
...
}
where:
[INSTANCE_NAME]
is the name of the instance.[HOST_NAME]
is the fully qualified domain hostname that you want to assign.[ZONE]
is the zone where you want to create the instance.
Verifying the custom hostname
For Linux VM instances, you can verify the custom hostname by running the
hostname -f
command on the VM instance.
You can also verify the custom hostname by using the Google Cloud Console or the
gcloud
command-line tool.
Console
- To view the custom hostname for your instance, go to the VM instances page.
- Click the instance name to open the VM instance details page.
- Review the Hostname section.
gcloud
To view the custom hostname for your instance
using gcloud compute
, use the instances describe
sub-command with a --format
flag to filter the output.
gcloud compute instances describe [INSTANCE_NAME] \
--format='get(hostname)'
where [INSTANCE_NAME]
is the name of the instance.
For example, to view the custom hostname for an instance named
myinstance
, run the following command.
gcloud compute instances describe myinstance --format='get(hostname)'