自定义 Azure Spring Apps 中的入口配置

本文介绍如何使用 Azure 门户和 Azure CLI 在 Azure Spring Apps 中设置和更新应用程序的入口设置。

Azure Spring Apps 服务使用基础入口控制器来处理应用程序流量管理。 以下入口设置支持自定义。

名称 入口设置 默认值 有效范围 说明
ingress-read-timeout proxy-read-timeout 300 [1,1800] 从代理服务器读取响应的超时(以秒为单位)。
ingress-send-timeout proxy-send-timeout 60 [1,1800] 将请求传输到代理服务器的超时时间(以秒为单位)。
session-affinity affinity 会话,无 亲和性的类型,这种亲和性将请求变为与响应上一个请求的相同 Pod 副本。 将 session-affinity 设置为 Cookie 以启用会话亲和性。 仅门户中,你必须选中“启用会话亲和性”框。
session-max-age session-cookie-max-age 0 [0, 604800] cookie 过期前的时间(以秒为单位),对应于 Max-Age cookie 指令。 如果将 session-max-age 设置为 0,则过期期限等于浏览器会话期限。
backend-protocol backend-protocol 默认 Default、GRPC 设置后端协议以指示 NGINX 应如何与后端服务通信。 默认值表示 HTTP/HTTPS/WebSocket。 backend-protocol 设置仅适用于客户端到应用的流量。 对于同一服务实例中的应用到应用流量,为应用到应用流量选择任何协议,无需修改 backend-protocol 设置。 该协议不会限制你为同一服务实例中的应用到应用流量选择协议。

先决条件

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

  • 带有 Azure Spring Apps 扩展的 Azure CLI。 使用以下命令删除以前的版本,并安装最新的扩展。 如果以前安装了 spring-cloud 扩展,请卸载它以避免配置和版本不匹配。

    az extension remove --name spring
    az extension add --name spring
    az extension remove --name spring-cloud
    

设置入口配置

创建时使用以下 Azure CLI 命令设置入口配置。

az spring app create \
    --resource-group <resource-group-name> \
    --service <service-name> \
    --name <service-name> \
    --ingress-read-timeout 300 \
    --ingress-send-timeout 60 \
    --session-affinity Cookie \
    --session-max-age 1800 \
    --backend-protocol Default \

此命令使用以下设置创建应用:

  • 入口读取超时:300 秒
  • 入口发送超时:60 秒
  • 会话亲和性:Cookie
  • 会话 Cookie 最大有效期:1800 秒
  • 后端协议:默认

更新现有应用的入口设置

使用以下步骤更新现有服务实例托管的应用程序的入口设置。

  1. 使用与包含 Azure Spring Apps 实例的 Azure 订阅关联的帐户登录到门户。

  2. 导航到“应用”窗格,然后选择要配置的应用。

  3. 导航到“配置”窗格,然后选择“入口设置”选项卡。

  4. 更新入口设置,然后选择“保存”。

    Screenshot of Azure portal Configuration page showing the Ingress settings tab.

常见问题解答

  • 如何启用 gRPC?

    将后端协议设置为“GRPC”。

  • 如何启用 WebSocket?

    如果你将后端协议设置为 Default,则默认启用 WebSocket。 WebSocket 连接限制为 20000。 达到该限制时,连接将失败。

    你还可以使用基于 WebSocket 的 RSocket。

  • 入口配置和入口设置有什么区别?

    入口配置仍然可以在 Azure CLI 和 SDK 中使用,并且该设置将应用于服务实例中的所有应用。 一旦通过入口设置配置了某个应用,入口配置将不会影响此应用。 我们不建议新脚本使用入口配置,因为我们计划在未来停止支持入口配置。

  • 如果入口设置与应用网关/APIM 一起使用,在 Azure Spring应用入口和应用程序网关/APIM 中设置超时时会发生什么情况?

    使用较短的超时。

  • 如果你需要对 gRPC 或 WebSocket 的端到端支持,是否需要在应用程序网关/APIM 中进行额外配置?

    只要应用程序网关支持 gRPC,就不需要进行额外的配置。

  • 是否支持可配置端口?

    当前不支持可配置端口 (80/443)。

后续步骤