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

Azure Arc 上的应用服务、Functions 和逻辑应用(预览)

可在已启用 Azure Arc 的 Kubernetes 群集上运行应用服务、Functions 和逻辑应用。 Kubernetes 群集可以位于本地,也可以托管在第三方云中。 此方法使应用开发人员能够利用应用服务的功能。 同时,它使 IT 管理员能够通过将应用服务应用托管在内部基础结构上来保持公司的合规性。 它还使其他 IT 操作员能够通过在现有 Kubernetes 群集上运行应用服务来保护其先前在其他云提供商中的投资。

注意

若要了解如何为应用服务、Functions 和逻辑应用设置 Kubernetes 群集,请参阅创建应用服务 Kubernetes 环境(预览)

在大多数情况下,应用开发人员只需了解如何部署到正确的 Azure 区域,这些区域代表了已部署的 Kubernetes 环境。 对于提供环境和维护基础 Kubernetes 基础结构的操作员,必须注意以下 Azure 资源:

公共预览版限制

应用服务 Kubernetes 环境适用以下公共预览版限制。 此限制列表会随着更改和功能的推出而更新。

限制 详细信息
支持的 Azure 区域 美国东部、西欧
群集网络要求 必须支持 LoadBalancer 服务类型
群集存储要求 必须具有可供扩展使用的群集附加存储类,才能支持部署和生成基于代码的应用(如果适用)
功能:网络 不可用(取决于群集网络)
功能:托管标识 不可用
功能:密钥保管库引用 不可用(取决于托管标识)
功能:使用托管标识从 ACR 拉取映像 不可用(取决于托管标识)
功能:Functions 和逻辑应用的门户内编辑 不可用
功能:Functions 或密钥的门户列表 如果群集无法公开访问,则不可用
功能:FTP 发布 不可用
日志 Log Analytics 必须配置群集扩展;不是按站点

应用服务扩展创建的 Pod

在已启用 Azure Arc 的 Kubernetes 群集上安装应用服务扩展后,则会在指定的发布命名空间中创建了几个 Pod。 这些 Pod 使 Kubernetes 群集能充当 Azure 中 Microsoft.Web 资源提供程序的扩展,并支持应用的管理和操作。 (可选)可以选择为扩展安装 KEDA 以用于事件驱动的缩放。

下表描述了默认情况下创建的每个 Pod 的角色:

Pod 说明
<extensionName>-k8se-app-controller 在群集上创建资源并维护组件状态的核心运算符 Pod。
<extensionName>-k8se-envoy 用于所有数据平面请求的前端代理层。 它将入站流量路由到正确的应用。
<extensionName>-k8se-activator 备用路由目标,用于帮助在系统获得第一个可用实例时缩放至零的应用。
<extensionName>-k8se-build-service 支持部署操作并提供高级工具功能
<extensionName>-k8se-http-scaler 监视入站请求量以便向 KEDA 提供缩放信息。
<extensionName>-k8se-img-cacher 将占位符和应用图像提取到节点上的本地缓存中。
<extensionName>-k8se-log-processor 从应用和其他组件收集日志并将其发送到 Log Analytics。
placeholder-azure-functions-* 用于加速 Azure Functions 的冷启动。

应用服务 Kubernetes 环境

创建应用需要应用服务 Kubernetes 环境资源。 它使配置能够通用于自定义位置中的应用,例如默认的 DNS 后缀。

一个自定义位置中只能创建一个 Kubernetes 环境资源。 在大多数情况下,创建和部署应用的开发人员不需要直接了解资源。 可以通过提供的自定义位置 ID 直接进行推断。 但是,在定义 Azure 资源管理器模板时,任何计划资源都需要直接引用环境的资源 ID。 计划的自定义位置值必须与指定的环境相匹配。

有关 Azure Arc 上的应用服务、Functions 和逻辑应用(预览)的常见问题解答

费用是多少?

在公共预览版期间,Azure Arc 上的应用服务免费。

是否同时支持 Windows 和 Linux 应用?

代码和自定义容器都仅支持基于 Linux 的应用。 不支持 Windows 应用。

支持哪些内置应用程序堆栈?

支持所有内置 Linux 堆栈。

是否支持所有应用部署类型?

不支持 FTP 部署。 当前也不支持 az webapp up。 支持其他部署方法,包括 Git、ZIP、CI/CD、Visual Studio 和 Visual Studio Code。

