Releases: slime-io/slime
v0.9.0
依赖更新
- go版本升至1.20
- k8s相关api升至v0.26.0
功能更新
- framework: 支持各模块对外暴露指标
- framework: 支持envoyfilter的proxyVersion特性
- limitger: 支持ip限流
- meshregistry: 支持watch模式下的防抖特性
- plugin:新增在filter级别禁用插件的开关
优化/修复
- lazyload: 修复特定场景下envoyfilter创建丢失rev的问题
- lazyload: 修复了当pods绑定多个svc时,该服务懒加载异常的问题
- limiter: 修复了querymatch和headermatch同时使用的顺序问题
- meshregistry: 修复特定场景下读写锁造成的问题
- meshregistry: 修复实例缩为0时se未更新的问题
- meshregistry: 修复zk连接失败造成的问题
文档
- 更新slime整体架构图和文档
- 更新lazyload流程图和lazyload相关特性文档
What's Changed
- limiter: fix querymatch in global limiter by @MouceL in #448
- lazyload: add istiorev in envoyfilter when create missing envoyfilter by @MouceL in #449
- meshreg: mv update-resource-version from convert func to McpConfigStore.Update to avoid possible race condition by @YonkaFang in #450
- limiter: fix matching order problem by @MouceL in #451
- meshregistry: zk support extract additional config as meta from configurators node by @believening in #452
- lazyload: add proxyVersion match by @Patrick0308 in #425
- meshregistry: fix source concurrent r/w cache map by @YonkaFang in #455
- lazyload: fix incorrect deletion behavior when pod relate to multi sevice by @MouceL in #456
- plugin: Plugin add field disable_on_filter_level by @YonkaFang in #457
- doc: add supported version info by @MouceL in #454
- slime:add prometheus metrics by @MouceL in #458
- limiter: support ip match by @MouceL in #459
- Optimize zk watch mode by @believening in #460
- meshreg: add metrics by @believening in #461
- meshreg: fix zk reconnection mechanism failure by @believening in #466
- meshreg: fix not updated when scaling instances to zero by @believening in #467
- limiter: support add multi ips in one atcions by @MouceL in #462
- update slime arch image and add slime http doc by @MouceL in #464
- meshregistry: zk source support arg SingleAppService,MethodLBServiceSelectors by @YonkaFang in #469
- update go and k8s version by @MouceL in #470
- fix: remove incompatible software packages by @MouceL in #471
- release v0.9.0 by @MouceL in #472
Full Changelog: v0.8.2...v0.9.0
v0.8.2
v0.8.1
优化
- 懒加载:不再兜底已经删除的http port
- 懒加载:将request_header_to_add调整至route级别,减少不必要的header添加
修复
- 服务notready时,pod发出流量,但是懒加载未生效的问题
- 移除了acceslog模式下,patch在兜底逻辑上的ISTIO_META_ISTIO_VERSION信息
- meshregistry修复了一个读写问题引起的panic问题
变更
- 懒加载支持根据黑白名单和selector选择纳管的ns范围
- meshregistry支持ip黑名单过滤
- limiter支持workloader模式下的均分限流
- 增加了参数deployRev,同一个ns可部署多套slime
New Contributors
- @tanjunchen made their first contribution in #405
Full Changelog: v0.8.0...v0.8.1
v0.8.0
变更
- lazyload支持grpc懒加载,用户需配置相关参数使用该功能,具体可参考 grpc懒加载
- lazyload支持特征流量分派,将符合的流量分派到不同Cluster, 具体可参考 特征流量分派
- lazyload支持重置ns级别或者服务级别的servicefence
- meshregistry支持从多个nacos/eureka获取服务信息
- meshregistry支持nacos服务的服务名自定义以及元数据自定义
- meshregistry支持配置热更新
- limiter支持实时生成限流规则envoyfilter
- plugin支持envoyfilter priority的设置
修复
- meshregistry修复首次watch zk失败导致的meshregistry无法正常工作的问题
note
- grpc懒加载处于alpha版本,用户需手动配置slimeboot,具体可参考 grpc懒加载
- 对于v0.7.2中支持的ipv4流量透传,slime用更通用的特征流量分派代替,如需使用, 可参考 特征流量分派 设置正则表达式
contributor
@zackzhangkai made their first contribution in #387
special thanks to @Patrick0308 for contributing to grpc lazyload
v0.7.2
修复
- 修复懒加载模块dispatch特性指定路由与ipv4透传特性冲突的问题 #397
- 修复懒加载模块与低版本istio的(1.11及之前)不支持string_match,导致的兜底路由失效问题 #377
- 修复懒加载模块请求带XFF头时,DownstreamRemote非真实服务ip问题 #376
- 修复懒加载模块多副本运行时,上报到非leader pod,导致调用关系无法生成的问题 #349
- 修复懒加载模块纳管了不支持的grpc端口问题 #356
- 优化懒加载模块获取pod ns信息的逻辑,用request_headers_to_add代替lua插件 #354
- 修复meshregistry模块上游服务未变更时依旧推送数据的问题 #366
- 修复meshregistry模块未真正连接zk的问题 #358)
- 修复meshregistry模块中zk client使用过期dns记录的问题 #355
New Contributors
- @Patrick0308 made their first contribution in #376
注意注意注意,以下两个变更可能导致懒加载无法使用:
- 我们默认使用request_headers_to_add代替lua插件,但这需要1.14以上支持。如果低于这个版本,可设置
addEnvHeaderViaLua: "true"
采用lua方式 - 我们引入了ipv4流量透传,但这需要1.11以及以上支持,如果低于这个版本,可设置
disableIpv4Passthrough: true
关闭该特性
v0.7.1
v0.7.0
新特性
- lazyload: 支持ServiceEntry类型服务,现在可以同时支持K8s Service与ServiceEntry服务
- lazyload: 支持透传ipv4格式的域名请求,避免兜底到global-sidecar
- limiter: 支持请求参数匹配条件
- limiter: 支持限流触发时,自定义响应头
- meshregistry: 支持对接开启认证的Nacos
- framework: 支持作为xds server,对外提供从istio处获取的xds数据
变更
- meshregistry: 优化对ZooKeeper watch模式,请求量最高可降低 50%
- meshregistry: 支持本身配置的热更新,无需重启Slime
- lazyload: gloabal-sidecar新增了service controller,用于在转发前进行域名查询
- limiter: 升级go-control-plane至v0.11.0
- framework: 优化了模块中clientSet的使用
修复
- lazyload: 修复record导致的sidecar无法生成的问题
- lazyload: 修复错误的sidecar gvk导致的无法触发reconcile的问题
- limiter: 修复连续两次相同spec导致无法生成envoyfilter的问题
- framework: 修复了slimeboot中模块开关不生效的问题
详细记录
- Feature istio config source by @YonkaFang in #264
- slime: regenerate api for modules by @believening in #261
- plugin: fix handleSecretChange assign to nil map by @YonkaFang in #268
- startXdsMonitorController not wait for data sync by @YonkaFang in #269
- add license doc by @MouceL in #270
- meshregistry: fix debug api for nacos cache not working by @believening in #272
- slime: make support regenerate proto for framework by @believening in #274
- lazyload: skip refresh when metric result has not changed by @believening in #276
- meshregistry: optimize zk source init watch to avoid dup data transfer and xdsCache api support filter by (gvk, ns) name by @YonkaFang in #280
- meshreg: sync nacos conversion logic with eureka by @believening in #277
- limiter: support queryMatch by @MouceL in #281
- build-tools integrates docker(cli) for building and publishing by @believening in #283
- limiter: go version 1.17 by @MouceL in #285
- Add customize header feature for smartlimiter by @jk-tonycui in #260
- limiter: support workloadselector by @MouceL in #288
- meshregistry: update go-zk to fix infinite re-connect and optimize re… by @YonkaFang in #290
- meshreg: nacos source support security access by @believening in #289
- framework: add initready and init method by @MouceL in #287
- lazyload support workload fence by @MouceL in #291
- fix: wrong sidecar version and serviceEntry in lazyload by @MouceL in #292
- meshregistry: nacos source support filtering instance by @believening in #295
- lazyload: rm record visitor by @MouceL in #294
- nacos source support fetching instances from all namespaces by @believening in #293
- meshregistry: split api dubboCallModel and support param
app
by @YonkaFang in #296 - meshregistry: allows ns and group info to be injected into the meta of nacos instance by @believening in #299
- fix: limiter not take effect by lastUpdatePolicy by @MouceL in #300
- global-sidecar: fix non ns svc by @MouceL in #301
- framework: util.AnyMessage impl JSONPBUnmarshaler by @believening in #302
- fix: lazyload gs svc cache namespace name by @MouceL in #304
- slime: use manager client replace clientSet by @MouceL in #298
- meshregistry: zk source add RefreshSidecarMockServiceEntry logic by @YonkaFang in #305
- meshreg: fix panic of reclose ch in zk watching mode by @believening in #307
- meshregistry support service-scoped endpoint selectors by @believening in #306
- fix resyncPeriod time in informer by @MouceL in #309
- lazyload: add parameter enableShortDomain by @MouceL in #297
- meshreg: add validation for args by @believening in #310
- meshreg: support label values in non-k8s format by @believening in #311
- refactor framework load module config code and meshregistry support dynamic config by @YonkaFang in #312
- meshregistry: support dynamic reload config(esp nacos source) by @YonkaFang in #313
- fix: module enable not take effect by @MouceL in #314
- ci: add GIT_TAG in publish.sh by @MouceL in #317
- rm plugin/fence/limiter in bootstrap config by @MouceL in #315
- meshregistry: sources support generating mock service which contains merged ports by @YonkaFang in #316
- lazyload:passthrough ipv4:port by @MouceL in #318
- meshreg: switch istio/pkg/log to logrus by @believening in #320
- mv bundle to modules/bundle to build all sub-modules by @MouceL in #321
- fix: rm unused field which casued unable to deserialize slimeboot by @MouceL in #322
- update doc to release v0.7.0 by @MouceL in #324
- update slimeboot image to v0.7.0 by @MouceL in #325
New Contributors
- @jk-tonycui made their first contribution in #260
Full Changelog: v0.6.0...v0.7.0
v0.6.0
Feature
- add submodule meshregistry, it can quickly interface with service registries including zk, eureka, nacos, k8s.
- supports high availability
- use clusterrole:slime to replace clusterrole:cluster-admin
- update publish.sh and make it easy to build global-sidecar
- use istioRev to manage cr's reconcile
Fix
- wrong dispatch in template file
- lazyload grpc address in template file
- rm repeated code in lazyload
- gdisable auto shutdown proxy server
Doc
- add slime developer guide
- update slime reademe
- use Chinese as the entrance
- update limiter doc about how to use global ratelimiter
CI
- improve the toolchain to quickly initialize a new slime module
- add BASE_IMAGE to change base image
What's Changed
- lazyload support update wormhole ports by itself by @believening in #198
- update lazyload doc by @cywang1905 in #206
- add selfResourceRev to specified rev in servicefence by @MouceL in #208
- lazyload: support get slimeboot cr by labelselector by @believening in #209
- merge configRev and istioRev to manage resource by @MouceL in #207
- support empty workloadselector in smartlimiter when gw is true by @MouceL in #212
- lazyload: disable timeout for cluster global-sidecar by @believening in #215
- use istioRev to manage cr's reconcile instead of istioRev and configRev by @MouceL in #213
- update limiter doc about how to use global ratelimiter by @MouceL in #218
- update publish.sh and make it easy to build global-sidecar by @MouceL in #220
- add BASE_IMAGE to change base image by @MouceL in #221
- framework: support leader election by @believening in #219
- framework: fix race of waitgroup by @believening in #223
- framework: set the ns of the resourcelock to the same as the workload by @believening in #224
- framework: merge the stage of setup a module by @believening in #226
- framework: add more info about leader election by @believening in #229
- plugin module support leader role switch-over by @YonkaFang in #228
- limiter: support leader election by @MouceL in #227
- slime: rewrite the generator for api and k8s-object by @believening in #214
- lazyload: support leader election by @believening in #225
- framework: fix panic when trigger onStoppedLeading by @believening in #230
- clean up redundant documents by @MouceL in #232
- update doc in en by @MouceL in #236
- slime: support init new module from template by @believening in #235
- Add new module
meshregistry
by @YonkaFang in #239 - add developers guide by @MouceL in #238
- Update README.md by @northhead in #242
- use clusterrole slime replace cluster-admin by @MouceL in #234
- add missing leases in clusterrole slime by @MouceL in #247
- meshregistry: update the renamed dep istio.io/libistio by @YonkaFang in #248
- lazyload: fix words error by @cywang1905 in #249
- fix: rm repeated code in lazyload by @MouceL in #252
- change lazyload grpc address in template file by @MouceL in #253
- fix: dispatch domains in template file by @MouceL in #254
- meshregistry: refactor watching mode of zk source by @believening in #250
- lazyload: add parameters clusterGsNamespace by @MouceL in #255
- meshregistry: fix ep events that may be missed by @believening in #256
- global-sidecar: disable auto shutdown proxy server by @believening in #257
- meshregistry: replace go zk to slime fork by @believening in #258
- update slime doc by @MouceL in #259
New Contributors
- @northhead made their first contribution in #242
Full Changelog: v0.5.0...v0.6.0
v0.5.0
New Features
lazyload
-
manage all namespaces in the service mesh in cluster mode, no need to specify a list of namespaces which enable lazyload, details at #44
-
manage all ports of services, no need to specify a list of ports which enable lazyload, details at #157
-
global-sidecar components support traffic forwarding in disaster recovery scenarios
- Underhand traffic of lazyload goes to the same port as global-sidecar, default 80
- Disaster recovery traffic goes to the same port as the original request in global-sidecar
limiter
plugin
- pluginmanager support more flexible way to configure Wasm Extension and hango Rider Extension #193
framework
- support querying ServiceEntry from framework, the limiter module is supported currently, lazyload module is planned to be supported in the next version #163 #163
Engineering Enhancement
lazyload
- global-sidecar runs in privileged mode #158
- global-sidecar supports customize pod annotations #158
- New params
domainAlias
, support for customised aliases for dependent service, details at #46 - support user-define interface redirection, and support the corresponding custom logic flexible enable #178 #182
- add ReadyManager to Environment #183
plugin
- envoyplugin support configure rds indirectly #20
framework
- passing lables to envoyfilter #177
- supports building multiarch image #195
- support multiline #180
- support configure clientset qps #191
- Add aux-port on slime service #147
- add
apiextensions.k8s.io/v1
crds to spport k8s version >= 1.22 #197 #203
Fix
- ignore services without label selector #168
- ignore situation when accesslog dest is ip #175
- Update the rule of auto complete target service name #45 #170
- multi routes convert to only one configPatch error in plugin #21
- wrong calculation when pods is not ready #176
- multi route covert configPathc unorder in limiter #198
What's Changed
- Update community info by @cywang1905 in #144
- Add aux-port on slime service by @cywang1905 in #147
- support new name of cors envoy filter by @believening in #148
- fix wrong plugin name refer to envoy api by @believening in #149
- Update readme.md by @cywang1905 in #150
- Add github badges by @cywang1905 in #151
- Aggregate slime: move modules to staging dir by @cywang1905 in #152
- Remove .idea content of staging modules & Add GODEBUG by @cywang1905 in #154
- Revert part of #47-Improve global-sidecar request forwarding capabilities by @cywang1905 in #155
- Lazyload supports auto managing svc ports by @cywang1905 in #157
- Fix invalid vs panic and lazyload supports old istio version by @cywang1905 in #158
- plugin: fix the bug that envoyplugin can't patch to ROOT by @believening in #159
- support gw single limit by @MouceL in #156
- Framework supports serviceEntry by @cywang1905 in #163
- Plugin: passing labels to envoyfilter by @believening in #162
- plugin: update readme by @believening in #165
- limiter: get service info through serviceentry when spec.host is specified by @MouceL in #164
- framework update version of dependency k8s by @believening in #167
- lazyload: ignore services without label selector by @cywang1905 in #168
- framework: ignore ep without related svc error by @cywang1905 in #169
- lazyload: fix complete dest svc name error by @cywang1905 in #170
- e2e adapts to the new version of k8s dependencies by @believening in #171
- lazyload: enhanced error log prompting of global-sidecar health check by @cywang1905 in #172
- lazyload: ignore situation when accesslog dest is ip by @cywang1905 in #175
- limiter: skip not runing pods in average ratelimiter by @MouceL in #176
- limiter: passing labels to envoyfilter by @MouceL in #177
- fix publish.sh by @YonkaFang in #179
- framework: supports for path redirect on aux server by @cywang1905 in #178
- three bugfixs for slime framework and bundle example by @cywang1905 in #181
- framework: refactor httpserver pathRedirects and module config support special AnyMessage by @YonkaFang in #182
- logs: support multiline by @MouceL in #180
- add ReadyManager to Environment by @YonkaFang in #183
- engineer: add project docs by @cywang1905 in #184
- Support gw hostlevel ratelimiter by @MouceL in #173
- support global ratelimit in gw by @MouceL in #185
- fix envoyfilter patch disorder when multi routes is specified by @MouceL in #186
- Update CONTRIBUTING_GUILDLINES.md by @cywang1905 in #187
- doc: update slime ROADMAP by @cywang1905 in #188
- limiter: fix extra patches in ef when multi route specified by @MouceL in #189
- framework:add tokenbucket to control the maximum QPS to the master by @MouceL in #191
- Plugin: suppot wasm and rider plugin by @YonkaFang in #193
- publish.sh supports building multiarch image by @MouceL in #195
- support crds version apiextensions.k8s.io/v1 by @MouceL in #197
- add doc about install slime in hango by @MouceL in #200
- update v1 crds and bundle-hango by @MouceL in #203
- update doc about limiter by @MouceL in #202
- update slime-boot.md by @MouceL in #201
- update doc: slime image to v0.5.0 by @MouceL in #204
New Contributors
- @believening made their first contribution in #148
Full Changelog: v0.3.12...v0.5.0
v0.4.0
New Features
-
Add scripts for new module or bundle init #128
1.Support for empty module quick generation
cd bin bash gen_module.sh my_module
2.Support for empty bundle quick generation
cd bin bash gen_bundle.sh my_bundle lazyload limiter
If you want to build docker images, make the new project become git project. After first commit, you can build image then.
-
Support custom args and env for module #133
-
Support for adding custom http handlers in module level #134
Usage Example:
Just add custom http handler in function
InitManager
of lazyload as following, then you have a new api interface/lazyload/xxx
func (mo *Module) InitManager(mgr manager.Manager, env bootstrap.Environment, cbs module.InitCallbacks) error { // register custom api interface env.HttpPathHandler.Handle("xxx", livezHandler()) // ... return nil } func livezHandler() http.Handler { return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { if _, err := w.Write([]byte("Healthy!")); err != nil { log.Errorf("livez probe error, %+v", err) } }) }
-
Module name and kind decoupling #140
In previous version, we use
spec.module.name
to indicate module kind, thus customname
field is not supported. Also, multiple modules of the same type in the same aggregated image are also not supported.Now we add
kind
field for module and submodule to solve these problems. Priority of the same configuration item: sub module > main module > default value.
Engineering Enhancement
-
Split helm templates accroding to modules #127
-
support singel build and multiarch build #136
-
Support getting module config from slimeboot general field #137
-
Support yaml format module config #141
What's Changed
- Split helm templates accroding to modules by @cywang1905 in #127
- Add scripts for new module or bundle init by @cywang1905 in #128
- v1alpha1 to v1alpha2 in install doc by @MouceL in #129
- Util calculate template support map[string]string material by @YonkaFang in #130
- Standardize the naming style of Config.Global.Misc by @cywang1905 in #132
- Support custom args and env for module by @cywang1905 in #133
- Support for adding custom http handlers in module level by @cywang1905 in #134
- add disableGlobalratelimiter in limiter config by @MouceL in #135
- support singel build and multiarch build by @MouceL in #136
- Support getting module config from slimeboot general field by @cywang1905 in #137
- AccessLogSource adds param for cache init by @cywang1905 in #138
- Fix some errors for module general config by @cywang1905 in #139
- Module name and kind decoupling by @cywang1905 in #140
- Support yaml format module config by @cywang1905 in #141
- Update revision matching logic by @cywang1905 in #142
- Support for choosing different envoy filter names by @cywang1905 in #143
Full Changelog: v0.3.7...v0.4.0