外部の Azure Container Apps 環境に仮想ネットワークを提供する

次の例では、既存の仮想ネットワークにコンテナー アプリ環境を作成する方法について説明します。

最初に Azure portal にサインインします。

コンテナー アプリの作成

コンテナー アプリを作成するには、Azure portal ホーム ページから開始します。

  1. 上部の検索バーで「コンテナー アプリ」を検索します。
  2. 検索結果でコンテナー アプリを選択します。
  3. [作成] ボタンを選択します。

[基本] タブ

[基本] タブで、次の操作を行います。

  1. [プロジェクトの詳細] セクションで、次の値を入力します。

    設定 アクション
    サブスクリプション Azure サブスクリプションを選択します。
    Resource group [新規作成] を選択し、「my-container-apps」と入力します。
    コンテナー アプリ名 my-container-app」と入力します。
    デプロイ ソース [コンテナー イメージ] を選択します。

環境の作成

次に、コンテナー アプリの環境を作成します。

  1. 適切なリージョンを選択します。

    設定 Value
    リージョン [米国中部] を選択します。
  2. [Container Apps 環境の作成] フィールドで、[新規作成] リンクを選択します。

  3. [基本] タブの [Container Apps 環境の作成] タブで、次の値を入力します。

    設定
    環境名 my-environment」と入力します。
    環境の種類 [ワークロード プロファイル] を選択します。
    ゾーン冗長性 [無効] を選択します
  4. [監視] タブを選択して、Log Analytics ワークスペースを作成します。

  5. [ログの宛先] として [Azure Log Analytics] を選択します。

  6. [Log Analytics ワークスペース] フィールドで [新規作成] リンクを選択し、次の値を入力します。

    設定
    名前 my-container-apps-logs」と入力します。

    [場所] フィールドには、[米国中部] があらかじめ入力されています。

  7. [OK] を選択します。

Note

既存の仮想ネットワークを使用できますが、従量課金のみのアーキテクチャを使用する場合、Container Apps で使用するには CIDR 範囲が /23 以上の専用サブネットが必要です。 ワークロード プロファイル環境を使用する場合、/27 以上が必要です。 サブネットのサイズ設定の詳細については、「ネットワーク アーキテクチャの概要」を参照してください。

  1. [ネットワーク] タブを選択して VNET を作成します。

  2. [自分の仮想ネットワークを使用する] の横にある [はい] を選択します。

  3. [仮想ネットワーク] ボックスの横にある [新規作成] リンクを選択し、次の値を入力します。

    設定
    名前 my-custom-vnet」と入力します。
  4. [OK] ボタンを選択します。

  5. [インフラストラクチャ サブネット] ボックスの横にある [新規作成] リンクを選択し、次の値を入力します。

    設定
    サブネット名 インフラストラクチャ サブネットを入力します。
    仮想ネットワーク アドレス ブロック 既定値のままにします。
    サブネット アドレス ブロック 既定値のままにします。
  6. [OK] ボタンを選択します。

  7. [仮想 IP] で、[外部] を選択します。

  8. [作成] を選択します。

コンテナー アプリをデプロイする

  1. ページの下部にある [レビューと作成] を選択します。

    エラーが見つからなかった場合は、 [作成] ボタンが有効になります。

    エラーが発生した場合は、エラーが含まれているタブに赤い点が表示されます。 適切なタブに移動します。エラーを含むフィールドは赤で強調表示されます。 すべてのエラーを修正したら、 [確認と作成] をもう一度選択します。

  2. [作成] を選択します

    "デプロイが進行中です" というメッセージを含むページが表示されます。 デプロイが正常に完了すると、"デプロイが完了しました" というメッセージが表示されます。

前提条件

  • アクティブなサブスクリプションが含まれる Azure アカウント。
  • Azure CLI バージョン 2.28.0 以上をインストールする

セットアップ

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-cidr10.2.0.0/16 に設定されている場合、platform-reserved-dns-ip10.2.0.0 (ネットワーク アドレス)、または 10.2.0.1 (インフラストラクチャはこの IP の使用を予約します) に設定することはできません。 この場合、DNS に使用できる最初の IP は 10.2.0.2 になります。
docker-bridge-cidr Docker ブリッジ ネットワークに割り当てられたアドレス範囲。 この範囲は、/28 から /12 までのサイズである必要があります。
  • platform-reserved-cidrdocker-bridge-cidr のアドレス範囲が互いに競合したり、指定されたサブネットの範囲と競合したりすることはできません。 さらに、これらの範囲が VNET 内の他のアドレス範囲と競合しないようにしてください。

  • これらのプロパティが指定されていない場合、範囲の競合を避けるために、VNET のアドレス範囲に基づいて CLI によって範囲の値が生成されます。

リソースをクリーンアップする

このアプリケーションを引き続き使用しない場合は、my-container-apps リソース グループ を削除できます。 これにより、Azure Container Apps インスタンスと関連するすべてのサービスが削除されます。 また、Container Apps サービスによって自動的に作成され、カスタム ネットワーク コンポーネントを含むリソース グループも削除されます。

注意事項

次のコマンドを実行すると、指定されたリソース グループとそれに含まれるすべてのリソースが削除されます。 指定したリソース グループにこのガイドの範囲外のリソースが存在する場合、それらも削除されます。

az group delete --name $RESOURCE_GROUP

次のステップ