Azure Arc で App Service アプリを作成する (プレビュー)

このクイックスタートでは、Azure Arc 対応 Kubernetes クラスターに App Service アプリを作成します (プレビュー)。 このシナリオでは Linux アプリのみをサポートし、組み込みの言語スタックまたはカスタム コンテナーを使用できます。

前提条件

Azure CLI の拡張機能を追加する

Azure Cloud Shell で Bash 環境を起動します。

これらの CLI コマンドはまだコア CLI セットに含まれていないため、次のコマンドを使用して追加します。

az extension add --upgrade --yes --name customlocation
az extension remove --name appservice-kube
az extension add --upgrade --yes --name appservice-kube

1. リソース グループを作成する

次のコマンドを実行します。

az group create --name myResourceGroup --location eastus 

2. カスタムの場所を取得する

クラスター管理者から、カスタムの場所に関する次の情報を取得します (カスタムの場所の作成に関するページを参照してください)。

customLocationGroup="<resource-group-containing-custom-location>"
customLocationName="<name-of-custom-location>"

次の手順用にカスタムの場所の ID を取得します。

customLocationId=$(az customlocation show \
    --resource-group $customLocationGroup \
    --name $customLocationName \
    --query id \
    --output tsv)

3. アプリを作成する

次の例では Node.js アプリを作成します。 <app-name> をクラスター内で一意の名前で置き換えます (有効な文字は、a-z0-9、および - です)。

サポートされているランタイム:

説明 CLI のランタイム値
.NET Core 3.1 DOTNETCORE|3.1
.NET 5.0 DOTNETCORE|6.0
Node JS 12 NODE|12-lts
Node JS 14 NODE|14-lts
Python 3.6 PYTHON|3.6
Python 3.7 PYTHON|3.7
Python 3.8 PYTHON|3.8
PHP 7.3 PHP|7.3
PHP 7.4 PHP|7.4
Java 8 JAVA|8-jre8
Java 11 JAVA|11-java11
Tomcat 8.5 TOMCAT|8.5-jre8
Tomcat 8.5 TOMCAT|8.5-java11
Tomcat 9.0 TOMCAT|9.0-jre8
Tomcat 9.0 TOMCAT|9.0-java11
 az webapp create \
    --resource-group myResourceGroup \
    --name <app-name> \
    --custom-location $customLocationId \
    --runtime 'NODE|14-lts'

4. コードをデプロイする

Note

az webapp up は、パブリック プレビュー期間中はサポートされていません。

Git を使用してサンプルの Node.js アプリを取得し、ZIP デプロイを使用してデプロイします。 <app-name> は、Web アプリの名前に置き換えます。

git clone https://github.com/Azure-Samples/nodejs-docs-hello-world
cd nodejs-docs-hello-world
zip -r package.zip .
az webapp config appsettings set --resource-group myResourceGroup --name <app-name> --settings SCM_DO_BUILD_DURING_DEPLOYMENT=true
az webapp deployment source config-zip --resource-group myResourceGroup --name <app-name> --src package.zip

5. Log Analytics を使用して診断ログを取得する

Note

Log Analytics を使用するには、App Service 拡張機能 をインストールするときに有効にしておく必要があります。 Log Analytics なしで拡張機能をインストールした場合は、この手順をスキップします。

App Service 拡張機能で構成されている Log Analytics ワークスペースに移動し、左側のナビゲーションで [ログ] をクリックします。 次のサンプル クエリを実行して、過去 72 時間のログを表示します。 <app-name> は、Web アプリの名前に置き換えます。 クエリの実行中にエラーが発生した場合は、10 分から 15 分後に再試行してください (Log Analytics がアプリケーションからログを受信し始めるまでの間に待ち時間が生じることがあります)。

let StartTime = ago(72h);
let EndTime = now();
AppServiceConsoleLogs_CL
| where TimeGenerated between (StartTime .. EndTime)
| where AppName_s =~ "<app-name>"

Kubernetes クラスターでホストされているすべてのアプリのアプリケーション ログは、Log Analytics ワークスペースで AppServiceConsoleLogs_CL という名前のカスタム ログ テーブルに記録されます。

Log_s には特定の App Service のアプリケーション ログが含まれており、AppName_s には App Service のアプリ名が含まれています。 Log_s 列には、アプリケーション コードを使用して書き込むログに加えて、コンテナーの起動、シャットダウン、および関数アプリのログも含まれています。

ログ クエリの詳細については、Kusto の概要に関する記事を参照してください。

(省略可能) カスタム コンテナーをデプロイする

カスタムのコンテナ化されたアプリを作成するには、--deployment-container-image-name を指定して az webapp create を実行します。 プライベート リポジトリの場合、--docker-registry-server-user--docker-registry-server-password を追加します。

たとえば、次の操作を試してください。

az webapp create \
    --resource-group myResourceGroup \
    --name <app-name> \
    --custom-location $customLocationId \
    --deployment-container-image-name mcr.microsoft.com/appsvc/node:14-lts

アプリの作成後にイメージを更新する方法については、「カスタム コンテナーの Docker イメージを変更する」を参照してください

次の手順