Skip to content

Quickstart

This quickstart creates a zone and a load-balanced, health-checked A record. DTM can be driven three ways and the result is identical; pick the path that fits how you work.

You will need a deployed cluster and its API endpoint (for example https://dtm.internal:8443). See Deploy if you have not deployed yet, including how to retrieve the initial admin password. For evaluation, a single node is the smallest footprint and is plenty for this quickstart:

The single-node PoC footprint, all in one resource group: DNS clients in this VNet and peered VNets query DNS on port 53 into a private DTM subnet with no public IP, holding dtm-node-01 (stable private IP 10.20.1.4, Standard_D2s_v5), its Premium SSD data disk (64 GiB P6, host caching none), and an NSG with 53 open to clients and the admin ports 8443 and 8080 restricted. The node's system-assigned managed identity writes and reads the deployment's Key Vault secrets, since the sole node is the primary. A note carries the PoC trade-off: a single node has no failover; two or more nodes is the recommended baseline. The single-node PoC footprint, all in one resource group: DNS clients in this VNet and peered VNets query DNS on port 53 into a private DTM subnet with no public IP, holding dtm-node-01 (stable private IP 10.20.1.4, Standard_D2s_v5), its Premium SSD data disk (64 GiB P6, host caching none), and an NSG with 53 open to clients and the admin ports 8443 and 8080 restricted. The node's system-assigned managed identity writes and reads the deployment's Key Vault secrets, since the sole node is the primary. A note carries the PoC trade-off: a single node has no failover; two or more nodes is the recommended baseline.
  • Web UI - point-and-click in the browser. No token needed; just log in. Skip straight to Create a zone.
  • REST API - scriptable HTTP. Needs an API token (next step).
  • Terraform - declarative and version-controlled. Needs an API token (next step), plus the provider setup.

Every step below has a tab for each path, so you only need to follow your own.

1. Get a token (REST API and Terraform only)

Section titled “1. Get a token (REST API and Terraform only)”

The REST API and Terraform provider authenticate with a JWT bearer token. Logging in sets the token as an HttpOnly dtm_token cookie (via Set-Cookie); capture it from the response headers and pass it as a bearer token on subsequent calls:

Terminal window
export DTM_ENDPOINT="https://dtm.internal:8443"
export DTM_TOKEN=$(curl -sk -X POST "$DTM_ENDPOINT/api/v1/auth/login" \
-H "Content-Type: application/json" \
-d '{"username": "admin", "password": "<your-password>"}' \
-D - -o /dev/null | grep -i '^set-cookie: dtm_token=' \
| sed -E 's/.*dtm_token=([^;]+).*/\1/')

A zone is a DNS namespace DTM answers authoritatively (for example example.internal.). Note the trailing dot.

  1. Go to Zones → Create Zone.
  2. Enter the zone name example.internal. and a default TTL (for example 300).
  3. Save. The zone is created active and starts serving immediately; it reaches the rest of the cluster within moments.

3. Add a load-balanced, health-checked record

Section titled “3. Add a load-balanced, health-checked record”

This creates web.example.internal pointing at two backends, round-robin between the healthy ones, with an HTTP health check.

  1. Open the zone and choose Add Record.
  2. Set Name web, Type A, TTL 60.
  3. Add two values: 10.0.1.10 and 10.0.1.11.
  4. Under Load balancing, choose round-robin.
  5. Under Health check, choose HTTP, port 80, path /healthz.
  6. Save.

Query the record. DTM returns only healthy backends, one per query under round-robin:

Terminal window
dig @dtm.internal web.example.internal +short

If a backend fails its health check, it is dropped from the answer once it crosses the failure threshold (under a minute with the 15 second interval above) and traffic shifts to the remaining healthy values.