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, and change the prefilled Interval from 30 to 15 seconds (matching the API and Terraform tabs).
  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.