赞
踩
在11月15号的直播 《Higress 开源背后的发展历程和上手 Demo 演示》中,为大家演示了 Higress 的 Wasm 插件如何面向 Ingress 资源进行配置生效,本文对当天的 Demo 进行一个回顾,并说明背后的原理机制。
本文中 Demo 运行的前提,需要在 K8s 集群中安装了 Higress,并生效了下面这份 quickstart 配置:
https://github.com/alibaba/higress/releases/download/v0.5.2/quickstart.yaml
这个 Demo 要实现的功能是一个 Mock 应答的功能,需要实现根据配置的内容,返回 HTTP 应答。
本文会按以下方式进行介绍:
- package main
-
- import (
- . "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
- }
上面代码中可以看到三个函数:
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。