このエントリは2024/06/06現在の情報に基づいています。将来の機能追加や変更に伴い、記載内容からの乖離が発生する可能性があります。
問い合わせ
(久しぶりに)ACA大好きないつもの人からこんなお問い合わせが届いた。
ACAではConsumption profile (従量課金)とConsumption+Workload profile(従量課金+ワークロードプロファイル)の構成をプロビジョニングできるが、どちらがおすすめなのか?
「いや、それはあんたがやりたいこと次第やで」と反射的に答えたくなったけれども耐え難きを耐え、もうちょいと聞いてみた。
- そもそもやりたいことは、Consumption profileでできる範囲
- カスタムVNetのIngressを使う予定
- 従量課金プロファイルだと、Custom VNetのサブネットに
/23を割り当てる必要がある - Consumption + Workload profileだと、
/23よりも範囲の狭いサブネットが使えそう
つまるところ、
従量課金しか使わないのに、Workload profile構成込みのやつ、使ってええのか?
ということ。確かに/23は一般的に広大(といっても、どこまでスケールさせるのか次第なので、/23が広大かどうかは状況による)ではある。
で、どうなのか?
結論から言うと、使っても問題ないし、Workload profileで使うVMを定義していない限り、おねだんは変わらない。おねだんについては、以下のドキュメントに記載がある。
Azure では、実行中のプロファイル インスタンスの数に主に基づいて課金が計算されます。
スケーリング / Scaling
Azure calculates billing largely based on the number of running profile instances.
https://learn.microsoft.com/azure/container-apps/workload-profiles-overview#scaling
Consumption + Workload Profileの構成の場合、 最小サブネットサイズは /23 から /27 に変わる。最大スケール時のインスタンス個数を考慮し、以下のドキュメントに従ってサブネットサイズを見積もっておく必要がある。
Subnet
https://learn.microsoft.com/azure/container-apps/networking?tabs=workload-profiles-env
この問い合わせ主の場合、将来的にインターネットへのアクセスもACAからではなく、オンプレミス側からに制限したい、と考えていた。その場合、Consumption profileだと要件を満たせないため、Consumption + Workload profileを使ってもらう必要がある。ドキュメントにも記載があるように、Workload profile構成を使うと、ingressだけでなく、egressもコントロールできる(Consumption profileではUDRなどは使えず、ACAからインターネットに出ることが既定)。
Azure Container Apps 環境でのネットワーク / Networking in Azure Container Apps environment
https://learn.microsoft.com/azure/container-apps/networking
更問が届く
機嫌を良くした問い合わせ主から、こんな更問が届いた。
カスタムVNetをIngressスコープにしている状況下で、同一VNetの別サブネットから、ACAのアプリにアクセスする場合は、NSGでブロックしていない限り、ふつうにDNSで名前解決できればアクセスできる、と理解している。だが、社内から、「同一VNetであっても、ACAのLoad balancerに対してPrivate Link Service (PLS) を追加構成したほうがよいのでは」という問い合わせをもらった。今回は分離したVNetからのアクセスはないのだが、それでも必要か?
結論から言うと、この問い合わせ主の環境では必要ない。分離したVNetでアクセスさせたい、という目的があるなら、その構成の意図はわかるけれども、今回は分離したVNetからのアクセスではなく、同一VNet、別Subnetからのアクセスで、NSGでブロックしているわけでもないので意味がない(やりたければやってもいいけど、必要ない)、と回答した。