目的
IBMCloudのVPC環境においてDNS Servicesを用いた名前解決のテストを実施
DNS Servicesで設定したAレコードが、IKSおよびVSIより名前解決ができるか確認する
DNS Servicesの設定
IBMCloudのDocsはこちら
https://cloud.ibm.com/docs/dns-svcs?topic=dns-svcs-getting-started&locale=ja
Step1. DNS Servicesインスタンスを作成する
IBMCloud consoleにログインし、上部の検索メニューより**
検索から出てきたDNS Servicesを選択
DNS**を検索
リソースの構成:任意の名前を設定
リソースグループの選択:サービスをデプロイするリソースグループを選択
最後に使用条件に同意し、作成実施
Step2. DNSゾーンを追加する
Step3. DNSリソース・レコードを追加する
Aレコードを追加する例
名前:Aレコードの名前を記載
Ipv4アドレス:[Aレコード].testdomain.comで解決したいIPアドレスを記載
Step4. DNSゾーンへの許可ネットワークとしてのVPCの追加
作成したDNS Servicesに対してDNSクエリを許可するネットワークを指定する
ゾーン -> 許可されたネットワーク -> ネットワークの追加を選択
許可対象のVPCがあるリージョンを選択し、クエリを許可したいVPCを選択する
最後にネットワークの追加を選択
ここまでの操作で、クエリを許可したVPCからDNS ServicesへのDNSクエリが実行でき
かつ名前解決ができる状態となる。
動作確認
VPC上のVSIからのテスト
VPCインフラストラクチャに作成したVSIのLinuxサーバよりテストを実施
dig
# dig www.testdomain.com
; <<>> DiG 9.16.23-RH <<>> www.testdomain.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 33273
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0
;; QUESTION SECTION:
;www.testdomain.com. IN A
;; ANSWER SECTION:
www.testdomain.com. 900 IN A 99.99.99.99
;; Query time: 3 msec
;; SERVER: 161.26.0.7#53(161.26.0.7)
;; WHEN: Wed Jun 19 13:39:08 UTC 2024
;; MSG SIZE rcvd: 70
nslookup
# nslookup www.testdomain.com
Server: 161.26.0.7
Address: 161.26.0.7#53
Non-authoritative answer:
Name: www.testdomain.com
Address: 99.99.99.99
161.26.0.7はVSIに設定されているデフォルトのDNSサーバ
# cat /etc/resolv.conf
; generated by /usr/sbin/dhclient-script
nameserver 161.26.0.7
nameserver 161.26.0.8
VPC上のIKS(kubernetes)からのテスト
PODから名前解決をテスト
% kubectl run dnstest --rm --tty -i --image=busybox --restart=Never -- sh -c 'nslookup www.testdomain.com; echo $?;'
Server: 172.21.0.10
Address: 172.21.0.10:53
Non-authoritative answer:
Non-authoritative answer:
Name: www.testdomain.com
Address: 99.99.99.99
172.21.0.10はIKS上のCoreDNS(kube-dns)サービス
% kubectl get service kube-dns -n kube-system -o wide | grep kube-dns
kube-dns ClusterIP 172.21.0.10 <none> 53/UDP,53/TCP,9153/TCP 72d k8s-app=kube-dns