关于wasm:Higress实战-30行代码写一个Wasm-Go插件
前言在11月15号的直播 《Higress 开源背地的倒退历程和上手 Demo 演示》中,为大家演示了 Higress 的 Wasm 插件如何面向 Ingress 资源进行配置失效,本文对当天的 Demo 进行一个回顾,并阐明背地的原理机制。 本文中 Demo 运行的前提,须要在 K8s 集群中装置了 Higress,并失效了上面这份 quickstart 配置:https://github.com/alibaba/hi... 这个 Demo 要实现的性能是一个 Mock 应答的性能,须要实现依据配置的内容,返回 HTTP 应答。 本文会按以下形式进行介绍: 编写代码:代码逻辑解析失效插件:阐明代码如何进行编译打包并部署失效测试插件性能:阐明全局粒度,路由/域名级粒度如何失效插件失效原理:对整体流程进行回顾,阐明插件失效的原理三个革命性的个性:介绍 Wasm 插件机制为网关插件开发带来的改革编写代码 package mainimport ( . "github.com/alibaba/higress/plugins/wasm-go/pkg/wrapper" "github.com/tetratelabs/proxy-wasm-go-sdk/proxywasm" "github.com/tetratelabs/proxy-wasm-go-sdk/proxywasm/types" "github.com/tidwall/gjson")func main() { SetCtx( "my-plugin", ParseConfigBy(parseConfig), ProcessRequestHeadersBy(onHttpRequestHeaders), )}type MyConfig struct { content string}func parseConfig(json gjson.Result, config *MyConfig, log Log) error { config.content = json.Get("content").String() return nil}func onHttpRequestHeaders(ctx HttpContext, config MyConfig, log Log) types.Action { proxywasm.SendHttpResponse(200, nil, []byte(config.content), -1) return types.ActionContinue}下面代码中能够看到三个函数: ...