コンテナー グループの静的 IP アドレスの公開
この記事では、Azure アプリケーション ゲートウェイを使用してコンテナー グループの静的パブリック IP アドレスを公開するための 1 つの方法を紹介します。 Azure Container Instances で実行される、外部に接続されたコンテナー化アプリの静的エントリ ポイントが必要な場合は、これらの手順に従ってください。
この記事では、Azure CLI を使用して、このシナリオ用のリソースを作成します。
- Azure 仮想ネットワーク
- 小規模な Web アプリをホストする仮想ネットワークにデプロイされたコンテナー グループ
- パブリック フロントエンド IP アドレスを持つアプリケーション ゲートウェイ、ゲートウェイで Web サイトをホストするリスナー、バックエンド コンテナー グループへのルート
アプリケーション ゲートウェイが実行され、コンテナー グループがネットワークの委任されたサブネットに安定したプライベート IP アドレスを公開している限り、このパブリック IP アドレスでコンテナー グループにアクセスできます。
Note
Azure Application Gateway は、HTTP、HTTPS、HTTP/2、WebSocket の各プロトコルをサポートします。
Azure では、ゲートウェイがプロビジョニングされて利用可能になっている時間と、ゲートウェイで処理されるデータの量に基づいて、アプリケーション ゲートウェイの料金が請求されます。 「価格」を参照してください。
Create virtual network
一般的なケースであれば、Azure 仮想ネットワークは既に使用されている可能性もあります。 お持ちでない場合は、次のコマンド例で示すような方法で作成してください。 仮想ネットワークでは、アプリケーション ゲートウェイとコンテナー グループにそれぞれ個別のサブネットが必要です。
必要な場合は、Azure リソース グループを作成してください。 次に例を示します。
az group create --name myResourceGroup --location eastus
az network vnet create コマンドを使って、仮想ネットワークを作成します。 このコマンドを実行すると、ネットワークに myAGSubnet サブネットが作成されます。
az network vnet create \
--name myVNet \
--resource-group myResourceGroup \
--location eastus \
--address-prefix 10.0.0.0/16 \
--subnet-name myAGSubnet \
--subnet-prefix 10.0.1.0/24
az network vnet subnet create コマンドを使って、バックエンド コンテナー グループ用のサブネットを作成します。 ここでは、その名前は myACISubnet です。
az network vnet subnet create \
--name myACISubnet \
--resource-group myResourceGroup \
--vnet-name myVNet \
--address-prefix 10.0.2.0/24
az network public-ip create コマンドを使用して、静的パブリック IP リソースを作成します。 このアドレスは、後の手順で、アプリケーション ゲートウェイのフロントエンドとして構成されます。
az network public-ip create \
--resource-group myResourceGroup \
--name myAGPublicIPAddress \
--allocation-method Static \
--sku Standard
コンテナー グループを作成する
次の az container create を実行して、前の手順で構成した仮想ネットワークにコンテナー グループを作成します。
このグループは myACISubnet サブネットにデプロイされます。このグループには、aci-helloworld
イメージをプルする、appcontainer という単一のインスタンスが含まれます。 ドキュメントの他の記事で示されているように、このイメージには、静的な HTML ページを返す、Node.js で作成された小さな Web アプリがパッケージされています。
az container create \
--name appcontainer \
--resource-group myResourceGroup \
--image mcr.microsoft.com/azuredocs/aci-helloworld \
--vnet myVNet \
--subnet myACISubnet
正常にデプロイされると、コンテナー グループには仮想ネットワーク内でのプライベート IP アドレスが割り当てられます。 たとえば、グループの IP アドレスを取得するには、次の az container show コマンドを実行します。
az container show \
--name appcontainer --resource-group myResourceGroup \
--query ipAddress.ip --output tsv
10.0.2.4
のような出力が返されます。
後の手順で使用するために、IP アドレスを環境変数に保存します。
ACI_IP=$(az container show \
--name appcontainer \
--resource-group myResourceGroup \
--query ipAddress.ip --output tsv)
重要
コンテナー グループが停止、開始、または再起動された場合、コンテナー グループのプライベート IP が変更される可能性があります。 これが発生した場合は、アプリケーション ゲートウェイの構成を更新する必要があります。
アプリケーション ゲートウェイの作成
アプリケーション ゲートウェイのクイックスタートの手順に従って、仮想ネットワークにアプリケーション ゲートウェイを作成します。 次の az network application-gateway create コマンドを実行すると、パブリック フロントエンド IP アドレスを持つアプリケーション ゲートウェイと、バックエンド コンテナー グループへのルートが作成されます。 ゲートウェイの設定の詳細については、Application Gateway のドキュメントを参照してください。
az network application-gateway create \
--name myAppGateway \
--location eastus \
--resource-group myResourceGroup \
--capacity 2 \
--sku Standard_v2 \
--http-settings-protocol http \
--public-ip-address myAGPublicIPAddress \
--vnet-name myVNet \
--subnet myAGSubnet \
--servers "$ACI_IP" \
--priority 100
Azure によってアプリケーション ゲートウェイが作成されるのに最大 15 分かかる場合があります。
パブリック IP アドレスのテスト
次に、アプリケーション ゲートウェイの背後にあるコンテナー グループで実行されている Web アプリへのアクセスをテストします。
az network public-ip show コマンドを実行して、ゲートウェイのフロントエンド パブリック IP アドレスを取得します。
az network public-ip show \
--resource-group myresourcegroup \
--name myAGPublicIPAddress \
--query [ipAddress] \
--output tsv
出力は、次のようなパブリック IP アドレスになります: 52.142.18.133
。
正常に構成された場合に、実行中の Web アプリを表示するには、ブラウザーでゲートウェイのパブリック IP アドレスに移動します。 正常にアクセスできた場合、表示は次のようになります。
次のステップ
- アプリケーション ゲートウェイの背後にあるバックエンド サーバーとして、WordPress コンテナー インスタンスを含んだコンテナー グループを作成するには、クイックスタート テンプレートを参照してください。
- SSL 終了の証明書を使ってアプリケーション ゲートウェイを構成することもできます。 概要とチュートリアルを参照してください。
- シナリオによっては、他の Azure 負荷分散ソリューションと Azure Container Instances を使用することを検討してください。 たとえば、Azure Traffic Manager を使用して、複数のコンテナー インスタンスと複数のリージョンにトラフィックを分散させることもできます。 この ブログ投稿を参照してください。