微服务平台 TSF 配置 Sidecar 过滤器

Service Mesh 应用支持在 Sidecar 上运行用户自定义的 Lua 脚本的能力,用户可以自定义一些业务逻辑放在 Sidecar 上执行,来实现一些自定义的业务逻辑(例如在请求头中添加参数、设置服务路由规则等)。配置 Sidecar 过滤器可以大大加强 Mesh 应用的灵活性。

相关产品
微服务平台 TSF 产品页,含版本规格、价格与购买入口。

一、新建过滤器

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过滤器列表页面,单击操作列的发布,勾选要发布的部署组,单击确认,完成发布。

赞 (0)
上一篇 4天前
下一篇 4天前