次の方法で共有


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

次の例では、既存の仮想ネットワーク (VNet) に 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] を選択します。

Container Apps 環境用にプライベート DNS をデプロイするオプションも使用できます。 詳細については、「Azure プライベート DNS ゾーンの作成と構成」に関する記事を参照してください。

仮想ネットワークの作成

Note

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

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

  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

環境変数を設定する

以下の環境変数を設定します。 <PLACEHOLDERS> は、実際の値に置き換えます:

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"

ここで、Container Apps 環境に関連付ける仮想ネットワークを作成します。 仮想ネットワークには、環境のデプロイに使用できるサブネットが必要です。

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

ワークロード プロファイル環境を使用する場合は、サブネットを 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 環境を作成します。

環境を作成するために、次のコマンドを実行します。 内部環境を作成するには、--internal-only を追加します。

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

その他のリソース

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

次のステップ