当前位置: 首页 > news >正文

使用envoyfilter添加请求头

该envoyfilter实现了这样一个功能,如果请求头中含有Sw8,则添加请求头HasSw8: true。

1. 内嵌lua脚本

apiVersion: networking.istio.io/v1alpha3
kind: EnvoyFilter
metadata:name: add-header-filternamespace: demo-bookinfo  # 可根据实际情况调整命名空间
spec:workloadSelector:# 应用到的工作负载,若要应用到所有工作负载,可省略 workloadSelectorlabels:app: serviceaconfigPatches:- applyTo: HTTP_FILTERmatch:context: SIDECAR_INBOUND  # 应用到入方向流量proxy:proxyVersion: '^1\.19.*'  # 匹配特定版本的 Istiolistener:filterChain:filter:name: "envoy.filters.network.http_connection_manager"subFilter:name: "envoy.filters.http.router"patch:operation: INSERT_BEFOREvalue:name: envoy.filters.http.luatyped_config:"@type": "type.googleapis.com/envoy.extensions.filters.http.lua.v3.Lua"inlineCode: |function envoy_on_request(request_handle)request_handle:headers():add("Example-Header", "default-value")local sw8_header = request_handle:headers():get("Sw8")if sw8_header thenrequest_handle:headers():add("HasSw8", "true")endend

2. 引入外部文件

先将lua脚本文件放到istio-proxy容器指定目录下(可以通过configmap)。

lua

-- 文件路径: /etc/envoy/lua/add_header.luafunction envoy_on_request(request_handle)-- 添加一个默认的 header,例如 Example-Header: default-valuerequest_handle:headers():add("Example-Header", "default-value")-- 检查是否存在 Sw8 headerlocal sw8_header = request_handle:headers():get("Sw8")if sw8_header then-- 如果存在 Sw8,添加 HasSw8: truerequest_handle:headers():add("HasSw8", "true")end
end

envoyfilter:

apiVersion: networking.istio.io/v1alpha3
kind: EnvoyFilter
metadata:name: lua-header-filternamespace: demo-bookinfo
spec:workloadSelector:labels:app: serviceaconfigPatches:- applyTo: HTTP_FILTERmatch:context: SIDECAR_INBOUND  # 流量方向:入方向listener:filterChain:filter:name: "envoy.filters.network.http_connection_manager"subFilter:name: "envoy.filters.http.router"patch:operation: INSERT_BEFOREvalue:name: envoy.filters.http.luatyped_config:"@type": type.googleapis.com/envoy.extensions.filters.http.lua.v3.Luainline_code: |-- 加载外部 Lua 文件local lua_script = assert(loadfile("/var/lua/add_header.lua"))lua_script()

http://www.lryc.cn/news/512388.html

相关文章:

  • kafka开机自启失败问题处理
  • 优化站群SEO:使用苹果CMS泛目录插件实现泛目录页面刷新不变
  • git clone 和 conda 换源
  • 人工智能及深度学习的一些题目(二)
  • 怎么在VMware Workstation上安装Win11虚拟机?
  • 协程原理 函数栈 有栈协程
  • SpringBoot整合springmvc、扩展springmvc
  • 免费部署本地AI大语言模型聊天系统:Chatbox AI + 马斯克grok2.0大模型(简单5步实现,免费且比GPT4.0更好用)
  • 音视频入门基础:MPEG2-TS专题(22)——FFmpeg源码中,获取TS流的音频信息的实现
  • 从零搭建SpringBoot3+Vue3前后端分离项目基座,中小项目可用
  • 修改表字段属性,SQL总结
  • go-xorm连接
  • Excel 面试 04 查找函数 XLOOKUP
  • Flannel和Calico之对比(Comparison between Flannel and Calico)
  • Spring Boot + Redisson 封装分布式锁
  • QWEN2 模型架构配置;GGUF的概念:实现量化存储
  • window如何将powershell以管理员身份添加到右键菜单?(按住Shift键显示)
  • spring中使用@Validated,什么是JSR 303数据校验,spring boot中怎么使用数据校验
  • 实际部署Dify可能遇到的问题:忘记密码、开启HTTPS、知识库文档上传的大小限制和数量限制
  • mugen
  • CannotRetrieveUpdates alert in disconnected OCP 4 cluster解决
  • 计算机网络 (16)数字链路层的几个共同问题
  • 细说STM32F407单片机通过IIC读写EEPROM 24C02
  • 【AimRT】现代机器人通信中间件 AimRT
  • Unity 读Excel,读取xlsx文件解决方案
  • R基于贝叶斯加法回归树BART、MCMC的DLNM分布滞后非线性模型分析母婴PM2.5暴露与出生体重数据及GAM模型对比、关键窗口识别
  • 【信息系统项目管理师】高分论文:论信息系统项目的沟通管理(信息管理服务一体化平台)
  • 物联网工厂可视化监控平台:为智能制造打造的可视化大屏
  • 3、redis的高可用
  • 数据结构--顺序表(详解)