Istio全局Strict mTLS下Prometheus对接应用指标的疑问
Istio全局Strict mTLS下Prometheus采集应用指标的疑问与解答
问题描述
我正尝试在全局启用Strict mTLS的Istio网格中配置Prometheus。按照Istio文档,已经把Istio证书共享给Prometheus容器,也更新了采集任务来使用这些证书。在同一TLS设置章节里提到:‘控制平面、网关和Envoy sidecar指标将通过明文采集,但应用指标将遵循为工作负载配置的Istio认证策略。’但从istio-init容器的配置能看到,15020端口(指标合并端口)被排除在代理重定向之外,那这种情况下应用指标怎么遵循已配置的认证策略/mTLS?是不是意味着我们应该使用工作负载的原始端口,而非Istio暴露的端口?
附istio-init容器配置:
PROXY_PORT=15001 PROXY_INBOUND_CAPTURE_PORT=15006 PROXY_TUNNEL_PORT=15008 PROXY_UID=1337 PROXY_GID=1337 INBOUND_INTERCEPTION_MODE=REDIRECT INBOUND_TPROXY_MARK=1337 INBOUND_TPROXY_ROUTE_TABLE=133 INBOUND_PORTS_INCLUDE=* INBOUND_PORTS_EXCLUDE=15090,15021,15020
解答
核心逻辑梳理
- 15020端口是Envoy的指标合并端口,它被排除在代理重定向列表外,意味着直接访问这个端口的请求不会经过Istio的mTLS拦截规则,因此这个端口暴露的聚合指标(sidecar+应用)是明文传输的,不会遵循工作负载的认证策略。
- 文档中提到的“应用指标遵循认证策略”,针对的是直接访问工作负载原始端口的场景:当Prometheus请求应用的原始端口时,流量会被Istio sidecar拦截,此时会严格执行全局Strict mTLS策略,只有携带合法Istio证书的请求(即你配置的Prometheus使用共享证书发起的请求)才能通过,进而采集到受mTLS保护的应用指标。
正确采集方案
- 若要符合全局Strict mTLS的安全要求,必须针对工作负载的原始端口配置Prometheus采集任务,同时确保Prometheus使用共享的Istio证书发起TLS请求。
- 15020端口仅适用于不需要mTLS保护的明文指标采集场景,在你的全局Strict mTLS环境下,不建议使用该端口采集应用指标。
内容的提问来源于stack exchange,提问作者Manidhar Vutla
相关产品推荐
相关产品推荐

