クイック スタート: コマンド ライン を使用して既存のコンテナー イメージをデプロイする

Azure Container Apps サービスを使用すると、サーバーレス プラットフォームでマイクロサービスとコンテナー化されたアプリケーションを実行できます。 Container Apps を使用すると、コンテナーを実行するメリットが得られますが、クラウド インフラストラクチャ設定や複雑なコンテナー オーケストレーターを手動で管理するという問題が残ります。

この記事では、既存のコンテナーを Azure Container Apps にデプロイする方法について説明します。

注意

プライベート レジストリの認証は、レジストリのユーザー名とパスワードを使用してサポートされています。

前提条件

  • アクティブなサブスクリプションが含まれる Azure アカウント。
  • Azure CLI をインストールします。
  • Azure Container Registry などのパブリックまたはプライベートのコンテナー レジストリへのアクセス。

セットアップ

まず、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 ワークスペースにログを書き込みます。

環境を作成するために、次のコマンドを実行します。

az containerapp env create \
  --name $CONTAINERAPPS_ENVIRONMENT \
  --resource-group $RESOURCE_GROUP \
  --location $LOCATION

コンテナー アプリの作成

環境が作成されたので、最初のコンテナー アプリをデプロイできます。 containerapp create コマンドを使用して、コンテナー イメージを Azure Container Apps にデプロイします。

この記事に示されている例では、一般的なコマンドでカスタム コンテナー イメージを使用する方法を示しています。 コンテナー イメージには、次の項目を含む、さらに多くのパラメーターが必要になる場合があります:

  • リビジョン モードの設定
  • シークレットの定義
  • 環境変数を定義する
  • コンテナーの CPU またはメモリの要件の設定
  • Dapr の有効化と構成
  • 外部または内部のイングレスを有効にする
  • 最小および最大のレプリカ値またはスケール ルールの提供

これらのパラメーターの値を create コマンドに指定する方法の詳細については、az containerapp create --help を実行するかオンライン リファレンスを参照してください。 Azure Container Registry 用の資格情報を生成するには、az acr credential show を使用します。

CONTAINER_IMAGE_NAME=<CONTAINER_IMAGE_NAME>
REGISTRY_SERVER=<REGISTRY_SERVER>
REGISTRY_USERNAME=<REGISTRY_USERNAME>
REGISTRY_PASSWORD=<REGISTRY_PASSWORD>

(<プレースホルダー>を実際の値に置き換えます)。

az containerapp create \
  --name my-container-app \
  --resource-group $RESOURCE_GROUP \
  --image $CONTAINER_IMAGE_NAME \
  --environment $CONTAINERAPPS_ENVIRONMENT \
  --registry-server $REGISTRY_SERVER \
  --registry-username $REGISTRY_USERNAME \
  --registry-password $REGISTRY_PASSWORD
az containerapp create \
  --image <REGISTRY_CONTAINER_NAME> \
  --name my-container-app \
  --resource-group $RESOURCE_GROUP \
  --environment $CONTAINERAPPS_ENVIRONMENT

If you have enabled ingress on your container app, you can add `--query properties.configuration.ingress.fqdn` to the `create` command to return the public URL for the application.

このコマンドを実行する前に、<REGISTRY_CONTAINER_NAME> を、レジストリ パスとタグを含む、パブリック コンテナー レジストリの場所の完全な名前に置き換えます。 mcr.microsoft.com/k8se/quickstart:latest は有効なコンテナー名の例です。

デプロイの確認

正常にデプロイされたことを確認するには、Log Analytics ワークスペースに対してクエリを実行します。 ログに対してクエリを実行する前に、初めて分析が到着するまでデプロイしてから数分間待たなければならない場合があります。 これは、コンテナー アプリに実装されているコンソール ログによって異なります。

コンソール ログ メッセージを表示するには、次のコマンドを使用します。

LOG_ANALYTICS_WORKSPACE_CLIENT_ID=`az containerapp env show --name $CONTAINERAPPS_ENVIRONMENT --resource-group $RESOURCE_GROUP --query properties.appLogsConfiguration.logAnalyticsConfiguration.customerId --out tsv`

az monitor log-analytics query \
  --workspace $LOG_ANALYTICS_WORKSPACE_CLIENT_ID \
  --analytics-query "ContainerAppConsoleLogs_CL | where ContainerAppName_s == 'my-container-app' | project ContainerAppName_s, Log_s, TimeGenerated" \
  --out table

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

このアプリケーションの使用を継続しない場合は、次のコマンドを実行して、このクイックスタートで作成したすべてのリソースと共にリソース グループを削除します。

注意事項

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

az group delete --name $RESOURCE_GROUP

ヒント

問題がある場合は、 GitHub の Azure Container Apps リポジトリでイシューを開いて、お知らせください。

次のステップ