Datum provides authoritative DNS management through the dns.networking.miloapis.com service. This allows you to create and manage DNS zones and record sets declaratively using Kubernetes resources.
Datum’s DNS service provides globally distributed authoritative DNS with built-in quota management and project-level isolation.
apiVersion: dns.networking.miloapis.com/v1alpha1kind: DNSZonemetadata: name: example-com namespace: my-projectspec: # DNS zone name dnsName: example.com. # Optional description description: "Main DNS zone for example.com"
apiVersion: dns.networking.miloapis.com/v1alpha1kind: DNSRecordSetmetadata: name: www-example-com namespace: my-projectspec: # Reference to the DNS zone zoneRef: name: example-com # DNS record name (relative to zone) name: www.example.com. # Record type type: A # TTL in seconds ttl: 300 # Record data rrdatas: - "203.0.113.1" - "203.0.113.2"
# List resource grants for your projectkubectl get resourcegrant -n milo-system \ -l consumer-name=my-project# View DNS zone quotakubectl get resourcegrant default-dns-quota-my-project \ -n milo-system -o yaml
For dynamic DNS updates based on workload changes, consider using an operator or controller that watches Instance resources and updates DNSRecordSet resources automatically.
# Edit record data or TTLkubectl edit dnsrecordset www-myapp-com -n my-project# Or use kubectl patchkubectl patch dnsrecordset www-myapp-com -n my-project \ --type merge -p '{"spec":{"ttl":600}}'
kubectl get resourceclaim -n my-projectkubectl describe resourcegrant default-dns-quota-my-project -n milo-system
If quota is exceeded, contact support to request an increase.
Record set not propagating
Verify the record set was created successfully:
kubectl get dnsrecordset -n my-projectkubectl describe dnsrecordset <name> -n my-project
Check for validation errors in the resource status. Common issues:
Invalid DNS name format (must end with a dot)
Invalid record data for the record type
Zone reference pointing to a non-existent zone
Quota claim denied
This means you’ve reached your quota limit. View current usage:
# Count DNS zoneskubectl get dnszone -n my-project --no-headers | wc -l# Count DNS record setskubectl get dnsrecordset -n my-project --no-headers | wc -l
Delete unused resources or request a quota increase.