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

Azure 应用服务中的挎斗

在 Linux 应用服务应用(仅代码应用和自定义容器)中,sidecar 是一个辅助容器,可在与主应用容器相同的环境中运行。 Sidecars 可以提供支持服务(例如遥测、缓存或 AI 推理),并作为应用服务应用的一部分进行管理。

为什么在应用服务上使用挎斗?

使用 Sidecars 可以添加新功能,例如监视、缓存、AI 或自定义逻辑,而无需修改主应用程序代码(仅代码应用)或主容器(在自定义容器中)。 优点包括:

  • 关注点分离: 独立于主应用添加或更新服务。
  • 扩展: 集成预生成或自定义扩展(例如 OpenTelemetry、Redis、Datadog、Phi-3/4 AI 模型)。
  • 操作灵活性:挎斗与应用一起管理、升级或扩展。
  • 迁移路径: 从 Docker Compose 或多容器解决方案迁移到托管的可缩放平台(请参阅 将 Docker Compose 应用迁移到 Azure 应用服务中的 sidecars)。

挎斗如何在应用服务中工作?

  • 容器角色: 每个已启用 sidecar 的应用都有一个主容器(isMain: true)和最多 9 个 sidecar 容器(isMain: false)。 在容器配置中, isMain: true 指定主应用容器。 所有其他的必须具有 isMain: false
  • 联网: 应用中的所有容器共享相同的网络命名空间,并通过该 localhost命名空间进行通信。 无需服务名称解析,因此请使用 localhost:<port>。 每个容器必须侦听唯一端口。 外部 HTTP 流量仅支持端口 80 和 8080。 对于内部通信,请使用任何可用的唯一端口。
  • 生命周期:挎斗与主应用容器一起启动、停止和缩放。 当应用横向扩展或缩减时,所有关联的挎斗容器都会自动遵循相同的生命周期。
  • 配置: 可以通过 Azure 门户、ARM 模板或 CLI 配置 Sidecars。 指定每个容器的容器映像、环境变量和其他设置。 应用设置在所有容器之间共享。 还可以设置特定于容器的环境变量。
  • 卷装载:每个容器可以有自己的卷装载。
  • 认证: Sidecars 可以从公共或专用注册表(包括 Azure 容器注册表)拉取映像。 对私有注册表使用托管标识或管理员凭据。

挎斗的类型

  • 自定义挎斗:提供的任何容器映像,例如 OpenTelemetry Collector、NGINX 或你自己的微服务。
  • 预生成扩展: 正式支持的容器用于:
    • AI(Phi-3、Phi-4): 将本地 SLM(小型语言模型)推理添加到应用。
    • Redis: 添加本地 Redis 缓存以快速访问数据。
    • Datadog: 整合 Datadog 监控和可观测性。
    • 随着 Azure 目录的扩展,将会有更多的产品和服务。

常见问题解答

是否可以在现有的 Linux 应用中使用 sidecar?

有关现有的仅限 Linux 代码的应用(内置容器),请参阅 教程:在 Azure 应用服务中为 Linux 应用配置 sidecar 容器

有关现有自定义容器应用,请参阅 为 Linux 自定义容器启用 sidecar 支持

如何监视挎斗和排查挎斗问题?

在 Azure 门户中使用 Azure Monitor、Log Analytics 和 “诊断和解决” 窗格。 应用服务日志流中提供了来自所有容器的日志。

是否有任何限制?

尚不支持应用服务环境(ASE)和国家云。 查看最新的 Azure 文档以获取更新。

更多资源