Skip to content

Releases: slime-io/slime

v0.9.0

15 Dec 06:51
Compare
Choose a tag to compare

依赖更新

  • 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

20 Oct 06:15
0fdd3e5
Compare
Choose a tag to compare

修复/优化

  • 修复了当zk consumer为空时,meshregistry的watch失败导致cpu过高问题
  • 修复meshregistry获取非running状态的pods导致的ip匹配失效问题
  • 修复了meshregistry在特定场景下重连
  • 修复了plugin模块中pluginmanagerlist的错误使用问题
  • 优化了framework configController

v0.8.1

18 Sep 01:51
Compare
Choose a tag to compare

优化

  • 懒加载:不再兜底已经删除的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

Full Changelog: v0.8.0...v0.8.1

v0.8.0

07 Jul 06:10
Compare
Choose a tag to compare

变更

  • 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

08 Jun 03:29
Compare
Choose a tag to compare

修复

  • 修复懒加载模块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


注意注意注意,以下两个变更可能导致懒加载无法使用

  • 我们默认使用request_headers_to_add代替lua插件,但这需要1.14以上支持。如果低于这个版本,可设置addEnvHeaderViaLua: "true"采用lua方式
  • 我们引入了ipv4流量透传,但这需要1.11以及以上支持,如果低于这个版本,可设置disableIpv4Passthrough: true关闭该特性

v0.7.1

27 Apr 09:04
Compare
Choose a tag to compare

修复

  • 修复lazyload启动时部分servicefence被删除再创建的问题
  • 修复lazyload多副本运行时,主从切换导致的部分servicefence被重置的问题
  • 修复meshregistry生成nacos自定义服务名时转化错误的问题
  • 优化limiter模块,使限流规则实时转化成envoyfilter
  • slime基础镜像更新为ubuntu:focal
  • slimeboot支持构建arm64镜像

v0.7.0

24 Mar 08:55
Compare
Choose a tag to compare

新特性

  • 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

Full Changelog: v0.6.0...v0.7.0

v0.6.0

30 Dec 06:12
Compare
Choose a tag to compare

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

New Contributors

Full Changelog: v0.5.0...v0.6.0

v0.5.0

28 Oct 09:33
Compare
Choose a tag to compare

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

    details at #47 and #155

limiter

  • smartlimiter support single and global limiter in gateway scenarios #156 #173 #185

plugin

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

New Contributors

Full Changelog: v0.3.12...v0.5.0

v0.4.0

23 Mar 06:05
Compare
Choose a tag to compare

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 custom name 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.

    Example [here](#140)

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

Full Changelog: v0.3.7...v0.4.0