外部の Azure Container Apps 環境に仮想ネットワークを提供する
次の例では、既存の仮想ネットワークにコンテナー アプリ環境を作成する方法について説明します。
最初に Azure portal にサインインします。
コンテナー アプリの作成
コンテナー アプリを作成するには、Azure portal ホーム ページから開始します。
- 上部の検索バーで「コンテナー アプリ」を検索します。
- 検索結果でコンテナー アプリを選択します。
- [作成] ボタンを選択します。
[基本] タブ
[基本] タブで、次の操作を行います。
[プロジェクトの詳細] セクションで、次の値を入力します。
設定 アクション サブスクリプション Azure サブスクリプションを選択します。 Resource group [新規作成] を選択し、「my-container-apps」と入力します。 コンテナー アプリ名 「my-container-app」と入力します。 デプロイ ソース [コンテナー イメージ] を選択します。
環境の作成
次に、コンテナー アプリの環境を作成します。
適切なリージョンを選択します。
設定 Value リージョン [米国中部] を選択します。 [Container Apps 環境の作成] フィールドで、[新規作成] リンクを選択します。
[基本] タブの [Container Apps 環境の作成] タブで、次の値を入力します。
設定 値 環境名 「my-environment」と入力します。 環境の種類 [ワークロード プロファイル] を選択します。 ゾーン冗長性 [無効] を選択します [監視] タブを選択して、Log Analytics ワークスペースを作成します。
[ログの宛先] として [Azure Log Analytics] を選択します。
[Log Analytics ワークスペース] フィールドで [新規作成] リンクを選択し、次の値を入力します。
設定 値 名前 「my-container-apps-logs」と入力します。 [場所] フィールドには、[米国中部] があらかじめ入力されています。
[OK] を選択します。
Note
既存の仮想ネットワークを使用できますが、従量課金のみのアーキテクチャを使用する場合、Container Apps で使用するには CIDR 範囲が /23
以上の専用サブネットが必要です。 ワークロード プロファイル環境を使用する場合、/27
以上が必要です。 サブネットのサイズ設定の詳細については、「ネットワーク アーキテクチャの概要」を参照してください。
[ネットワーク] タブを選択して VNET を作成します。
[自分の仮想ネットワークを使用する] の横にある [はい] を選択します。
[仮想ネットワーク] ボックスの横にある [新規作成] リンクを選択し、次の値を入力します。
設定 値 名前 「my-custom-vnet」と入力します。 [OK] ボタンを選択します。
[インフラストラクチャ サブネット] ボックスの横にある [新規作成] リンクを選択し、次の値を入力します。
設定 値 サブネット名 インフラストラクチャ サブネットを入力します。 仮想ネットワーク アドレス ブロック 既定値のままにします。 サブネット アドレス ブロック 既定値のままにします。 [OK] ボタンを選択します。
[仮想 IP] で、[外部] を選択します。
[作成] を選択します。
コンテナー アプリをデプロイする
ページの下部にある [レビューと作成] を選択します。
エラーが見つからなかった場合は、 [作成] ボタンが有効になります。
エラーが発生した場合は、エラーが含まれているタブに赤い点が表示されます。 適切なタブに移動します。エラーを含むフィールドは赤で強調表示されます。 すべてのエラーを修正したら、 [確認と作成] をもう一度選択します。
[作成] を選択します
"デプロイが進行中です" というメッセージを含むページが表示されます。 デプロイが正常に完了すると、"デプロイが完了しました" というメッセージが表示されます。
前提条件
セットアップ
CLI から Azure にサインインするには、次のコマンドを実行し、プロンプトに従って認証プロセスを完了します。
az login
最新バージョンの CLI を実行していることを確認するには、upgrade コマンドを実行します。
az upgrade
次に、CLI 用の Azure Container Apps 拡張機能をインストールまたは更新します。
Azure CLI で az containerapp
コマンドを実行したとき、または Azure PowerShell で Az.App
モジュールからコマンドレットを実行したときに、パラメーターの不足に関するエラーが表示される場合は、最新バージョンの Azure Container Apps 拡張機能がインストールされていることを確認してください。
az extension add --name containerapp --upgrade
Note
2024 年 5 月以降、Azure CLI 拡張機能では、既定でプレビュー機能が有効になりません。 Container Apps のプレビュー機能にアクセスするには、--allow-preview true
を使用して Container Apps 拡張機能をインストールします。
az extension add --name containerapp --upgrade --allow-preview true
最新の拡張機能またはモジュールがインストールされたので、Microsoft.App
および Microsoft.OperationalInsights
名前空間を登録します。
az provider register --namespace Microsoft.App
az provider register --namespace Microsoft.OperationalInsights
環境変数を設定する
以下の環境変数を設定します。 ''<プレースホルダー>'' は実際の値に置き換えてください。
RESOURCE_GROUP="<RESOURCE_GROUP>"
LOCATION="<LOCATION>"
CONTAINERAPPS_ENVIRONMENT="<CONTAINERAPPS_ENVIRONMENT>"
Azure リソース グループの作成
コンテナー アプリのデプロイに関連するサービスを整理するためのリソース グループを作成します。
az group create \
--name $RESOURCE_GROUP \
--location "$LOCATION"
環境の作成
Azure Container Apps 環境では、コンテナー アプリのグループを囲むセキュリティ保護された境界が作成されます。 同じ環境にデプロイされた Container Apps は、同じ仮想ネットワークにデプロイされ、同じ Log Analytics ワークスペースにログを書き込みます。
Microsoft.ContainerService
プロバイダーを登録します。
az provider register --namespace Microsoft.ContainerService
VNET 名を保持する変数を宣言します。
VNET_NAME="my-custom-vnet"
ここで、コンテナー アプリ環境に関連付ける Azure 仮想ネットワークを作成します。 仮想ネットワークには、環境のデプロイに使用できるサブネットが必要です。
Note
従量課金のみのアーキテクチャを使用する場合、ネットワーク サブネット アドレス プレフィックスでは Container Apps で使用するための最小 CIDR 範囲 /23
が必要です。 ワークロード プロファイル アーキテクチャを使用する場合、/27
以上が必要です。 サブネットのサイズ設定の詳細については、「ネットワーク アーキテクチャの概要」を参照してください。
az network vnet create \
--resource-group $RESOURCE_GROUP \
--name $VNET_NAME \
--location $LOCATION \
--address-prefix 10.0.0.0/16
az network vnet subnet create \
--resource-group $RESOURCE_GROUP \
--vnet-name $VNET_NAME \
--name infrastructure-subnet \
--address-prefixes 10.0.0.0/21
ワークロード プロファイル環境を使う際は、サブネットを Microsoft.App/environments
に委任するように VNET を更新する必要があります。 この委任は、従量課金のみの環境には適用されません。
az network vnet subnet update \
--resource-group $RESOURCE_GROUP \
--vnet-name $VNET_NAME \
--name infrastructure-subnet \
--delegations Microsoft.App/environments
仮想ネットワークを作成すると、インフラストラクチャ サブネットの ID を取得できます。
INFRASTRUCTURE_SUBNET=`az network vnet subnet show --resource-group ${RESOURCE_GROUP} --vnet-name $VNET_NAME --name infrastructure-subnet --query "id" -o tsv | tr -d '[:space:]'`
最後に、前の手順でデプロイしたカスタム VNET を使用して Container Apps 環境を作成します。
az containerapp env create \
--name $CONTAINERAPPS_ENVIRONMENT \
--resource-group $RESOURCE_GROUP \
--location "$LOCATION" \
--infrastructure-subnet-resource-id $INFRASTRUCTURE_SUBNET
次の表では、containerapp env create
で使用されるパラメーターについて説明します。
パラメーター | 説明 |
---|---|
name |
コンテナー アプリ環境の名前。 |
resource-group |
リソース グループの名前。 |
location |
環境がデプロイされる Azure の場所。 |
infrastructure-subnet-resource-id |
インフラストラクチャ コンポーネントとユーザー アプリケーション コンテナーのサブネットのリソース ID。 |
カスタム仮想ネットワークを使用して作成された環境で、その環境にコンテナー アプリをデプロイできるようになりました。
オプションの構成
コンテナー アプリ環境用にプライベート DNS をデプロイし、カスタム ネットワーク IP 範囲を定義するオプションも使用できます。
プライベート DNS を使用したデプロイ
プライベート DNS を使用してコンテナー アプリをデプロイする場合は、次のコマンドを実行します。
まず、識別可能な情報を環境から抽出します。
ENVIRONMENT_DEFAULT_DOMAIN=`az containerapp env show --name ${CONTAINERAPPS_ENVIRONMENT} --resource-group ${RESOURCE_GROUP} --query properties.defaultDomain --out json | tr -d '"'`
ENVIRONMENT_STATIC_IP=`az containerapp env show --name ${CONTAINERAPPS_ENVIRONMENT} --resource-group ${RESOURCE_GROUP} --query properties.staticIp --out json | tr -d '"'`
VNET_ID=`az network vnet show --resource-group ${RESOURCE_GROUP} --name ${VNET_NAME} --query id --out json | tr -d '"'`
次に、プライベート DNS を設定します。
az network private-dns zone create \
--resource-group $RESOURCE_GROUP \
--name $ENVIRONMENT_DEFAULT_DOMAIN
az network private-dns link vnet create \
--resource-group $RESOURCE_GROUP \
--name $VNET_NAME \
--virtual-network $VNET_ID \
--zone-name $ENVIRONMENT_DEFAULT_DOMAIN -e true
az network private-dns record-set a add-record \
--resource-group $RESOURCE_GROUP \
--record-set-name "*" \
--ipv4-address $ENVIRONMENT_STATIC_IP \
--zone-name $ENVIRONMENT_DEFAULT_DOMAIN
ネットワーク パラメーター
containerapp env create
を呼び出すときに定義できるオプションのネットワーク パラメーターが 3 つあります。 これらのオプションは、個別のアドレス範囲を持つピアリングされた VNET がある場合に使用します。 これらの範囲を明示的に構成すると、Container Apps 環境で使用されるアドレスは、ネットワーク インフラストラクチャ内の他の範囲と競合しなくなります。
これらの 3 つのプロパティすべてに値を指定するか、どれも指定しないかのどちらかにする必要があります。 指定されていない場合、値は自動的に生成されます。
パラメーター | 説明 |
---|---|
platform-reserved-cidr |
環境インフラストラクチャ サービスで内部的に使用されるアドレス範囲。 従量課金のみのアーキテクチャを使用する場合は、/23 から /12 までのサイズである必要があります |
platform-reserved-dns-ip |
内部 DNS サーバーに使用される platform-reserved-cidr 範囲の IP アドレス。 このアドレスには、範囲内の最初のアドレス、またはネットワーク アドレスは指定できません。 たとえば、platform-reserved-cidr が 10.2.0.0/16 に設定されている場合、platform-reserved-dns-ip を 10.2.0.0 (ネットワーク アドレス)、または 10.2.0.1 (インフラストラクチャはこの IP の使用を予約します) に設定することはできません。 この場合、DNS に使用できる最初の IP は 10.2.0.2 になります。 |
docker-bridge-cidr |
Docker ブリッジ ネットワークに割り当てられたアドレス範囲。 この範囲は、/28 から /12 までのサイズである必要があります。 |
platform-reserved-cidr
とdocker-bridge-cidr
のアドレス範囲が互いに競合したり、指定されたサブネットの範囲と競合したりすることはできません。 さらに、これらの範囲が VNET 内の他のアドレス範囲と競合しないようにしてください。これらのプロパティが指定されていない場合、範囲の競合を避けるために、VNET のアドレス範囲に基づいて CLI によって範囲の値が生成されます。
リソースをクリーンアップする
このアプリケーションを引き続き使用しない場合は、my-container-apps リソース グループ を削除できます。 これにより、Azure Container Apps インスタンスと関連するすべてのサービスが削除されます。 また、Container Apps サービスによって自動的に作成され、カスタム ネットワーク コンポーネントを含むリソース グループも削除されます。
注意事項
次のコマンドを実行すると、指定されたリソース グループとそれに含まれるすべてのリソースが削除されます。 指定したリソース グループにこのガイドの範囲外のリソースが存在する場合、それらも削除されます。
az group delete --name $RESOURCE_GROUP