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

在 Azure 应用服务中配置挎斗

本文提供了在应用服务应用中启用和配置挎斗的实际步骤。

在 Azure 门户中创建挎斗

  1. 在 Azure 门户中转到应用服务资源。
  2. 选择 部署中心 并转到“ 容器 ”选项卡。
  3. 单击添加容器以添加边车。
  4. 填写映像名称、注册表身份验证(如果需要)和环境变量。
  5. 保存更改。 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_URL
  • DOCKER_REGISTRY_SERVER_USERNAME
  • DOCKER_REGISTRY_SERVER_PASSWORD
  • WEBSITES_PORT

这些设置不适用于启用侧车的应用程序。

使用 ARM 模板定义挎斗

Microsoft.Web/sites/sitecontainers 资源类型添加到应用。 要使用用户分配的托管标识从 ACR 拉取挎斗映像,请指定 authTypeUserAssigned 提供 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。

对于基于代码的应用:

  1. 创建 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
    
  2. 在应用服务中设置启动命令以运行此脚本。

  3. 运行应用程序,并通过登录到 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 请求发送到此终结点。

要查看端到端指南,请参阅:

从主容器或其他挎斗访问挎斗

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 容器无法使用卷装载。

更多资源