こんにちは、京セラコミュニケーションシステム 石関 (@kccs_daisuke-ishizeki)です。
弊社では検証作業などを目的にドメインを取得して検証環境として利用したりする文化?があります。
といっても新規ドメインが取りたいわけではなく、どちらかと言うと検証に使えて煩雑な手続きが不要でDNSレコードもセルフで設定できるドメインが欲しいわけです。
サブドメインで事足りるなら委任されたゾーンを一度作れればその後は容易に作成できるのでその内容を記事にしてみます。
本記事は2024年11月29日ごろに作成しております。引用している内容は執筆時点のものとなります。
本記事でのドメインは架空のものです。
お困りごと
- 検証用にドメインを取得したりするケースがあるが、新規ドメインが必要な要件ではない
- ドメイン取得のコストも減らせるなら減らしたい
- どこかの部門管理のドメインに間借りさせてもらうのも有りだけど、めんどうなら積極的に頼みたいわけでもない
イメージ
そんなわけで以下のようなものをイメージしました。
- 親ドメインから委任してもらうサブドメイン
gc.hoge.com
- サンドボックス環境管理用
sandbox.gc.hoge.com
- 検証環境
xyz.sandbox.gc.hoge.com
検証環境のゾーンおよびリソースレコードを検証を行う部門側で管理する形です。
つくってみた構成
できたのがこちら。
この構成のポイント
- (図右の)Your Project が検証者が使用するプロジェクトです
- Cloud DNS でゾーンを作成すると NS レコードが自動的に作成されます(図右の紫のレコード)
- 作成された NS レコードを上位階層のゾーン(図中央下段)に追加することでサブドメインを委任しています
実施したこと具体的に記載すると以下になります。
- xyz.sandbox.gc.hoge.com ゾーンを作成 [検証者]
- sandbox.gc.hoge.com ゾーンに生成された NS レコードを反映する [サンドボックス環境管理者]
- 委任完了
他のサブドメインで検証をする場合は同様に行えばOKです。
2 のレコード反映がめんどうなやり取りになったら本末転倒ですが、Terraform などで反映する NS レコードをプルリクもらう形にしたりすればよりよい感じに運用できそうですね。
※ 図中央の上・下段のゾーン作成とオレンジと青色のレコード追加は初回のみ設定します。行っていることは前述の内容と同様にサブドメインを委任しています。
動作確認
本記事でのドメインは架空のものです。応答の例としてお読みください。
ishizeki (arm64):~$% dig xyz.sandbox.gc.hoge.com. NS
; <<>> DiG 9.10.6 <<>> xyz.sandbox.gc.hoge.com. NS
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 25113
;; flags: qr rd ra; QUERY: 1, ANSWER: 4, AUTHORITY: 0, ADDITIONAL: 5
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4000
;; QUESTION SECTION:
;xyz.sandbox.gc.hoge.com. IN NS
;; ANSWER SECTION:
xyz.sandbox.gc.hoge.com. 21600 IN NS ns-cloud-d4.googledomains.com.
xyz.sandbox.gc.hoge.com. 21600 IN NS ns-cloud-d1.googledomains.com.
xyz.sandbox.gc.hoge.com. 21600 IN NS ns-cloud-d2.googledomains.com.
xyz.sandbox.gc.hoge.com. 21600 IN NS ns-cloud-d3.googledomains.com.
;; ADDITIONAL SECTION:
ns-cloud-d4.googledomains.com. 15732 IN A 216.239.38.109
ns-cloud-d1.googledomains.com. 15732 IN A 216.239.32.109
ns-cloud-d2.googledomains.com. 15732 IN A 216.239.34.109
ns-cloud-d3.googledomains.com. 15731 IN A 216.239.36.109
;; Query time: 165 msec
;; SERVER: 10.150.253.201#53(10.150.253.201)
;; WHEN: Mon Sep 30 10:52:22 JST 2024
;; MSG SIZE rcvd: 244
ishizeki (arm64):~$%
HEADER の status が NOERROR で正常な応答であることが確認できました。
また ANSWER SECTION で NS レコードの名前解決がされていることが確認できました。
この構成の利点と気になるところ
- ゾーンの管理を検証者が行えるためレコード追加などセルフで対応できる
- 検証に利用するゾーンを作成し、ネームサーバーの委任を依頼をするだけ
- 委任する分ドメイン名が長くなる
まとめ
思いつきで作ってみたので運用していく中で課題もでてくるかもしれませんが、1 つのアイデアとして役に立つことがあれば幸いです。
留意事項
Cloud DNS へ親ドメインを移行しようとした際、サブドメインで5つのシャードが割り当て済み(使用中)だと、親ドメインのゾーンが作成できません。その場合はシャードの解放が必要になります。
回避するには Cloud DNS に親ドメインのゾーンを作成しておく必要があります。
詳細についてはドキュメントをご確認ください。