次の方法で共有


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

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

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

注意

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

前提条件

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

セットアップ

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

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

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

コンテナー アプリの作成

環境が作成されたので、最初のコンテナー アプリをデプロイできます。

  1. 環境変数を設定します。

    <PLACEHOLDERS> は、実際の値に置き換えます。 ユーザー プリンシパル名は一般的に、メール アドレスの形式を取ります (例: username@domain.com)。

     CONTAINER_APP_NAME=my-container-app
     KEY_VAULT_NAME=my-key-vault
     USER_PRINCIPAL_NAME=<USER_PRINCIPAL_NAME>
     SECRET_NAME=my-secret-name
     CONTAINER_IMAGE_NAME=<CONTAINER_IMAGE_NAME>
     REGISTRY_SERVER=<REGISTRY_SERVER>
     REGISTRY_USERNAME=<REGISTRY_USERNAME>
    
  2. キー コンテナーを作成します。

    Azure Key Vault などのサービスを使用してコンテナー レジストリのパスワードを格納すると、常に値を安全に保ちます。 このセクションでは、キー コンテナーを作成し、コンテナー レジストリのパスワードをキー コンテナーに保存し、コードで使用するためにパスワードを取得する方法を示します。

     az keyvault create --name $KEY_VAULT_NAME --resource-group $RESOURCE_GROUP
    
  3. キー コンテナーでシークレットを管理するアクセス許可をユーザー アカウントに付与する

     KEY_VAULT_ID=$(az keyvault show --name $KEY_VAULT_NAME --query id --output tsv)
     az role assignment create --role "Key Vault Secrets Officer" --assignee "$USER_PRINCIPAL_NAME" --scope "$KEY_VAULT_ID"
    
  4. コンテナー レジストリのパスワードをキー コンテナーに格納します。

    <REGISTRY_PASSWORD> を実際の値に置き換えます。

     az keyvault secret set --vault-name $KEY_VAULT_NAME --name $SECRET_NAME --value "<REGISTRY_PASSWORD>"
    
  5. コンテナー レジストリからパスワードをキー コンテナーに取得します。

     REGISTRY_PASSWORD=$(az keyvault secret show --name $SECRET_NAME --vault-name $KEY_VAULT_NAME --query value --output tsv)
    
  6. Azure Container Apps にコンテナー イメージをデプロイします。

     az containerapp create \
       --name $CONTAINER_APP_NAME \
       --location $LOCATION \
       --resource-group $RESOURCE_GROUP \
       --image $CONTAINER_IMAGE_NAME \
       --environment $CONTAINERAPPS_ENVIRONMENT \
       --registry-server $REGISTRY_SERVER \
       --registry-username $REGISTRY_USERNAME \
       --registry-password $REGISTRY_PASSWORD
    

    コンテナー アプリに対してイングレスを有効にした場合は、create コマンドに --query properties.configuration.ingress.fqdn を追加して、アプリのパブリック URL を返すことができます。

  1. 環境変数を設定します。

     CONTAINER_APP_NAME=my-container-app
     CONTAINER_IMAGE_NAME=mcr.microsoft.com/k8se/quickstart:latest
    
  2. Azure Container Apps にコンテナー イメージをデプロイします。

     az containerapp create \
       --image $CONTAINER_IMAGE_NAME \
       --name $CONTAINER_APP_NAME \
       --resource-group $RESOURCE_GROUP \
       --environment $CONTAINERAPPS_ENVIRONMENT
    

    コンテナー アプリに対してイングレスを有効にした場合は、create コマンドに --query properties.configuration.ingress.fqdn を追加して、アプリのパブリック URL を返すことができます。


デプロイの確認

正常にデプロイされたことを確認するには、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 == $CONTAINER_APP_NAME | project ContainerAppName_s, Log_s, TimeGenerated" \
  --out table

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

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

注意事項

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

az group delete --name $RESOURCE_GROUP

ヒント

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

次のステップ