| title | Quickstart: Create a web app on Azure Arc |
|---|---|
| description | Get started with App Service on Azure Arc deploying your first web app. |
| ms.topic | quickstart |
| ms.date | 10/07/2025 |
| ms.custom | mode-other, devx-track-azurecli |
| ms.devlang | azurecli |
| author | msangapu-msft |
| ms.author | msangapu |
| ROBOTS | NOINDEX |
| ms.service | azure-app-service |
Important
Azure App Service on Arc enabled Kubernetes will be retired on March 31, 2026. From September 30, 2025, customers will no longer be able to install the extension. We request you migrate to other solutions such as Azure Container Apps on Arc enabled Kubernetes, migrating also allows you to take advantage of Logic Apps Hybrid for your integration workloads.
In this quickstart, you create an App Service app to an Azure Arc-enabled Kubernetes cluster (Preview). This scenario supports Linux apps only, and you can use a built-in language stack or a custom container.
[!INCLUDE app-service-arc-cli-install-extensions]
Run the following command.
az group create --name myResourceGroup --location eastus
[!INCLUDE app-service-arc-get-custom-location]
The following example creates a Node.js app. Replace <app-name> with a name that's unique within your cluster (valid characters are a-z, 0-9, and -).
Supported runtimes:
| Description | Runtime Value for CLI |
|---|---|
| .NET Core 8.0 | DOTNETCORE|8.0 |
| .NET 5.0 | DOTNETCORE|9.0 |
| .NET 5.0 | DOTNETCORE|10.0 |
| Node JS 20 | NODE|20-lts |
| Node JS 22 | NODE|22-lts |
| Node JS 24 | NODE|24-lts |
| Python 3.10 | PYTHON|3.10 |
| Python 3.11 | PYTHON|3.11 |
| Python 3.12 | PYTHON|3.12 |
| Python 3.13 | PYTHON|3.13 |
| Python 3.14 | PYTHON|3.14 |
| PHP 8.1 | PHP|8.1 |
| PHP 8.2 | PHP|8.2 |
| PHP 8.3 | PHP|8.3 |
| PHP 8.4 | PHP|8.4 |
| Java 8 | JAVA|8-jre8 |
| Java 11 | JAVA|11-java11 |
| Java 17 | JAVA|17-java17 |
| Java 21 | JAVA|21-java21 |
| Tomcat 9.0 | TOMCAT|9.0-jre8 |
| Tomcat 9.0 | TOMCAT|9.0-java11 |
| Tomcat 9.0 | TOMCAT|9.0-java17 |
| Tomcat 9.0 | TOMCAT|9.0-java21 |
| Tomcat 10.1 | TOMCAT|10.1-java11 |
| Tomcat 10.1 | TOMCAT|10.1-java17 |
| Tomcat 10.1 | TOMCAT|10.1-java21 |
| Tomcat 11.0 | TOMCAT|11.0-java11 |
| Tomcat 11.0 | TOMCAT|11.0-java17 |
| Tomcat 11.0 | TOMCAT|11.0-java21 |
az webapp create \
--resource-group myResourceGroup \
--name <app-name> \
--custom-location $customLocationId \
--runtime 'NODE|24-lts'
Note
az webapp up is not supported during the public preview.
Get a sample Node.js app using Git and deploy it using ZIP deploy. Replace <app-name> with your web app name.
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 deploy --resource-group myResourceGroup --name <app-name> --src-path package.zip
Note
To use Log Analytics, you should've previously enabled it when installing the App Service extension. If you installed the extension without Log Analytics, skip this step.
Navigate to the Log Analytics workspace that's configured with your App Service extension, then click Logs in the left navigation. Run the following sample query to show logs over the past 72 hours. Replace <app-name> with your web app name. If there's an error when running a query, try again in 10-15 minutes (there may be a delay for Log Analytics to start receiving logs from your application).
let StartTime = ago(72h);
let EndTime = now();
AppServiceConsoleLogs_CL
| where TimeGenerated between (StartTime .. EndTime)
| where AppName_s =~ "<app-name>"The application logs for all the apps hosted in your Kubernetes cluster are logged to the Log Analytics workspace in the custom log table named AppServiceConsoleLogs_CL.
Log_s contains application logs for a given App Service and AppName_s contains the App Service app name. In addition to logs you write via your application code, the Log_s column also contains logs on container startup, shutdown, and Function Apps.
You can learn more about log queries in getting started with Kusto.
To create a custom containerized app, run az webapp create with --deployment-container-image-name. For a private repository, add --docker-registry-server-user and --docker-registry-server-password.
For example, try:
az webapp create \
--resource-group myResourceGroup \
--name <app-name> \
--custom-location $customLocationId \
--deployment-container-image-name mcr.microsoft.com/appsvc/staticsite:latest
To update the image after the app is create, see Change the Docker image of a custom container