你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
本文提供了在应用服务应用中启用和配置挎斗的实际步骤。
在 Azure 门户中创建挎斗
- 在 Azure 门户中转到应用服务资源。
- 选择 部署中心 并转到“ 容器 ”选项卡。
- 单击添加容器以添加边车。
- 填写映像名称、注册表身份验证(如果需要)和环境变量。
- 保存更改。 Sidecar 将与主应用容器一起部署。
启用支持 Linux 自定义容器的 sidecar 功能
对于自定义容器,需要显式启用挎斗支持。 在门户中,可以在 应用服务创建向导中做出选择。 还可以在现有应用程序的 部署中心>容器 页中为现有应用启用它,如以下屏幕截图所示:
使用 Azure CLI,将 Web 应用转换为使用 sitecontainers 配置。 例如:
az webapp sitecontainers convert --mode sitecontainers --name <YourWebAppName> --resource-group <YourResourceGroup>
这会更新LinuxFxVersionsitecontainers对 sidecar 模式的支持并启用支持。
还原为经典自定义容器 (Docker) 模式
如果需要从已启用 sidecar 的配置切换回基于 Docker 的经典设置,请运行以下命令:
az webapp sitecontainers convert \
--mode docker \
--name <app-name> \
--resource-group <resource-group>
此命令将删除所有 sidecar 容器,并将应用重置为使用经典 DOCKER|<image> 样式配置。 有关完整的详细信息,请参阅 Azure az webapp sitecontainers convertCLI 文档。
有关详细信息,请参阅已启用 sidecar 的自定义容器有何区别?
已启用 sidecar 的自定义容器有何区别?
已启用 Sidecar 的应用的配置方式不同于未启用 Sidecar 的应用。
- 已启用挎斗的应用由
LinuxFxVersion=sitecontainers指定并通过sitecontainers资源进行配置。 - 未启用 sidecar 的应用通过
LinuxFxVersion=DOCKER|<image-details>配置容器名称和类型。
有关详细信息,请参阅 az webapp config set --linux-fx-version。
未启用 Sidecar 的应用程序使用应用设置来配置主容器,例如:
DOCKER_REGISTRY_SERVER_URLDOCKER_REGISTRY_SERVER_USERNAMEDOCKER_REGISTRY_SERVER_PASSWORDWEBSITES_PORT
这些设置不适用于启用侧车的应用程序。
使用 ARM 模板定义挎斗
将 Microsoft.Web/sites/sitecontainers 资源类型添加到应用。 要使用用户分配的托管标识从 ACR 拉取挎斗映像,请指定 authType 并 UserAssigned 提供 userManagedIdentityClientId:
{
"type": "Microsoft.Web/sites/sitecontainers",
"apiVersion": "2024-04-01",
"name": "<app-name>/<sidecar-name>",
"properties": {
"image": "<acr-name>.azurecr.io/<image-name>:<version>",
"isMain": false,
"authType": "UserAssigned",
"userManagedIdentityClientId": "<client-id>",
"environmentVariables": [
{ "name": "MY_ENV_VAR", "value": "my-value" }
]
}
}
重要
仅主容器 ("isMain": true) 接收外部流量。 在启用了挎斗支持的 Linux 自定义容器应用中,主容器的 isMain 设置为 true。 所有挎斗容器都应具有 "isMain": false。
有关详细信息,请参阅 Microsoft.Web sites/sitecontainers。
使用 Azure CLI 创建挎斗
使用 az webapp create 创建可使用 Sidecar 的应用程序。 例如:
az webapp create --name <app-name> --resource-group <group-name> --sitecontainers-app
使用 az webapp sitecontainers create 创建挎斗容器。 例如:
az webapp sitecontainers create --name <app-name> --resource-group <group-name> --container-name <container> --image <image> --target-port <port>
使用 JSON 文件创建 sidecar 容器:
az webapp sitecontainers create --name <app-name> --resource-group <group-name> --sitecontainers-spec-file <file-path>
有关所有挎斗命令,请参阅 az webapp sitecontainers。
设置环境变量。
在 Linux 应用中,所有容器(主容器和 sidecars)共享环境变量。 要覆盖挎斗的特定变量,请将其添加到挎斗的配置中。
- 在 ARM 模板中,使用 sidecar 的属性中的
environmentVariables数组。 - 在门户中,在容器配置 UI 中添加环境变量。
- 环境变量可以按名称引用应用设置;该值将在运行时解析。
添加 Redis 挎斗扩展
在 Azure 门户中,可以将 Redis sidecar 扩展添加到应用进行缓存。 Redis sidecar 仅适用于轻型缓存,而不是替代 Azure Redis 缓存。
要使用 Redis 挎斗,请执行以下操作:
- 在应用程序代码中,将 Redis 连接字符串设置为
localhost:6379. - 在应用的启动代码中配置 Redis。
- 使用缓存模式来存储和检索数据。
- 通过访问应用并检查日志来测试缓存使用情况。
添加 Datadog 挎斗扩展
在 Azure 门户中,你可以添加 Datadog sidecar 扩展来收集日志、指标和跟踪,以实现可观测性,而无需修改应用代码。 添加扩展时,请指定 Datadog 帐户信息,以便 sidecar 扩展可以直接将遥测数据传送到 Datadog。
对于基于代码的应用:
创建
startup.sh脚本以下载并初始化 Datadog 追踪器。 以下脚本是 .NET 应用的一个示例:#!/bin/bash # Create log directory. This should correspond to the "Datadog Trace Log Directory" extension setting mkdir -p /home/LogFiles/dotnet # Download the Datadog tracer tarball wget -O /datadog/tracer/datadog-dotnet-apm-2.49.0.tar.gz https://github.com/DataDog/dd-trace-dotnet/releases/download/v2.49.0/datadog-dotnet-apm-2.49.0.tar.gz # Navigate to the tracer directory, extract the tarball, and return to the original directory mkdir -p /datadog/tracer pushd /datadog/tracer tar -zxf datadog-dotnet-apm-2.49.0.tar.gz popd dotnet /home/site/wwwroot/<yourapp>.dll在应用服务中设置启动命令以运行此脚本。
运行应用程序,并通过登录到 Datadog 仪表板来确认遥测数据已交付。
对于基于容器的应用:
在添加 Datadog sidecar 扩展之前,请在 Dockerfile 中添加 Datadog 追踪器设置,类似于适用于基于代码应用的脚本示例。
添加 Phi-3/Phi-4 挎斗扩展
在 Azure 门户中,可以将 Phi-3 或 Phi-4 sidecar 扩展添加到应用,为 AI 工作负载提供本地推理模型。 你的应用必须位于支持推理需求的定价层中。 对于不支持的层,将不会显示 Phi-3/Phi-4 挎斗扩展的选项。
- Phi-3/Phi-4 挎斗在 http://localhost:11434/v1/chat/completions. 公开聊天补全 API
- 添加边车后,由于模型加载,初始启动可能会变慢。
- 若要调用 API,请以 与 OpenAPI 聊天完成 API 相同的样式将 POST 请求发送到此终结点。
要查看端到端指南,请参阅:
- 教程:在应用服务中使用 Phi-4 sidecar 扩展运行聊天机器人 (ASP.NET Core)
- 教程:使用 Phi-4 伴随扩展在应用服务中运行聊天机器人 (Spring Boot)
- 教程:使用 Phi-4 sidecar 扩展在应用服务中运行聊天机器人 (FastAPI)
- 教程:使用 Phi-4 sidecar 扩展在应用服务中运行聊天机器人(Express.js)
从主容器或其他挎斗访问挎斗
Sidecar 容器与主容器共享相同的网络主机。 主容器和其他挎斗可以使用 localhost:<port> 访问挎斗上的任意端口。 例如,如果挎斗在端口 4318 上进行侦听,则主应用可以在 localhost:4318 中访问它。
门户中的 “端口 ”字段只是元数据,应用服务不会用于路由。
添加卷装载
默认情况下,除非禁用,否则默认的 /home 卷会挂载到所有容器。 可以为挎斗配置其他卷装载。
使用卷装载,可以在 Web 应用中的容器之间共享非永久性文件和目录。
- 卷子路径:应用服务创建的逻辑目录路径。 具有相同子路径的容器共享文件。
- 容器装载路径:映射到卷子路径的容器内的目录路径。
示例配置:
| 挎斗名称 | 卷子路径 | 容器装载路径 | 只读 |
|---|---|---|---|
| Container1 | /directory1/directory2 | /container1Vol | 假 |
| Container2 | /directory1/directory2 | /container2Vol | True |
| 容器3 | /directory1/directory2/directory3 | /container3Vol | 假 |
| 容器4 | /directory4 | /container1Vol | 假 |
- 如果 Container1 创建
/container1Vol/myfile.txt,则 Container2 可以通过/container2Vol/myfile.txt读取它。 - 如果 Container1 创建
/container1Vol/directory3/myfile.txt,则 Container2 可以读取/container2Vol/directory3/myfile.txt,而 Container3 可以读取/写入/container3Vol/myfile.txt。 - Container4 不会与他人共享卷。
注释
对于基于代码的 Linux 应用,内置 Linux 容器无法使用卷装载。