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

注意

基本、标准和企业计划将从 2025 年 3 月中旬开始弃用,停用期为 3 年。 建议转换到 Azure 容器应用。 有关详细信息,请参阅 Azure Spring Apps 停用公告

标准消耗和专用计划将于 2024 年 9 月 30 日开始弃用,并在六个月后完全关闭。 建议转换到 Azure 容器应用。

本文介绍如何使用 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 Session, None 相关性的类型,此相关性使请求到达响应上一个请求的同一 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 默认 默认值为 GRPC 设置后端协议以指示 NGINX 应如何与后端服务通信。 默认值表示 HTTP/HTTPS/WebSocket。 backend-protocol 设置仅适用于客户端到应用的流量。 对于同一服务实例中的应用到应用流量,为应用到应用流量选择任何协议,无需修改 backend-protocol 设置。 该协议不会限制你为同一服务实例中的应用到应用流量选择协议。
client-auth client-auth 已选择 0 - 选择在 TLS/SSL 设置中上传的包含公钥的证书。 入口会将这些证书合并成一个证书,然后用于客户端身份验证。

先决条件

  • 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 <app-name> \
    --ingress-read-timeout 300 \
    --ingress-send-timeout 60 \
    --session-affinity Cookie \
    --session-max-age 1800 \
    --backend-protocol Default \
    --client-auth-certs <cert-id>

注意

cert-id 值采用 /subscriptions/<your-sub-id>/resourceGroups/<resource-group-name>/providers/Microsoft.AppPlatform/Spring/<service-name>/certificates/<cert-name> 格式。 若要获取 cert-id 值,请使用以下命令:az spring certificate show --service <service-instance-name> --resource-group <resource-group-name> --name <certificate-name> --query id

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

  • 入口读取超时:300 秒
  • 入口发送超时:60 秒
  • 会话亲和性:Cookie
  • 会话 Cookie 最大有效期:1800 秒
  • 后端协议:默认
  • 客户端身份验证:证书名称

更新现有应用的入口设置

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

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

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

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

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

    显示“入口设置”选项卡的 Azure 门户配置页面的屏幕截图。

常见问题解答

  • 如何启用 gRPC?

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

  • 如何启用 WebSocket?

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

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

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

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

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

    使用较短的超时。

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

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

  • 是否支持可配置端口?

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

后续步骤