Azure 容器应用中的入口

使用 Azure 容器应用,可以通过启用入口,向公共 Web、虚拟网络 (VNET) 以及环境中的其他容器应用公开你的容器应用。 入口设置是通过一组规则实施的,这些规则控制如何将外部和内部流量路由到容器应用。 启用入口时,无需创建 Azure 负载均衡器、公共 IP 地址或任何其他 Azure 资源来启用传入 HTTP 请求或 TCP 流量。

入口支持:

显示两个修订版之间的入口流量拆分的示例入口配置:

Diagram showing an ingress configuration splitting traffic between two revisions.

有关配置详细信息,请参阅配置入口

外部和内部入口

启用入口时,可以在两种类型的入口之间进行选择:

  • 外部:接受来自公共 Internet 和容器应用内部环境的流量。
  • 内部:仅允许从容器应用环境内部进行内部访问。

可为环境中的每个容器应用配置不同的入口设置。 例如,在包含多个微服务应用的方案中,为了提高安全性,你可能只使用一个容器应用来接收公共请求并将请求传递给后台服务。 在此方案中,你将配置具有外部入口的面向公众的容器应用,以及具有内部入口的面向内部的容器应用。

协议类型

容器应用支持两种入口协议:HTTP 和 TCP。

HTTP

启用 HTTP 入口后,你的容器应用:

  • 支持 TLS 终止
  • 支持 HTTP/1.1 和 HTTP/2
  • 支持 WebSocket 和 gRPC
  • 始终使用 TLS 1.2 并在入口点终止的 HTTPS 终结点
  • 公开端口 80(对于 HTTP)和 443(对于 HTTPS)的终结点
    • 默认情况下,对端口 80 的 HTTP 请求会自动重定向到 443 上的 HTTPS
  • 一个完全限定的域名 (FQDN)
  • 请求超时为 240 秒

HTTP 头

HTTP 入口会添加标头,以将有关客户端请求的元数据传递给容器应用。 例如,X-Forwarded-Proto 标头用于标识由客户端用来连接容器应用服务的协议。 下表列出了与容器应用中的入口相关的 HTTP 标头:

标头 描述
X-Forwarded-Proto 由客户端用来连接容器应用服务的协议。 httphttps
X-Forwarded-For 发送请求的客户端的 IP 地址。
X-Forwarded-Host 由客户端用来连接容器应用服务的主机名。

TCP

容器应用支持除 HTTP 或 HTTPS 之外的基于 TCP 的协议。 例如,可以通过 TCP 入口来公开使用 Redis 协议的容器应用。

注意

只有使用自定义 VNET 的容器应用环境才支持外部 TCP 入口。

启用 TCP 入口后,你的容器应用:

  • 可由同一环境中的其他容器应用通过你的容器应用名称(由容器应用资源中的 name 属性定义)和公开的端口号访问。
  • 如果入口设置为“外部”,则可以通过容器应用的完全限定域名 (FQDN) 和公开的端口号从外部访问该应用。

域名

可通过以下方式访问应用:

  • 默认的完全限定域名 (FQDN):根据环境的 DNS 后缀自动为容器应用环境中的每个应用分配一个 FQDN。 若要自定义环境的 DNS 后缀,请参阅自定义环境 DNS 后缀
  • 自定义域名:可为容器应用环境配置自定义 DNS 域。 有关详细信息,请参阅自定义域名和证书
  • 应用名称:可以使用应用名称在同一环境中的应用之间进行通信。

若要获取应用的 FQDN,请参阅位置

IP 限制

容器应用支持对入口进行 IP 限制。 可以创建规则来配置允许或拒绝访问容器应用的 IP 地址。 有关详细信息,请参阅配置 IP 限制

身份验证

Azure 容器应用提供内置的身份验证和授权功能,以保护支持外部入口的容器应用。 有关详细信息,请参阅 Azure 容器应用中的身份验证和授权

可以将应用配置为支持使用客户端证书 (mTLS) 进行身份验证和流量加密。 有关详细信息,请参阅配置客户端证书

流量拆分

容器应用允许在活动修订版之间拆分传入流量。 定义拆分规则时,需要分配传送到不同修订版的入站流量百分比。 有关详细信息,请参阅流量拆分

会话相关性

会话亲和性,也称为粘性会话,是一种用于将来自客户端的所有 HTTP 请求路由到同一容器应用副本的功能。 此功能适用于需要与同一副本建立一致连接的有状态应用程序。 有关详细信息,请参阅会话亲和性

后续步骤