支持哪些应用服务功能?

在预览版期间,将验证某些应用服务功能。 如果支持这些选项,将激活 Azure 门户中其左侧的导航选项。 尚不支持的功能保持灰显。

是否支持所有网络功能?

不是。 不支持混合连接或虚拟网络集成等网络功能。 2022 年 4 月添加了访问限制支持。 应在 Kubernetes 群集本身的网络规则中直接处理网络。

是否支持托管标识?

不是。 应用在 Azure Arc 中运行时,无法为其分配托管标识。如果应用需要一个标识以便能使用另一个 Azure 资源,请考虑改用应用程序服务主体

是否存在任何缩放限制?

使用 Azure 应用服务在具有 Azure Arc 的 Kubernetes 上部署的所有应用程序都可以在基础 Kubernetes 群集的限制范围内进行缩放。 如果基础 Kubernetes 群集用尽了可用计算资源(主要是 CPU 和内存),则应用程序将只能缩放到 Kubernetes 可使用可用资源进行计划的应用程序实例数。

收集哪些日志?

系统组件和应用程序的日志均写入标准输出。 可以使用标准 Kubernetes 工具收集这两类日志以进行分析。 还可以使用 Log Analytics 工作区配置应用服务群集扩展,它会将所有日志发送到该工作区。

默认情况下,来自系统组件的日志将发送到 Azure 团队。 不会发送应用程序日志。 可以通过将 logProcessor.enabled=false 设置为扩展配置设置以防止传输这些日志。 此配置设置还会禁止将应用程序转发到 Log Analytics 工作区。 禁用日志处理器可能会影响任何支持案例所需的时间,并且系统会要求你通过一些其他方式从标准输出中收集日志。

如果看到提供程序注册错误,该怎么办?

创建 Kubernetes 环境资源时,一些订阅可能会看到“找不到已注册的资源提供程序”错误。 错误详细信息可能包括一组被视为有效的位置和 API 版本。 如果返回此错误消息,则必须向 Microsoft.Web 提供程序重新注册订阅,该操作不会影响现有应用程序或 API。 若要重新注册,请使用 Azure CLI 运行 az provider register --namespace Microsoft.Web --wait。 然后重新尝试运行 Kubernetes 环境命令。

能否在基于 ARM64 的群集上部署应用程序服务扩展?

目前不支持基于 ARM64 的群集。

可以在哪些 Kubernetes 发行版上部署扩展?

该扩展已在 AKS、Azure Stack HCI 上的 AKS、Google Kubernetes Engine、Amazon Elastic Kubernetes Service 和 Kubernetes 群集 API 上得到验证。

扩展发行说明

应用程序服务扩展 v 0.9.0(2021 年 5 月)

  • 应用程序服务扩展的初始公共预览版。
  • 支持 Web、函数和逻辑应用程序的代码和基于容器的部署。
  • Web 应用程序运行时支持 --- .NET 3.1 和 5.0、Node JS 12 和 14、Python 3.6、3.7 和 3.8、PHP 7.3 和 7.4、Ruby 2.5、2.5.5、2.6 和 2.6.2、Java SE 8u232, 8u242、8u252、11.05、11.06 和 11.07、Tomcat 8.5、8.5.41、8.5.53、8.5.57、9.0、9.0.20、9.0.33 和 9.0.37。

应用程序服务扩展 v 0.10.0(2021 年 11 月)

  • 已删除分配给 Envoy 终结点所需的预分配静态 IP 地址要求
  • 将 Keda 升级到 v2.4.0
  • 将 Envoy 升级到 v1.19.0
  • 将 Azure 函数运行时升级到 v3.3.1
  • 将 App Controller 和 Envoy Controller 的默认副本计数设置为 2,以进一步增加稳定性

如果扩展处于稳定版本,并且 auto-upgrade-minor-version 设置为“true”,扩展将自动升级。 若要手动升级到最新版本的扩展,可以运行以下命令:

    az k8s-extension update --cluster-type connectedClusters -c <clustername> -g <resource group> -n <extension name> --release-train stable --version 0.10.0

应用程序服务扩展 v 0.11.0(2021 年 12 月)

  • 添加了对 Java 和 .NET Web 应用程序的 Application Insights 支持
  • 添加了对 .NET 6.0 Web 应用程序的支持
  • 删除了 .NET Core 2.0
  • 解决了导致插槽交换操作失败的问题
  • 解决了客户在创建 Ruby Web 应用程序期间遇到的问题

