如何让Anthos/Cloud Service Mesh自动注入Ingress Gateway时添加--log_as_json参数
如何让托管式Anthos/Cloud Service Mesh自动给Ingress Gateway注入JSON日志参数
问题说明
已通过MeshConfig.AccessLogEncoding将sidecar访问日志设置为JSON格式,需要让ASM自动生成的Ingress Gateway Deployment默认带上--log_as_json容器启动参数,替代手动编辑Pod的临时操作。
可行方案
方案1:全局配置(所有网关生效)
修改ASM的MeshConfig全局配置,让所有自动注入的网关实例默认启用JSON日志格式:
apiVersion: meshconfig.cloud.google.com/v1alpha1 kind: MeshConfig metadata: name: config spec: proxyConfig: logAsJson: true
执行kubectl apply -f <上述配置文件路径>后,新创建或滚动更新的Ingress Gateway Pod会自动包含--log_as_json启动参数。
方案2:局部配置(仅指定网关生效)
若只需为特定Ingress Gateway开启该功能,可在其Deployment的Pod模板中添加proxy.istio.io/config注解,追加目标启动参数:
apiVersion: apps/v1 kind: Deployment ... template: metadata: annotations: inject.istio.io/templates: gateway # 追加JSON日志启动参数 proxy.istio.io/config: | args: - "--log_as_json" ...
滚动更新该Deployment后,新生成的Pod中istio-proxy容器的启动命令会自动带上--log_as_json参数。
验证配置
检查Pod的启动参数是否生效:
# Linux容器环境 kubectl exec -n <网关命名空间> <网关Pod名称> -- ps aux | grep istio-proxy
同时可在Cloud Logging中查看日志,确认格式与手动配置后的示例一致。
内容的提问来源于stack exchange,提问作者albetancourt
相关产品推荐
相关产品推荐

