https://gitee.com/sleepywang1024/easyconfig/blob/master/user-guide.md
easyconfig用户操作指南
面向研发团队(包括产品)配参日常维护及管理工作,介绍easyconfig管理控制台的操作指导。如果你还在做系统的开发建设,请移驾quickstart、开发指南,如果你在早期设计阶段,请移驾设计指南。
easyconfig的管理控制台的默认地址为**/easyconfig-admin/home.html** ,如果重新配置了这个地址,请通过修改后的地址访问。
easyconfig开启内置安全控制机制,需要登陆才能访问。首次访问**/easyconfig-admin/home.html** 时看到不是首页,而是登陆页面,如下所示:
easyconfig内置的默认账号是easy,密码为config。安全考虑,easyconfig用户需要及时修改此账号密码,或者删除此账号。详细操作请参考用户及安全管理。
录入用户名、密码,点击【登录】,easyconfig验证成功后,就可以进入easyconfig首页了,如下示意:
【首页】是easyconfig的门户,通常情况所有用户操作都在这里进行,或者由这里导航到相应功能页面。
easyconfig是系统参数的仓库和库管员。要让它行使管理职责,并不需要你把货物拉过来,easyconfig会自己去拉。
对于系统代码中已经定义的配参,easyconfig能自动检测并展示给出来,供用户选择及导入。而不需要通过线下手段复制粘贴——繁琐且容易出错。
【首页】-> 【配参工具】 -> 【查看并装载】
操作界面如下图所示。展示所有通过@Value、@EasyValue、@ValueEx标注,但并没有纳入到easyconfig管理和更新的配参,都会展示出来。
选中并执行导入,立即生效。
如果不想导入所有,过滤框辅助定位你要导入的内容。
表格列说明
操作选中为待导入项
配参代码属性代码,程序引用配参项使用
推导名称来自@EasyValue 和 @ValueEx的name属性,没有name属性,则为配参代码
当前数值Bean对象中相应属性的当前数值
推导格式基于Bean对象中相应属性,推导的配参数据类型、对象属性等
被适用于当前配参在什么地方被使用了
easyconfig会尝试推导出配参的数据类型和格式,如果是Bean对象,会推导其属性以及各个属性的类型等。这些都会与代码、名称、数值一起导入进来,给配参的管理带来很多便利。
推导的类型和格式还不尽完善,对配参的管理已经有很大帮助,欢迎研发同学在推导的基础上进一步完善,详情参见配参设置与校验。
配参维护和实时更新都是配参管理的核心功能,其它功能围绕这个核心的展开的。
【首页】-> 【编辑】(【操作列】的编辑按钮)
【首页】-> 鼠标双击【配参数值】 单元格
【首页】 -> 【设置】 (【操作列】的设置按钮)
表格列说明
配参代码配参属性的代码,供程序使用、不能修改、自动增序排列
配参名称配参属性的名称,供人阅读、使用,可修改
配参数值配参对应的内容,双击可就地编辑。内容过多时截断展示,悬浮框展示全部。
最后修改配参最后的修改人和 修改时间
操作针对当前配参行的操作:修改、设置、历史、探查及删除。历史 提供恢复功能。
通过鼠标双击配参项的配参数值单元格,可以直接对配参进行修改。
点击【操作列】的编辑按钮具有与双击配参数值同样效果。
通过配参设置功能可以设计配参数值、加解密、以及配参名称、类型、结构、各类约束,管理属性如必需、只读等。特别适合于对复杂数据类型配参的维护,以及用于特殊管理要求的配参维护。
无论是快捷编辑,还是通过设置编辑,都是在客户端进行,不会立即生效。生效需要点击执行**【保存配参】**操作。
【首页】提供配参项过滤查找功能(左侧上部)。输入查找内容时,配参列表实时基于输入进行过滤。
过滤内容包括:代码、名称、数值。
变更历史及恢复功能通过记录修改历史、以及基于修改记录恢复配参,承担了以下管理职责:
问题盘查
合规审计
错误快速恢复
版本快速切换
【主页】 -> 【配参管理】 -> 【管理变更】 -> 【整体回滚】 、 【批次回滚】 、 【批次修复】
【主页]】-> 【历史】(操作列)
单一配参记录的恢复操作在主界面的**【历史】对话框中,恢复操作后,需要保存配参**方能生效。
主要的变更历史记录管理和恢复操作存在于**【管理变更】**页面。如下图所示:
表格列说明
#变更ID,递增,倒序(降序)排列
变更汇总此次变更修改的配参数量、以及变更的说明信息等
变更内容此次变更的详细记录。包括代码、变更动作、修改前后的数值、明文/密文、以及修改前的名称、约束等内容。
变更触发变更由谁在什么时间发起
操作【整体回滚】 、 【批次回滚】 、 【批次恢复】
变更详情的执行次序是由上至下。当执行变更恢复操纵时,系统执行依次执行逆向的反操作:改回原来的状态。当一个变更发生后又连续发生多次变更的情况下,恢复到当前变更时就会出现针对一个配参多次改回的情况,详细记录依次的修改。这种设计会适度增大日志数据,但不影响最终结果。
动作标识动作说明
createdeasyconfig中新建配参项,由没有纳入管理到纳入管理
updated配参项的数值被修改
setup配参项被修改,包括数值、名称、密文/明文、约束等等
deleted配参项被从easyconfig中移除,不再接受其管理
针对一次配参变更的恢复支持两种情况:
【批次回滚】 :把此次变更所涉及的配参,恢复到此次变更之前的内容(此次结果错误,需修复)。
【批次恢复】:把此次变更所涉及的配参,恢复到此次变更之后的内容(此次结果正确,需保留)
把所有配参作为一个整体进行管理维护。
【整体回滚】:从最新(最后)一次变更开始,所有内容逆向依次恢复到当前变更之前(此次修改被恢复)。
配参、属性、变量这些都是技术术语,可用于任意系统和模块。研发的实际情况也是如此,只要是一个系统的,无论属于那个模块,混杂在一起管理。如果配参很多,就变得混乱和不便。
配参分组管理是针对上述问题的解决方案,归属于统一模块的配参放到一起单独管理,与其它配参分开。
分组管理 的基本方式是把相同配参代码前缀的配参归属到一起管理,【管理分组】就是维护分组代码前缀与分组名称的对照表,对于没有定义分组的配参,统一归属到【主页】的默认分组中。
【首页】->【配参管理】 -> 【管理分组】
分组维护界面如下图所示,包括分组的创建、修改、删除。
配参可以在多种环境下配置,除了常见的配置properties、yml文件外,还有命令行参数、操作系统环境变量、配置中心等等。另外,一个配参可以在多处、以多种方式被使用。
配参详情探查 告诉用户配参都在什么地方被配置、配置的数值是什么、以及当前的生效数值是什么。还有配参都在什么地方被使用,使用此配参的对象的相应属性值是什么。通常都会与配参相同,但由于组合表达式的存在、默认值的存在、以及可能的处理异常,也会存在不一致的情况。
总之,配参详情探查帮助用户洞悉配参定义 和 使用,发现问题及不一致,以及评估配参变更对系统的影响。例如easyconfig删除动态配参,系统并不会保持当前数值不变、也不是设置为null或0,而是会导致前一个低优先级配置生效。
【首页】 -> 【探查及删除】 (【操作列】的探查及删除按钮)
【首页】->【配参工具】 -> 【探查工具】
针对已经纳入管理的配参,通过【主页】面【操作列】的探查及删除按钮就可以进行,如下图示意:
针对还没有纳入管理的配参,例如其它模块引用、未使用@Value等标注引用等,可以手工输入配参代码进行探查。如下图示意:
数据项说明
数值配参在数据源中的数值。
来源配参来源的数据源的名称,通常是一些属性文件, easyconfig_dynamic_property_source就是easyconfig自己。
实现配参装载到系统中的实现类。
数据项说明
beanName配参所在对象在Spring中的Bean Name
toString()配参所在对象toString()访问返回值
class配参所在对象的定义类
lib配参所在对象定义类所存放的目录或jar包
数值配参被引用的属性的当前数值
标注配参被引用的属性的标注声明
声明配参被引用的属性的定义声明
已经纳入easyconfig管理的配参,可以通过执行**【删除此配参项】**删除。删除后次一优先级的定义生效。
应用系统的行为除了受研发人员定义的配参,还有受到操作系统环境变量,JAVA运行时变量,以及指定的profiles文件等影响。环境变量查看为用户提供这些信息的查看。
通过动态配参设置,也能对这类变量的数值进行覆盖,但要慎之又慎,动态配参的设置目的是研发人员创建的配参。
【首页】->【辅助功能】 -> 【环境变量】
Profiles。应用系统的active和default的profiles信息。
System Environment。操作系统的环境变量信息。
System Properties。Java相关的环境信息。
把一个系统环境下的全部和部分配参,迁移到另一个环境中,easyconfig为此提供了导出和导入工具。
【首页】->【配参工具】 -> 【导出】
【首页】->【配参工具】 -> 【导入】
【导出】当前页面的所有配参定义,包括代码、名称、数值、约束等。
注:【主页】面上的配参项过滤查找功能,会作用于【导出】功能。也就是只导出当前页面展示的配参。
导入的操作界面如下图所示,导入操作过程如下:
选取配参文件,配参文件必须是easyconfig导出的json格式。
指定更新范围(可选)。导入只更新部分内容,名称、数值、约束复选,默认为选中为数值。
过滤待导记录(可选)。只导入部分配参项,可以通过界面环境下拉框、过滤框进行过滤定位。
选中导入记录(可选)。只导入部分配参项,通过选中/取消精确指定要导入的配参项。
指定导入的环境。
执行**【导入配参(保存后生效)】**。用导入数据更新【主页】相应配参的相应内容。
保存配参(【主页】)到配参数据源。导入操作不是立即生效,行为类似于编辑,需要保存配参方能生效。
针对敏感信息,easyconfig支持已加密的形式保存在数据源,无论研发人员还是运维人员看到的都是密文。 尽管数据源存储的是密文,但应用系统接收到的仍然是明文,否则就无法基于这些配参做事情了。
【首页】 -> 【设置】 (【操作列】的设置按钮) -> 【配参数值】
【首页】 -> 【配参工具】 -> 【加解密工具】
在**【设置】功能的【配参数值】页签,可以对配参进行加解密,只需要选中或取消选中【密文形式保存】** 复选框,然后【确认】及【保存配参】即可。如下图示意所示:
对于一些关键如基础的数据库连接、用户密码之类,且需要第一时间加载的配参,需要easyconfig工作之前生效,前述方法就不可以了。例如easyconfig动态配参数据源的连接用户密码,可以使用脱机方式设置密文。
使用独立的**【加解密工具】**获得密文,然后配置到属性文件中。具体方式是属性文件中放置密文,同时把加密属性的代码登记到easyconfig.cipher-keys属性下(不同加密项的代码逗号分割)。
加解密工具的界面如下图所示:
加解密工具 需要在easyconfig服务已经工作的情况下才能使用,有时候未必方便。还有另外一个更简单的方式,使用java命令行操作,只需要具有easyconfig的jar包即可。如下加解密示意:
java-jar.\easyconfig-core-0.7.0.jar-encrypthelloworld-saltmyappOX6wN3jBTdn+a2VNEuYbiQ==java-jar.\easyconfig-core-0.7.0.jar-decryptOX6wN3jBTdn+a2VNEuYbiQ==-saltmyapphelloworld
注意:
后面这两种加解密方式,是供开发人员研发阶段使用,并且需要配合easyconfig.cipher-keys属性一起使用,用于哪些需要在easyconfig完成启动之前就需要加解密的参数。
普通的配参加解密使用第一种方式即可,方便简单。
配参联机修改、实时生效,会带来更多修改需求,以及更多人的参与,这会导致更多出错机会。详尽的约束定义和修改校验能大幅度较少出错概率。
通过管理控制台编辑配参数值,就会得到相应的校验检查,通不过校验则无法保存。
正常情况下,校验规则设置和配参数值编辑归属于不同阶段的不同工作,校验规则设置属于研发阶段的一次性工作,而配参数值的修改属于测试、运维阶段的日常工作。
约束设置:【首页】 -> 【设置】 (【操作列】的设置按钮)
支持六种数据类型,如下图所示:
类型说明:
类型说明
string文本类型,可进一步约束模式、长度、枚举
boolean布尔类型,true、false取其一
integer整数,可进一步约束范围
number数字,可进一步约束范围
array数组,可约束元素数量、元素类型以及针对元素的约束
object对象,可约束属性清单、属性是否必需,以及针对属性的进一步约束
最大做小长度
文本模式,内置常用模式以及正则表达式
合法候选枚举值,以[,]号分割的文本选项。
### 配参默认值
表示此配参通常情况下的倾向数值,辅助配参数值的设置和恢复。默认值并不能强制约束配参没有被easyconfig设置时,系统采用的默认值,依赖于@Value等标注的默认值、属性文件定义、命令行参数等一系列内容。
表示此配参不能为空,必须设置。
表示此配参不能修改,只能查看。实际中可能是无法动态修改,修改也无效;也可能只是比较关键,防止误操作。
提供描述说明信息以便指导用户,并不作为校验检查内容。
easyconfig提供或编辑完善的JSON Schema规则的能力(如下图示意),系统会根据JSON Schema规则做校验检查。有关JSON Schema的能力和规范,请参考JSON Schema官方文档 。
注:
通过easyconfig已有配参装载加载进来的配参,数据类型已经基于程序中的属性类型进行了推导,满足许多用户的基本需要,简化设置工作。
配参可以先进行修改但不生效,经过确认、审批、或者特定情景满足后(例如1月1日0点)再生效。
easyconfig提供修改保存、修改发布独立操作的能力,并配合权限控制,很好地满足以上需求。
【首页】 -> 【保存-等待发布】
【首页】 -> 【配参管理】->【管理变更】 ->【变更发布】、【灰度发布】、【变更撤销】
配参修改完成后,可以逐步逐节点进行生效,以便能
配参修改在生产环境中测试;
逐步、平稳地配参切换;
发现发布问题及时终止发布;
【首页】 -> 【保存-灰度发布】
或者
【首页】 -> 【保存-等待发布】,然后在【首页】 -> 【配参管理】->【管理变更】 ->【灰度发布】
选择灰度发布后,需要指定要发布的应用节点,确认进行发布后,相关节点配参生效。
在全部节点发布生效完成之前,可以分多次进行,也可以提前终止。
注:终止通常意味着回滚,否则终止也并不意味着相关节点永远不别更新,当节点重启时,没有回滚的内容仍然会被更新。
与springboot类似,easyconfig对多profiles提供支持,且更简便和强大。通过管理控制台,可以动态地维护各个profile的配参信息。
【首页】 -> 【环境:${profile}】
【首页】 -> 【环境:管理环境...】
在管理控制台,可以切换当前管理的环境,以及对当前换环境配参的管理,如下所示。
在管理控制台,可以对应用系统使用的环境进行配置,如下所示。
环境配置可以对环境增删改,但只是方便管理,应用系统节点启用哪些环境,并不由此决定。应用系统启动时,通过配参easyconfig.profiles.active指定所启动实例生效哪些环境。
easyconfig提供了灵活的机制,独立或与宿主应用系统一起管理用户和控制安全。
easyconfig提供四种安全控制方式:none、self、host、mixture,详细信息在developer-guide中介绍,此处主要介绍内置安全模式的操作,即:
easyconfig.security.mode=self
【首页】 -> 【辅助功能】 -> 【管理用户】
用户管理提供对用户的创建(授权)和删除。对于不再允许使用系统的用户,需要进行删除。管理用户如下图所示:
新建用户需要提供用户名(登录名称)、用户密码等, 如下图示意:
针对每一位用户,easyconfig提供功能和数据权限控制,以满足不同的需要。
功能支持四种权限:查看、变更、发布、管理,数据权限针对每一条每一组配参进行,支持三种权限:查看、变更、发布。各种权限语义如下:
查看:查看配参;
变更:对配参进行修改(不包括发布生效);
发布:对修改的配参进行发布(修改相关节点中Spring中的Bean的属性);
管理:管理用户、权限;
访问地址在【首页】 -> {用户菜单}(首页右上角用户名称下拉菜单 -> 【退出登录】。
点击则立即退出,返回到登陆页面。
开启安全控制但没有登陆会自动展示登陆页面。输入用户名、密码正确后可进行登陆。记住我功能默认有效期为30天。
访问地址在【首页】 -> {用户菜单}(首页右上角用户名称下拉菜单 -> 【修改密码】
访问地址在【首页】 -> {用户菜单}(首页右上角用户名称下拉菜单 -> 【切换用户】
点击则转到登陆页面,此时还没有退出,还可以重新返回主页面。