教程:在 Azure 应用服务中为自定义容器配置边车容器

在本教程中,你会在 Azure 应用服务中将 OpenTelemetry 收集器作为边车容器添加到 Linux 自定义容器应用。 有关自带代码的 Linux 应用,请参阅教程:在 Azure 应用服务中为 Linux 应用配置边车容器

在 Azure 应用服务中,可以为每个启用了边车的自定义容器应用添加最多 9 个边车容器。 挎斗容器让你可以将额外的服务和功能部署到容器应用程序,而无需将它们紧密耦合到主应用程序容器。 例如,可以将监视、日志记录、配置和网络服务添加为挎斗容器。 OpenTelemetry 收集器挎斗就是一个类似的监视例子。

有关应用服务中的边车容器的详细信息,请参阅:

如果没有 Azure 订阅,可在开始前创建一个试用帐户

1.设置所需的资源

首先创建本教程使用的资源。 它们用于此特定方案,挎斗容器通常不需要它们。

  1. 在 Azure CLI 中,运行下列命令:

    git clone https://github.com/Azure-Samples/app-service-sidecar-tutorial-prereqs
    cd app-service-sidecar-tutorial-prereqs
    azd env new my-sidecar-env
    azd provision
    
  2. 出现提示时,请提供所需的订阅和区域。 例如:

    • 订阅:你的订阅。
    • 地区:(亚洲)中国北部 2

    部署完成后,应会看到以下输出:

     APPLICATIONINSIGHTS_CONNECTION_STRING = InstrumentationKey=...;IngestionEndpoint=...;LiveEndpoint=...
    
     Open resource group in the portal: https://portal.azure.cn/#@/resource/subscriptions/.../resourceGroups/...
     
  3. 在浏览器选项卡中打开资源组链接。你稍后需要使用该连接字符串。

    注意

    azd provision 使用包含的模板创建以下 Azure 资源:

2.创建启用挎斗的应用

  1. 在资源组的管理页中,选择“创建”。

  2. 搜索“Web 应用”,然后选择“创建”上的向下箭头并选择“Web 应用”。

    显示 Azure 市场页面的屏幕截图,其中显示在搜索 Web 应用,并在单击“创建 Web 应用”按钮。

  3. 配置“基本信息”面板,如下所示:

    • “名称”:唯一名称
    • 发布容器
    • 操作系统:Linux
    • 区域:与你对 azd provision 所选区域相同
    • Linux 计划:新的应用服务计划

    显示 Web 应用创建向导的屏幕截图,突出显示了 Linux 自定义容器应用的设置。

  4. 选择“容器”。 配置“容器”面板,如下所示:

    • 挎斗支持启用
    • 映像源Azure 容器注册表
    • 注册表:由 azd provision 创建的注册表
    • 映像nginx
    • 标记最新
    • 端口80

    显示 Web 应用创建向导和容器映像设置的屏幕截图,突出显示了挎斗支持。

    注意

    这些设置在启用挎斗的应用中以不同的方式进行配置。 有关详细信息,请参阅启用挎斗的应用的差异

  5. 依次选择“查看 + 创建”、“创建”。

  6. 部署完成后,请选择“转到资源”。

  7. 在新的浏览器选项卡中,导航到 https://<app-name>.chinacloudsites.cn 并查看默认的 Nginx 页面。

3.添加挎斗容器

在本部分中,你将一个挎斗容器添加到你的自定义容器应用。

  1. 在应用的管理页的左侧菜单中,选择“部署中心”。

    部署中心会显示应用中的所有容器。 现在,它只有主容器。

  2. 选择“添加”并配置新容器,如下所示:

    • 名称otel-collector
    • 映像源Azure 容器注册表
    • 注册表:由 azd provision 创建的注册表
    • 映像otel-collector
    • 标记最新
  3. 选择“应用”。

    显示如何在 Web 应用的部署中心配置挎斗容器的屏幕截图。

    现在,你应在部署中心看到两个容器。 主容器标记为“Main”,挎斗容器标记为“Sidecar”。 每个应用必须有一个主容器,但可以有多个挎斗容器。

4.配置环境变量

在示例方案中,otel-collector 挎斗配置为将 OpenTelemetry 数据导出到 Azure Monitor,但它需要连接字符串作为环境变量(请参阅 otel-collector 映像的 OpenTelemetry 配置文件)。

通过配置应用设置来为容器(如任何应用服务应用)配置环境变量。 应用设置可供应用中的所有容器访问。

  1. 在应用的管理页的左侧菜单中,选择“环境变量”。

  2. 通过选择“添加”来添加应用设置,并按如下所示对其进行配置:

    • 名称: APPLICATIONINSIGHTS_CONNECTION_STRING
    • 值:azd provision 的输出中的连接字符串。 如果丢失了 Cloud Shell 会话,还可以在 Application Insight 资源“概述”页面的“连接字符串”下找到它。
  3. 选择“应用”,然后选择“应用”和“确认”

    显示 Web 应用的配置页的屏幕截图,其中添加了两个应用设置。

注意

某些应用设置不适用于启用挎斗的应用。 有关详细信息,请参阅启用挎斗的应用的差异

5.在 Application Insights 中验证

otel-collector 挎斗现在应将数据导出到 Application Insights。

  1. 返回到 https://<app-name>.chinacloudsites.cn 的浏览器选项卡,多次刷新页面以生成一些 Web 请求。

  2. 返回到资源组概述页面,然后选择 Application Insights 资源。 你现在应该会在默认图表中看到一些数据。

    Application Insights 页面的屏幕截图,其中显示了默认图表中的数据。

注意

在此非常常见的监视方案中,Application Insights 只是你可以使用的 OpenTelemetry 目标之一,例如 Jaeger、Prometheus 和 Zipkin。

清理资源

当你不再需要该环境时,可以删除资源组、应用服务和所有相关资源。 在克隆的存储库中,只需在 CLI 中运行以下命令即可:

azd down

边车容器如何处理内部通信?

边车容器将与主容器共享相同的网络主机,因此主容器(和其他边车容器)可以通过 localhost:<port> 到达边车上的任何端口。 这正是 Nginx 容器将数据发送到挎斗的方式(请参阅示例 Nginx 映像的 OpenTelemetry 模块配置)。

在“编辑容器”对话框中,应用服务当前未使用“端口”框。 你可以将其用作边车元数据的一部分,例如指示边车将要侦听的端口。

启用挎斗的应用的差异

配置启用挎斗的应用的方式与配置未启用挎斗的应用的方式不同。 具体而言,你不会使用应用设置来配置主容器和挎斗,而是直接在资源属性中配置。 这些应用设置不适用于启用挎斗的应用:

  • 注册表身份验证设置:DOCKER_REGISTRY_SERVER_URLDOCKER_REGISTRY_SERVER_USERNAMEDOCKER_REGISTRY_SERVER_PASSWORD
  • 容器端口:WEBSITES_PORT

更多资源