一、新建过滤器
1. 登录 TSF 控制台。
2. 在左侧导航栏选择应用管理,单击目标应用的 ID,进入应用详情页。
3. 访问 Sidecar过滤器页面,新建过滤器。
·填写过滤器名称以及备注。
·填写过滤器作用位置。
·作为服务端是指:该脚本将在部署组运行启动的微服务作为服务端时生效。
·作为客户端是指:该脚本将在部署组运行启动的微服务作为客户端的时候生效。当选择过滤器位置为客户端时,需要填写被调用的微服务的名称。仅当调用被调服务的时候,过滤器会生效。
·填写脚本内容。脚本需要严格按照 Lua 脚本的格式进行书写。
function envoy_on_request(request_handle) request_handle:headers():add("foo", "bar") end function envoy_on_response(response_handle) body_size = response_handle:body():length() response_handle:headers():add("response-body-size", tostring(body_size)) end
注意:以下为微服务作为服务端时,设置请求响应延迟的示例,该脚本从 HTTP 请求头 header 中读取 x-delay-percent 和 x-delay-duration 字段,然后根据这些字段的值决定是否注入延迟。如果随机数小于 x-delay-percent,则注入延迟(单位:毫秒)。
function envoy_on_request(request_handle) –自定义部分,定义延迟概率和延迟时间的请求头 local delay_percent = tonumber(request_handle:headers():get("x-delay-percent")) local delay_duration = tonumber(request_handle:headers():get("x-delay-duration")) if delay_percent and delay_duration then local random_value = math.random(100) if random_value < delay_percent then request_handle:logInfo("Injecting delay for " .. delay_duration .. " ms") os.execute("sleep " .. tostring(delay_duration / 1000)) end endendfunction envoy_on_response(response_handle) –自定义部分end
有关 Lua 脚本更多的书写原则,可以参见 Envoy 使用文档。
4. 单击提交,完成创建。
二、发布过滤器
创建好的过滤器需要发布才能生效。当前 TSF 支持将同一个过滤器发布到多个部署组上,或将某一个过滤器下线。过滤器也可以发布在离线状态的部署组上,当部署组启动时会将过滤器加载。
在Sidecar过滤器列表页面,单击操作列的发布,勾选要发布的部署组,单击确认,完成发布。