以go实现核心和控制台,数据面可接入本地文件、配置中心或者k8s configMap中实现云原生
config.toml中开启自选功能,目前有三种:
- Console:控制台,默认开,端口9800
- Switcher:开关平台,默认开,端口9854
- Logger:日志平台,默认关
当前版本未提供,预计v1.1提供
如果无控制台,用户可以通过cli
操控数据,例如switcher-cli get com.sparrow.Config#isEnabled -n dev
支持计划 | v1.0 | v1.1 | ... |
---|---|---|---|
LocalFile | ✅ | ||
ConfigCenter | ✅ | ||
k8s ConfigMap | ⬜ |
Java-SDK:
- sparrow-client
- sparrow-spring-boot-starter
- sparrow-switcher-spring-boot-starter
- sparrow-logger-spring-boot-starter
相对控制台来说,cli更轻量,其原理就是一个go sdk+cobra
用户权限通过配置Auth.Permits a:b的形式,多个权限用英文逗号隔开即可,禁用权限加前缀-
客户端与控制台共用一套Auth,所以分配权限时请注意
鉴权开关:authEnabled,默认关闭防止用户poc时产生疑问
鉴权规则如下:
*:*
用户拥有所有权限a:b
用户拥有a应用的b权限a:*
用户拥有a应用的所有权限
权限列表
应用 | 功能 | 权限标识 | 备注 |
开关平台Switcher | 查询 | switcher:list | |
注册并初始化|注销 | switcher:register | ||
控制台修改值 | switcher:update | ||
控制台 | 查询配置 | console:config_list |
最佳实践
样例一:java sdk接入sparrow switcher,但是不希望透出修改能力给客户端
authEnbaled = true
[Auth."user1"]
password="pass1"
#拥有switcher所有能力,除了更新
permits="switcher:*,-switcher:update"
样例二:sparrow-cli查询修改switcher配置
authEnbaled = true
[Auth."user1"]
password="pass1"
#拥有switcher所有能力,除了更新
permits="switcher:*"