Azure CLI を使用してワークロード プロファイルを管理する

Azure CLI を使用して Container Apps 環境でワークロード プロファイルを管理する方法について説明します。

プロファイルでコンテナー アプリを作成する

既定では、Container Apps 環境は自動的に生成されるマネージド仮想ネットワークで作成されます。 生成された仮想ネットワークは、Microsoftのテナントに作成されるため、アクセスできません。

または、 カスタム仮想ネットワークを使用して環境を作成することもできます。 次のいずれかの機能が必要な場合は、このオプションを使用します。

  • ユーザー定義ルート
  • Application Gateway との統合
  • ネットワーク セキュリティ グループ
  • 仮想ネットワーク内のプライベート エンドポイントの内側にあるリソースとの通信
  1. Container Apps 環境を作成します。

    az containerapp env create \
      --resource-group "<RESOURCE_GROUP>" \
      --name "<NAME>" \
      --location "<LOCATION>"
    

    このコマンドが完了するまでに最長 10 分かかることがあります。

  2. 環境の状態を確認します。 次のコマンドは、環境が正常に作成されたかどうかを報告します。

    az containerapp env show \
      --name "<ENVIRONMENT_NAME>" \
      --resource-group "<RESOURCE_GROUP>"
    

    provisioningStateは、次のコマンドに進む前にSucceededを報告する必要があります。

  3. 新しいコンテナー アプリを作成します。

    az containerapp create \
      --resource-group "<RESOURCE_GROUP>" \
      --name "<CONTAINER_APP_NAME>" \
      --target-port 80 \
      --ingress external \
      --image mcr.microsoft.com/k8se/quickstart:latest \
      --environment "<ENVIRONMENT_NAME>" \
      --workload-profile-name "Consumption"
    

このコマンドを実行すると、組み込みの従量課金ワークロード プロファイルにアプリケーションがデプロイされます。 Dedicated プロファイルでアプリを作成する場合は、まずそのプロファイルを環境に追加する必要があります。

このコマンドを実行すると、特定のワークロード プロファイルを使用して環境に新しいアプリケーションが作成されます。

カスタム仮想ネットワークを使用して環境を作成する場合は、仮想ネットワーク構成を完全に制御できます。 このコントロールには、次の機能を実装するオプションがあります。

  • ユーザー定義ルート
  • Application Gateway との統合
  • ネットワーク セキュリティ グループ
  • 仮想ネットワーク内のプライベート エンドポイントの内側にあるリソースとの通信

次のコマンドを使用して、Container Apps 環境を作成します。

  1. 仮想ネットワークを作成します。

    az network vnet create \
      --address-prefixes 13.0.0.0/23 \
      --resource-group "<RESOURCE_GROUP>" \
      --location "<LOCATION>" \
      --name "<VNET_NAME>"
    
  2. Microsoft.App/environments に委任されるサブネットを作成します。

    az network vnet subnet create \
      --address-prefixes 13.0.0.0/23 \
      --delegations Microsoft.App/environments \
      --name "<SUBNET_NAME>" \
      --resource-group "<RESOURCE_GROUP>" \
      --vnet-name "<VNET_NAME>" \
      --query "id"
    

    ID 値をコピーして次のコマンドに貼り付けます。

    コンテナー アプリ環境でワークロード プロファイルを実行するために必要な仮想ネットワークの制御を Container Apps ランタイムに付与するには、 Microsoft.App/environments 委任が必要です。

    サブネットには、/27 CIDR (32 IP - 8 個が予約済み) のように小さな値を指定できます。 /27 CIDR を指定する場合は、以下の点を考慮に入れてください。

    • Container Apps インフラストラクチャ用に予約されている IP アドレスは 11 個あります。 そのため、/27 CIDR には使用可能な IP アドレスが最大 21 個あります。

    • IP アドレスの割り当ては、従量課金のみのプランと Dedicated プランで異なります。

      消費量のみ Dedicated
      レプリカごとに 1 つの IP が必要です。 ユーザーは、すべてのアプリ全体でレプリカ数が 21 個を超えるアプリを持つことはできません。 ダウンタイムなしのデプロイの場合、新しいリビジョンが正常にデプロイされるまで古いリビジョンが稼働し続けるため、2 倍の IP アドレスが必要です。 インスタンス (VM ノード) ごとに 1 つの IP が必要です。 すべてのワークロード プロファイル全体で最大 21 個のインスタンスと、これらのワークロード プロファイル上で実行される数百以上のレプリカを持つことができます。
  3. Container Apps 環境を作成します。

    Note

    コンテナー アプリでパブリック イングレスを許可するか、環境レベルで仮想ネットワーク内からのイングレスのみを許可するかを構成できます。 イングレスを仮想ネットワークのみに制限するには、 --internal-only フラグを設定します。

    az containerapp env create \
      --resource-group "<RESOURCE_GROUP>" \
      --name "<NAME>" \
      --location "<LOCATION>"
    

    このコマンドが完了するまでに最長 10 分かかることがあります。

  4. 環境の状態を確認します。 次のコマンドは、環境が正常に作成されたかどうかを報告します。

    az containerapp env show \
      --name "<ENVIRONMENT_NAME>" \
      --resource-group "<RESOURCE_GROUP>"
    

    provisioningStateは、次のコマンドに進む前にSucceededを報告する必要があります。

  5. 新しいコンテナー アプリを作成します。

    az containerapp create \
      --resource-group "<RESOURCE_GROUP>" \
      --name "<CONTAINER_APP_NAME>" \
      --target-port 80 \
      --ingress external \
      --image mcr.microsoft.com/k8se/quickstart:latest \
      --environment "<ENVIRONMENT_NAME>" \
      --workload-profile-name "Consumption"
    

