是否可以使用 istio 为通配符任意主机的出口流量创建 mTLS 源,并具有以下限制:
基本上这个场景与官方文档 Egress using wildcard arbitrary hosts with SNI proxy 中的示例有以下不同:
curl http:\\host1.example.com
。因此,mTLS 发起应该发生在出口网关,而不是应用程序 pod。我尝试了所需的场景,但存在一个问题,即当出口网关将流量路由到 SNI nginx 代理 (sni-proxy
) 时,它无法从 SNI TLS 标头中提取主机名。错误是:*18 no host in upstream ":443"
。 SNI 不是由应用程序 pod (sleep
) 设置的,因为它使用简单的 HTTP,而不是官方示例中的 HTTPS。未设置 SNI 时,SNI 代理无法将流量转发到特定主机。
在这种情况下,是否可以将 istio 出口网关配置为仅使用 ServiceEntry
、DestinationRule
、VirtualService
等资源中的通配符主机名向特定主机发起 mTLS?例如:应用程序 pod 传递 HTTP 请求头参数,如 Host
,出口网关使用它来发起 mTLS 并设置 SNI 头,然后 SNI 代理将使用该参数将流量转发到具体主机?在这种情况下,出口网关将根据 HTTP 请求头动态地向特定主机发起 mTLS 流量?