しばやん雑記

Azure とメイドさんが大好きなフリーランスのプログラマーのブログ

Azure Container Apps のカスタム DNS サフィックスを試した

何時から実装されていたのかは分からないのですが、Azure Container Apps の Container Apps Environment 単位でワイルドカードドメインを割り当てることで、Container Apps 単位でカスタムドメインが一括で利用できる機能が追加されています。

App Service Environment にも用意されているカスタム DNS サフィックスの Container Apps 版です。

デフォルトでは以下のように <app>.<uniqueid>.<region>.azurecontainerapps.io という長いドメインが割り振られますが、カスタム DNS サフィックスを割り当てると <app>.example.com のように短いドメインでアクセス出来るようになります。

上手く名前を設定すれば Container Apps に個別にカスタムドメインを割り当てる必要が無くなります。

Azure Portal から Container Apps Environment を開くと、Custom DNS Suffix という項目が増えています。DNS Suffix を指定しつつ検証用レコードと証明書を同時に設定する必要があるため、これまでのカスタムドメインとは設定方法が大きく異なります。

ちなみに A レコードは設定しなくても TXT レコードだけあれば設定自体は行えます。PFX をアップロードするのと、ワイルドカード証明書が必要になるので完全に証明書は持ち込む必要があります。

カスタム DNS サフィックスの保存時に TXT レコードの検証が同時に走るようになっています。保存に成功すれば、カスタム DNS サフィックスでアクセスできるようになります。

使われている証明書の情報を表示すると、設定したワイルドカード証明書なことが確認出来ます。

Key Vault からインポートが出来るのであれば、Key Vault Acmebot を使えば無限にワイルドカード証明書が持ち込めるので便利なのですが、API 的に不可能だったの Container Apps 向けの Acmebot でカスタム DNS サフィックスへの対応をテスト的に追加して対応しました。

ワイルドカード証明書を作成するには DNS が必要になるので、Let's Encrypt を使ってもそこそこ面倒です。

当然ながら新しく Container Apps を作成すると、問題なくカスタム DNS サフィックスでアクセスできます。Container Apps の名前とは別名を設定出来ると柔軟に使えそうですが、命名に気を付ける必要があります。

カスタム DNS サフィックス自体は、Ingress がインターネットからアクセス可能になっている場合のみ利用可能です。Ingress を Container Apps Environment に限定すると IP アドレス自体が異なるため、同一 Container Apps Environment にある Container Apps からのアクセスは行えません。