このコマンドを実行すると、組み込みの従量課金ワークロード プロファイルにアプリケーションがデプロイされます。 Dedicated プロファイルでアプリを作成する場合は、まずそのプロファイルを環境に追加する必要があります。

このコマンドを実行すると、特定のワークロード プロファイルを使用して環境に新しいアプリケーションが作成されます。

プロファイルを追加する

既存の環境に新しいワークロード プロファイルを追加します。 このセクションで説明するように、作業プロファイルの種類を指定する必要があります。

az containerapp env workload-profile add \
  --resource-group <RESOURCE_GROUP> \
  --name <ENVIRONMENT_NAME> \
  --workload-profile-type <WORKLOAD_PROFILE_TYPE> \
  --workload-profile-name <WORKLOAD_PROFILE_NAME> \
  --min-nodes <MIN_NODES> \
  --max-nodes <MAX_NODES>

追加するワークロード プロファイルを選択するときは、リージョンの可用性を確保します。 <WORKLOAD_PROFILE_NAME> プレースホルダーに選択する値は、ワークロード プロファイルの "フレンドリ名" です。

フレンドリ名を使用すると、種類が同じ複数のプロファイルを環境に追加できます。 フレンドリ名は、ワークロード プロファイルでコンテナー アプリをデプロイおよび管理するときに使用します。

作業プロファイルの種類はリージョン固有であり、1 つのグローバル ハードコーディングされたリストではありません。 目的の探索パスは、 az containerapp env workload-profile list-supported -l <REGION>です。 この実装では、その場所で使用可能なワークロード プロファイルの種類について、ARM テンプレート エンドポイントからサポートされている値を解決します。

次のコマンドを使用して、リージョンの有効なワークロード プロファイルの種類を確認します。

az containerapp env workload-profile list-supported -l <REGION>

--workload-profile-typeに返される値のいずれかを使用します。 たとえば、その種類が使用可能なリージョンで D4 を使用できます。

次の動作に注意してください。

  • コマンドは、送信する前に型の値を大文字に変更します。
  • --workload-profile-nameを省略すると、既定でプロファイル名が型の値に設定されます。
  • ワークロード プロファイルの追加または更新は、ワークロード プロファイルをサポートする環境でのみ機能します。

プロファイルを編集する

update コマンドを使用して、ワークロード プロファイルで使用されるノードの最小数と最大数を変更できます。

az containerapp env workload-profile update \
  --resource-group <RESOURCE_GROUP> \
  --name <ENV_NAME> \
  --workload-profile-type <WORKLOAD_PROFILE_TYPE> \
  --workload-profile-name <WORKLOAD_PROFILE_NAME> \
  --min-nodes <MIN_NODES> \
  --max-nodes <MAX_NODES>

プロファイルの削除

ワークロード プロファイルを削除するには、次のコマンドを使用します。

az containerapp env workload-profile delete \
  --resource-group "<RESOURCE_GROUP>" \
  --name <ENVIRONMENT_NAME> \
  --workload-profile-name <WORKLOAD_PROFILE_NAME> 

Note

"従量課金" ワークロード プロファイルは削除できません。

プロファイルを検査する

次のコマンドを使用すると、リージョンで使用できるプロファイルと特定の環境で使用されているプロファイルを一覧表示できます。

使用できるワークロード プロファイルを一覧表示する

list-supported コマンドを使用して、ユーザーのリージョンでサポートされているワークロード プロファイルを一覧表示します。

次の Azure CLI コマンドを実行すると、結果が表形式で表示されます。

az containerapp env workload-profile list-supported \
  --location <LOCATION>  \
  --query "[].{Name: name, Cores: properties.cores, MemoryGiB: properties.memoryGiB, Category: properties.category}" \
  -o table

応答は、次の例のようなテーブルに似ています。

Name                       Cores    MemoryGiB    Category
-------------------------  -------  -----------  --------------------
D4                         4        16           GeneralPurpose
D8                         8        32           GeneralPurpose
D16                        16       64           GeneralPurpose
D32                        32       128          GeneralPurpose
E4                         4        32           MemoryOptimized
E8                         8        64           MemoryOptimized
E16                        16       128          MemoryOptimized
E32                        32       256          MemoryOptimized
Consumption                4        8            Consumption
Consumption-GPU-NC24-A100  24       220          Consumption-GPU-A100
Consumption-GPU-NC8as-T4   8        56           Consumption-GPU-T4
Flex                       4        16           Consumption
NC24-A100                  24       220          GPU-NC-A100
NC48-A100                  48       440          GPU-NC-A100
NC96-A100                  96       880          GPU-NC-A100

ワークロード プロファイルを選択し、 オプションの az containerapp env workload-profile add または az containerapp env workload-profile update コマンドを使用してワークロード プロファイルを追加または更新するときに--workload-profile-type フィールドを使用します。

ワークロード プロファイルを表示する

ワークロード プロファイルの詳細を表示します。

az containerapp env workload-profile show \
  --resource-group <RESOURCE_GROUP> \
  --name <ENVIRONMENT_NAME> \
  --workload-profile-name <WORKLOAD_PROFILE_NAME> 

次のステップ