🥭
【Azure】プライベートDNSを使ってみる
コンテナインスタンス(ACI)にプライベートDNSで作成したドメインを割り当ててみるハンズオンです。
仮想ネットワークを作成する
【Azure】VNetピアリングを試してみるで作成したVNetをそのまま使用します。
ACIを作成する
| コンテナインスタンス(ACI)の作成 | ||
|---|---|---|
| コンテナ名 | containera | |
| 地域 | Japan East | |
| イメージのソース | クイックスタート イメージ | |
| イメージ | mcr.microsoft.com/oss/nginx/nginx:1.9.15-alpine(Linux) | |
| サイズ | 1vcpu,1.5Gibメモリ,0gpu | |
| ネットワークの種類 | プライベート | |
| 仮想ネットワーク | VNetA | 先ほど作成した仮想ネットワーク |
| サブネット | SubnetA-1(10.1.0.0/24) | |
| ポート | 80 / TCP |
上記の内容でACIを作成します。

このコンテナのプライベートIPアドレスは、10.1.0.4です。
後ほどこのIPアドレスとドメインを紐付けます。
プライベートDNSゾーンを作成する
Azure PortalからプライベートDNSゾーンを作成します。
| 基本 | |
|---|---|
| 名前 | az104test.local |
| 地域 | Japan East |

DNSの設定をする
DNSゾーンと仮想ネットワークをリンクする
作成したプライベートDNSゾーンを開き、「仮想ネットワークリンク」を開きます。
| 仮想ネットワークリンク | ||
|---|---|---|
| 名前 | vneta-link | |
| 仮想ネットワーク | VNetA | ACIを紐付けた仮想ネットワークを選択 |

Aレコードを追加する
| レコードセットの追加 | ||
|---|---|---|
| 名前 | service1 | |
| 種類 | A - アドレスレコード | |
| TTL | 1 時間 | デフォルトのまま |
| IPアドレス | 10.1.0.4 | ACIのプライベートIPアドレスを設定します |

この設定によって、service1.az104test.localとコンテナのプライペートIPアドレス10.1.0.4が紐づくことになります。
OKを押して、レコードセットを追加します。
名前解決が成功するかを確認する
同一VNet内にもう1つACIを作成して、そこからservice1.az104test.localドメインに対してHTTPリクエストを実施してみます。

containerbというACIを作成しました。
作成したcontainerbに入って、service1.az104test.localドメインにHTTPリクエストを行います。
名前解決が上手くいけば、nginxのデフォルトページが返却されるはずです。
az login
# ACI2に入ります
az container exec --resource-group AZ104-test-rg --name containerb --exec-command "/bin/sh"
# service1.az104test.localに対して、httpリクエストを実施
wget -qO- http://service1.az104test.local
<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>
# ...以下略
期待通り、nginxのデフォルトのWelcomeページが返却されました。

Discussion