你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

在 Azure Arc 上创建应用服务应用(预览版)

在本快速入门中,你将为已启用 Azure Arc 的 Kubernetes 群集创建应用服务应用(预览版)。 此方案仅支持 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. 部署一些代码

注意

公共预览版期间不支持 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 获取诊断日志

注意

若要使用 Log Analytics,应在之前安装应用服务扩展时启用它。 如果安装的扩展没有 Log Analytics,请跳过此步骤。

导航到使用应用服务扩展配置的 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 群集中托管的所有应用的应用程序日志将记录到名为 AppServiceConsoleLogs_CL 的自定义日志表中的 Log Analytics 工作区中。

Log_s 包含给定应用服务的应用程序日志,AppName_s 包含应用服务应用名称 。 除了通过应用程序代码写入的日志之外,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/staticsite:latest

若要在创建应用后更新映像,请参阅更改自定义容器的 Docker 映像

后续步骤