Setup DNS for Kubernetes
c2d-rproxy
so we can for example resolve c2platform.org
.Categories:
Dnsmasq is used to create a DNS server on c2d-rproxy
. See the node configuration in Vagrantfile
which has the play plays/mw/dnsmasq.yml
. DNS is a secondary function of c2d-rproxy
see Setup SOCKS proxy for the two other functions. Typically, this project uses /etc/hosts
file to resolve “domain names” see group_vars/all/hosts.yml
, except for Kubernetes. For Kubernetes this Dnsmasq-based DNS server is employed. See the GitLab project c2platform/ansible
for more information.
Under Construction:
We apologize for the inconvenience, but this page and its subpages are currently under active development.Prerequisites
Setup
export PLAY=plays/mw/dnsmasq.yml # optional
vagrant provision c2d-rproxy1
Verify Dnsmasq
Dnsmasq has been set up to provide DNS service for the c2platform.org
domain. This configuration can be found in the group_vars/dnsmasq/main.yml
file. Specifically, there is a single wildcard DNS record for c2platform.org
that directs to the IP address 1.1.4.205
, which essentially means that any subdomain under c2platform.org
will resolve to the same IP address.
You can verify that for example with:
dig @1.1.4.205 -p 5353 c2platform.org
dig @1.1.4.205 -p 5353 whatever.c2platform.org
Show me
root@c2d-rproxy1:~# dig @1.1.4.205 -p 5353 c2platform.org
; <<>> DiG 9.11.3-1ubuntu1.18-Ubuntu <<>> @1.1.4.205 -p 5353 c2platform.org
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 54953
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;c2platform.org. IN A
;; ANSWER SECTION:
c2platform.org. 0 IN A 1.1.4.205
;; Query time: 0 msec
;; SERVER: 1.1.4.205#5353(1.1.4.205)
;; WHEN: Thu Mar 23 05:59:52 UTC 2023
;; MSG SIZE rcvd: 59
root@c2d-rproxy1:~#
root@c2d-rproxy1:~# dig @1.1.4.205 -p 5353 whatever.c2platform.org
; <<>> DiG 9.11.3-1ubuntu1.18-Ubuntu <<>> @1.1.4.205 -p 5353 whatever.c2platform.org
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 27200
;; flags: qr aa rd ra ad; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;whatever.c2platform.org. IN A
;; ANSWER SECTION:
whatever.c2platform.org. 0 IN A 1.1.4.205
;; Query time: 0 msec
;; SERVER: 1.1.4.205#5353(1.1.4.205)
;; WHEN: Thu Mar 23 06:04:21 UTC 2023
;; MSG SIZE rcvd: 68
root@c2d-rproxy1:~#
Configure CoreDNS
With our Dnsmasq-based DNS server running, we can now change CoreDNS pod in Kubernetes to use it. Edit the coredns
configmap
and configure 1.1.4.205:5353
as our only DNS server ( remove 8.8.8.8
etc ).
kubectl edit configmap coredns -n kube-system # configure 1.1.4.205:5353
microk8s stop && microk8s start
microk8s status --wait-ready
Verify CoreDNS
First we need to find the IP address of the CoreDNS pod and then we can run the dig
tests again:
export COREDNS_IP=$(kubectl get pods -n kube-system | grep coredns- | awk '{print $1}' | xargs -I % sh -c 'kubectl get pod % -n kube-system -o jsonpath="{.status.podIP}"')
echo $COREDNS_IP
dig @$COREDNS_IP c2platform.org
dig @$COREDNS_IP whatever.c2platform.org
dig @$COREDNS_IP google.nl
Show me
vagrant@c2d-ks1:~$ dig @$COREDNS_IP c2platform.org
; <<>> DiG 9.18.1-1ubuntu1.3-Ubuntu <<>> @10.1.211.147 c2platform.org
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 47079
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 1232
; COOKIE: a1154c86acbeba68 (echoed)
;; QUESTION SECTION:
;c2platform.org. IN A
;; ANSWER SECTION:
c2platform.org. 5 IN A 1.1.4.205
;; Query time: 0 msec
;; SERVER: 10.1.211.147#53(10.1.211.147) (UDP)
;; WHEN: Thu Mar 23 10:44:35 UTC 2023
;; MSG SIZE rcvd: 85
vagrant@c2d-ks1:~$ dig @$COREDNS_IP whatever.c2platform.org
; <<>> DiG 9.18.1-1ubuntu1.3-Ubuntu <<>> @10.1.211.147 whatever.c2platform.org
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 56450
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 1232
; COOKIE: 1b2532719222bf31 (echoed)
;; QUESTION SECTION:
;whatever.c2platform.org. IN A
;; ANSWER SECTION:
whatever.c2platform.org. 5 IN A 1.1.4.205
;; Query time: 0 msec
;; SERVER: 10.1.211.147#53(10.1.211.147) (UDP)
;; WHEN: Thu Mar 23 10:45:04 UTC 2023
;; MSG SIZE rcvd: 103
vagrant@c2d-ks1:~$ dig @$COREDNS_IP google.nl
; <<>> DiG 9.18.1-1ubuntu1.3-Ubuntu <<>> @10.1.211.147 google.nl
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 62105
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 1232
; COOKIE: ea0bc03c335aa625 (echoed)
;; QUESTION SECTION:
;google.nl. IN A
;; ANSWER SECTION:
google.nl. 30 IN A 142.250.179.163
;; Query time: 0 msec
;; SERVER: 10.1.211.147#53(10.1.211.147) (UDP)
;; WHEN: Thu Mar 23 10:45:23 UTC 2023
;; MSG SIZE rcvd: 75
Feedback
Was this page helpful?
Glad to hear it! Please tell us how we can improve.
Sorry to hear that. Please tell us how we can improve.