クイック スタート: コマンド ライン を使用して既存のコンテナー イメージをデプロイする
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"
コンテナー アプリの作成
環境が作成されたので、最初のコンテナー アプリをデプロイできます。
環境変数を設定します。
<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>
キー コンテナーを作成します。
Azure Key Vault などのサービスを使用してコンテナー レジストリのパスワードを格納すると、常に値を安全に保ちます。 このセクションでは、キー コンテナーを作成し、コンテナー レジストリのパスワードをキー コンテナーに保存し、コードで使用するためにパスワードを取得する方法を示します。
az keyvault create --name $KEY_VAULT_NAME --resource-group $RESOURCE_GROUP
キー コンテナーでシークレットを管理するアクセス許可をユーザー アカウントに付与する
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"
コンテナー レジストリのパスワードをキー コンテナーに格納します。
<REGISTRY_PASSWORD>
を実際の値に置き換えます。az keyvault secret set --vault-name $KEY_VAULT_NAME --name $SECRET_NAME --value "<REGISTRY_PASSWORD>"
コンテナー レジストリからパスワードをキー コンテナーに取得します。
REGISTRY_PASSWORD=$(az keyvault secret show --name $SECRET_NAME --vault-name $KEY_VAULT_NAME --query value --output tsv)
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 を返すことができます。
環境変数を設定します。
CONTAINER_APP_NAME=my-container-app CONTAINER_IMAGE_NAME=mcr.microsoft.com/k8se/quickstart:latest
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 リポジトリでイシューを開いて、お知らせください。