如果扩展处于稳定版本,并且 auto-upgrade-minor-version 设置为“true”,扩展将自动升级。 若要手动升级到最新版本的扩展,可以运行以下命令:

    az k8s-extension update --cluster-type connectedClusters -c <clustername> -g <resource group> -n <extension name> --release-train stable --version 0.11.0

应用程序服务扩展 v 0.11.1(2021 年 12 月)

  • 次要版本,解决 CRD 更新问题

如果扩展处于稳定版本,并且 auto-upgrade-minor-version 设置为“true”,扩展将自动升级。 若要手动升级到最新版本的扩展,可以运行以下命令:

    az k8s-extension update --cluster-type connectedClusters -c <clustername> -g <resource group> -n <extension name> --release-train stable --version 0.11.1

应用程序服务扩展 v 0.12.0(2022 年 1 月)

  • 支持出站代理
  • 支持生成服务中的并行生成
  • 将 Envoy 升级到 1.20.1
  • 解决了 Application Insights 对 .NET 应用程序的支持问题

如果扩展处于稳定版本,并且 auto-upgrade-minor-version 设置为“true”,扩展将自动升级。 若要手动升级到最新版本的扩展,可以运行以下命令:

    az k8s-extension update --cluster-type connectedClusters -c <clustername> -g <resource group> -n <extension name> --release-train stable --version 0.12.0

应用程序服务扩展 v 0.12.1(2022 年 3 月)

  • 解决了出站代理支持启用到 Log Analytics 工作区的日志记录的问题

如果扩展处于稳定版本,并且 auto-upgrade-minor-version 设置为“true”,扩展将自动升级。 若要手动升级到最新版本的扩展,可以运行以下命令:

    az k8s-extension update --cluster-type connectedClusters -c <clustername> -g <resource group> -n <extension name> --release-train stable --version 0.12.1

应用程序服务扩展 v 0.12.2(2022 年 3 月)

  • 更新以解决当扩展名长度超过 35 个字符时从 v 0.12.0 进行升级时的升级失败问题

如果扩展处于稳定版本,并且 auto-upgrade-minor-version 设置为“true”,扩展将自动升级。 若要手动升级到最新版本的扩展,可以运行以下命令:

    az k8s-extension update --cluster-type connectedClusters -c <clustername> -g <resource group> -n <extension name> --release-train stable --version 0.12.2

应用程序服务扩展 v 0.13.0(2022 年 4 月)

  • 添加了对 Node JS 应用程序的 Application Insights 无代码集成的支持
  • 添加了对通过 CLI 实施访问限制的支持
  • 在扩展安装失败时提供更多详细信息,以帮助排查问题

如果扩展处于稳定版本,并且 auto-upgrade-minor-version 设置为“true”,扩展将自动升级。 若要手动升级到最新版本的扩展,可以运行以下命令:

    az k8s-extension update --cluster-type connectedClusters -c <clustername> -g <resource group> -n <extension name> --release-train stable --version 0.13.0

应用程序服务扩展 v 0.13.1(2022 年 4 月)

  • 进行了更新,以解决在将群集自动升级到 v 0.13.0 期间出现的升级失败

如果扩展处于稳定版本,并且 auto-upgrade-minor-version 设置为“true”,扩展将自动升级。 若要手动升级到最新版本的扩展,可以运行以下命令:

    az k8s-extension update --cluster-type connectedClusters -c <clustername> -g <resource group> -n <extension name> --release-train stable --version 0.13.1

应用程序服务扩展 v 0.13.5(2023 年 12 月)

  • 更新到 Kubernetes 版本 1.26 及更高版本
  • 将 Envoy 更新为 1.2.1
  • 将 Keda 升级到 v2.10.0
  • 将 EasyAuth 更新为 1.6.20
  • 更新受支持语言的基本映像

如果扩展处于稳定版本,并且 auto-upgrade-minor-version 设置为“true”,扩展将自动升级。 若要手动升级到最新版本的扩展,可以运行以下命令:

    az k8s-extension update --cluster-type connectedClusters -c <clustername> -g <resource group> -n <extension name> --release-train stable --version 0.13.5

后续步骤

创建应用服务 Kubernetes 环境(预览)