There are cases where you may want to have services outside of DC/OS that use DNS records inside of the DC/OS cluster. However, the .mesos
domain name that DC/OS uses to expose records does not support this. To enable this capability, you can put a BIND server in front of your cluster.
Each DC/OS cluster has a unique cryptographic identifier. The zbase32
encoded version of the identifier can be found in the UI under Cluster > Overview.
In the following example, the cryptographic cluster ID yor6tqhiag39y6cjkdd4w9uzo45qhku6ra8hl7hpr6d9ukjaz3jo
is used.
-
Install a BIND server in front of your cluster.
-
Create a forwarding entry for your DC/OS master that resembles this.
zone "yor6tqhiag39y6cjkdd4w9uzo45qhku6ra8hl7hpr6d9ukjaz3jo.dcos.directory" { type forward; forward only; forwarders { 10.0.4.173; }; // <Master-IP-1;Master-IP-2;Master-IP-3> };
-
Replace the master IP (
<Master-IP>
) with a semicolon-separated list of your own master IPs. -
Replace the example cryptographic cluster ID with your own.
Making a zone
Now you can create the zone that you would like to alias to this. You can also skip this step and use an existing zone.
-
Create a zone entry in the
named.conf
file. For this example,contoso.com
is used:zone "contoso.com" { type master; file "/etc/bind/db.contoso.com"; };
-
Populate the zone file:
$TTL 604800 @ IN SOA localhost. root.localhost. ( 1 ; Serial 1 ; Refresh 1 ; Retry 1 ; Expire 1 ) ; Negative Cache TTL ; @ IN NS localhost. @ IN DNAME mesos.yor6tqhiag39y6cjkdd4w9uzo45qhku6ra8hl7hpr6d9ukjaz3jo.dcos.directory.
Using an existing zone
-
To use an existing zone, add a DNAME record:
@ IN DNAME mesos.yor6tqhiag39y6cjkdd4w9uzo45qhku6ra8hl7hpr6d9ukjaz3jo.dcos.directory.
The
@
aliases the top level of the zone, for examplecontoso.com
. -
To alias a high level domain, specify that value in the DNAME record. In this example,
foo
aliasesfoo.contoso.com
:foo IN DNAME mesos.yor6tqhiag39y6cjkdd4w9uzo45qhku6ra8hl7hpr6d9ukjaz3jo.dcos.directory.