.\" Generated by Mmark Markdown Processer - mmark.miek.nl .TH "COREDNS-NOMAD" 7 "September 2025" "CoreDNS" "CoreDNS Plugins" .SH "NAME" .PP \fInomad\fP - enables reading zone data from a Nomad cluster. .SH "DESCRIPTION" .PP This plugin serves DNS records for services registered with Nomad. Nomad 1.3+ comes with support for discovering services \[la]https://www.hashicorp.com/en/blog/nomad-service-discovery\[ra] with an in-built service catalogue that is available via the HTTP API. This plugin extends the HTTP API and provides a DNS interface for querying the service catalogue. .PP The query can be looked up with the format \fB\fC[service].[namespace].service.nomad\fR. The plugin currently handles A, AAAA and SRV records. Refer to #Usage Example \[la]#usage-example\[ra] for more details. .SH "EXAMPLE JOB TEMPLATE" .PP .RS .nf job "dns" { type = "service" group "dns" { network { port "dns" { static = 1053 } } task "dns" { driver = "docker" config { image = "coredns/coredns:latest" ports = ["dns"] args = ["\-conf", "/secrets/coredns/Corefile", "\-dns.port", "1053"] } service { name = "hostmaster" provider = "nomad" port = "dns" address\_mode = "driver" } identity { env = true } template { data = <> DiG 9.18.1\-1ubuntu1.2\-Ubuntu <<>> redis.default.service.nomad @127.0.0.1 \-p 1053 ;; global options: +cmd ;; Got answer: ;; \->>HEADER<<\- opcode: QUERY, status: NOERROR, id: 54986 ;; flags: qr aa rd; QUERY: 1, ANSWER: 3, AUTHORITY: 0, ADDITIONAL: 1 ;; WARNING: recursion requested but not available ;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 1232 ; COOKIE: bdc9237f49a1f744 (echoed) ;; QUESTION SECTION: ;redis.default.service.nomad. IN A ;; ANSWER SECTION: redis.default.service.nomad. 10 IN A 192.168.29.76 redis.default.service.nomad. 10 IN A 192.168.29.76 redis.default.service.nomad. 10 IN A 192.168.29.76 ;; Query time: 4 msec ;; SERVER: 127.0.0.1#1053(127.0.0.1) (UDP) ;; WHEN: Thu Jan 05 12:12:25 IST 2023 ;; MSG SIZE rcvd: 165 .fi .RE .SS "SRV RECORD" .PP Since an A record doesn't contain the port number, SRV record can be used to query the port number of a service. .PP .RS .nf dig redis.default.service.nomad @127.0.0.1 \-p 1053 SRV ; <<>> DiG 9.18.1\-1ubuntu1.2\-Ubuntu <<>> redis.default.service.nomad @127.0.0.1 \-p 1053 SRV ;; global options: +cmd ;; Got answer: ;; \->>HEADER<<\- opcode: QUERY, status: NOERROR, id: 49945 ;; flags: qr aa rd; QUERY: 1, ANSWER: 3, AUTHORITY: 0, ADDITIONAL: 4 ;; WARNING: recursion requested but not available ;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 1232 ; COOKIE: 14572535f3ba6648 (echoed) ;; QUESTION SECTION: ;redis.default.service.nomad. IN SRV ;; ANSWER SECTION: redis.default.service.nomad. 8 IN SRV 10 10 25395 redis.default.service.nomad. redis.default.service.nomad. 8 IN SRV 10 10 20888 redis.default.service.nomad. redis.default.service.nomad. 8 IN SRV 10 10 26292 redis.default.service.nomad. ;; ADDITIONAL SECTION: redis.default.service.nomad. 8 IN A 192.168.29.76 redis.default.service.nomad. 8 IN A 192.168.29.76 redis.default.service.nomad. 8 IN A 192.168.29.76 ;; Query time: 0 msec ;; SERVER: 127.0.0.1#1053(127.0.0.1) (UDP) ;; WHEN: Thu Jan 05 12:12:20 IST 2023 ;; MSG SIZE rcvd: 339 .fi .RE .SS "SOA RECORD" .PP .RS .nf $ dig @localhost \-p 1053 1dns.default.service.nomad. ; <<>> DiG 9.18.12\-0ubuntu0.22.04.2\-Ubuntu <<>> @localhost \-p 1053 1dns.default.service.nomad. ; (1 server found) ;; global options: +cmd ;; Got answer: ;; \->>HEADER<<\- opcode: QUERY, status: NXDOMAIN, id: 21012 ;; flags: qr aa rd; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1 ;; WARNING: recursion requested but not available ;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 1232 ; COOKIE: 6d146bb140b4d8ca (echoed) ;; QUESTION SECTION: ;1dns.default.service.nomad. IN A ;; ANSWER SECTION: 1dns.default.service.nomad. 5 IN SOA ns1.1dns.default.service.nomad. ns1.1dns.default.service.nomad. 1 3600 600 604800 3600 ;; Query time: 0 msec ;; SERVER: 127.0.0.1#1053(localhost) (UDP) ;; WHEN: Wed Aug 23 21:14:41 EEST 2023 ;; MSG SIZE rcvd: 189 .fi .RE