内部の 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 以上をインストールする

設定

まず、Azure にサインインします。 次のコマンドを実行し、プロンプトに従って認証プロセスを完了します。

az login

次に、CLI 用の Azure Container Apps 拡張機能をインストールします。

az extension add --name containerapp --upgrade

最新の拡張機能またはモジュールがインストールされたので、Microsoft.App 名前空間を登録します。

注意

Azure Container Apps リソースは、Microsoft.Web 名前空間から Microsoft.App 名前空間に移行されました。 詳細については、「2022 年 3 月に Microsoft.Web から Microsoft.App に名前空間を移行する」を参照してください。

az provider register --namespace Microsoft.App

Azure Monitor Log Analytics ワークスペースの Microsoft.OperationalInsights プロバイダーを登録します (以前に使用したことがない場合)。

az provider register --namespace Microsoft.OperationalInsights

次に、次の環境変数を設定します。

RESOURCE_GROUP="my-container-apps"
LOCATION="canadacentral"
CONTAINERAPPS_ENVIRONMENT="my-environment"

これらの変数を定義すると、新しいコンテナー アプリに関連するサービスを整理するためのリソース グループを作成できます。

az group create \
  --name $RESOURCE_GROUP \
  --location $LOCATION

CLI がアップグレードされ、新しいリソース グループが使用可能になったら、Container Apps 環境を作成し、コンテナー アプリをデプロイできます。

環境の作成

Azure Container Apps 環境では、コンテナー アプリのグループを囲むセキュリティ保護された境界が作成されます。 同じ環境にデプロイされた Container Apps は、同じ仮想ネットワークにデプロイされ、同じ Log Analytics ワークスペースにログを書き込みます。

次に、VNET 名を保持する変数を宣言します。

VNET_NAME="my-custom-vnet"

ここで、コンテナー アプリ環境に関連付ける仮想ネットワークのインスタンスを作成します。 仮想ネットワークには、コンテナー アプリ インスタンスで使用できる 2 つのサブネットが必要です。

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/23

VNET が確立されたら、インフラストラクチャのサブネット 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 \
  --internal-only

次の表では、containerapp env create で使用されるパラメーターについて説明します。

パラメーター 説明
name コンテナー アプリ環境の名前。
resource-group リソース グループの名前。
logs-workspace-id (省略可能) 既存の Log Analytics ワークスペースの ID。 省略すると、ワークスペースが作成されます。
logs-workspace-key Log Analytics クライアント シークレット。 既存のワークスペースを使用する場合は必須です。
location 環境がデプロイされる Azure の場所。
infrastructure-subnet-resource-id インフラストラクチャ コンポーネントとユーザー アプリケーション コンテナーのサブネットのリソース ID。
internal-only (省略可能) 環境では、パブリック静的 IP は使用せず、カスタム VNET で使用できる内部 IP アドレスのみが使用されます。 (インフラストラクチャ サブネット リソース ID が必要です。)

カスタム仮想ネットワークで作成した環境で、az containerapp create コマンドを使用して環境内にコンテナー アプリをデプロイできます。

オプションの構成

コンテナー アプリ環境用にプライベート 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

その他のリソース

  • VNet スコープのイングレスを使用するには、 DNS を設定する必要があります。

次のステップ