You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Istio Sidecar未记录Ingress入站流量访问日志问题

问题背景

部署ALB Ingress用于将流量路由至istio-ingressgateway,运行环境版本为 Istio 1.10.0、Kubernetes v1.21.4。
相关资源配置如下:

  • Gateway资源(dev命名空间)
---
apiVersion: networking.istio.io/v1alpha3
kind: Gateway
metadata:
  name: "X-gateway"
  namespace: dev
spec: 
  selector:
    istio: ingressgateway
  servers:
  - port:
      number: 80
      name: http
      protocol: HTTP
    hosts:
    - "dev.xxx.com"
  • VirtualService资源(dev命名空间)
apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
  name: vs-istio-ingress
  namespace: dev
spec:
  gateways:
    - X-gateway
  hosts:
    - "dev.xxx.com"
  http:
     - route:
        - destination:
            host: serviceX
            port:
              number: 8080
  • 关联Service资源(dev命名空间)
apiVersion: v1
kind: Service
metadata:
  namespace: dev
  name: serviceX
  labels:
    app: appX
spec:
  selector:
    app: podX
  ports:
    - port: 8080
  • Istio Operator访问日志配置
spec:
  meshConfig:
    accessLogFile: /dev/stdout
故障现象
  • 经ALB Ingress访问服务时,istio-ingressgateway可正常生成访问日志条目,但单Pod部署的后端服务Sidecar无对应访问日志
  • 服务网格内部其他服务发起的请求,可被该后端服务的Sidecar正常记录访问日志
根因分析

这是Istio 1.10版本的典型配置疏漏导致:

  1. 服务网格内部服务间调用默认自动使用mTLS加密,流量会先打到后端服务Sidecar的15006入站监听端口,经过Sidecar处理后才转发给业务容器,因此Sidecar会正常生成访问日志。
  2. istio-ingressgateway默认转发外部流量到后端服务时,未配置mTLS加密,会直接使用明文HTTP请求访问后端Pod的业务端口(8080)。1.10版本默认的入站流量拦截规则对于来自网关的明文流量存在匹配优先级问题,会直接绕过Sidecar的入站代理逻辑直达业务容器,因此Sidecar不会生成访问记录。
解决方案

按以下步骤配置即可修复:

  1. 确认dev命名空间的mTLS模式为兼容模式(PERMISSIVE),如果已经配置为STRICT模式可跳过这步,直接执行第二步。创建对应PeerAuthentication资源:
apiVersion: security.istio.io/v1beta1
kind: PeerAuthentication
metadata:
  name: default
  namespace: dev
spec:
  mtls:
    mode: PERMISSIVE
  1. 为istio-ingressgateway配置dev命名空间范围的DestinationRule,指定网关转发到网格内服务时使用ISTIO_MUTUAL模式的mTLS,强制网关流量先经过后端Sidecar处理:
apiVersion: networking.istio.io/v1alpha3
kind: DestinationRule
metadata:
  name: enable-mtls-for-gateway
  namespace: istio-system
spec:
  host: "*.dev.svc.cluster.local"
  trafficPolicy:
    tls:
      mode: ISTIO_MUTUAL
  1. 滚动重启dev命名空间下的后端服务Pod和istio-ingressgateway Pod,让配置生效。
    配置生效后再经ALB访问服务,后端服务Sidecar就会正常记录访问日志。

内容的提问来源于stack exchange,提问作者Aladdin Nawasreh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.28 01:54:23