使用apollo登录成功之后
我们登录到apollo的管理控制台页面
点击系统信息,在系统信息里面我们可以看到当前当前环境下面部署了多少台configserver、adminserver等信息
点击check,监控监控组件的可用性
接下来点击系统参数,在系统参数应用配置 (维护ApolloPortalDB.ServerConfig表数据,如果已存在配置项则会覆盖,否则会创建配置项。配置更新后,一分钟后自动生效),对ApolloPortalDB.ServerConfig表中的属性可以在页面上进行修改,例如我要修改ApolloPortalDB中支持的环境信息,操作如下
直接在页面上面输入apollo.portal.envs,然后修改value的值就可以
这里一定要注意的是,修改系统属性的值,只能是默认的超级管理员apollo这个用户才能修改
系统管理员默认是apollo,只能系统管理员才能够看到下面的菜单
创建应用、删除应用也只能apollo这个超级管理员才能操作
接下来下面我们要创建用户,创建用户必须apollo默认提供一个超级管理员: apollo,可以自行添加用户
接下来我们要创建项目,除了apollo这个超级管理员能操作创建项目,默认情况下我们创建的用户默认都具有创建项目的权限。如果我们想仅仅只有超级管理员和我们制定的用户具有创建项目的权限。我们在系统菜单,系统权限管理中设定
第一步需要在系统参数中设置开启只有超级管理员和制定的用户才能创建应用项目
系统参数中设置 role.create-application.enabled=true 会限制只有超级管理员和拥有创建应用权限的帐号可以创建项目
设置之后在在数据库apollodb中就看到增加了一条记录
我们给我们新创建的王五添加创建应用的权限
我们使用王五登录,就可以看到王五具有创建应用的菜单
接下来我们创建应用点击“创建项目”:account-service,我们使用王五创建应用
. 输入项目信息
部门:选择应用所在的部门
应用AppId:用来标识应用身份的唯一id,格式为string,需要和项目配置文件applications.properties
中配置的app.id对应
应用名称:应用名,仅用于界面展示
应用负责人:选择的人默认会成为该项目的管理员,具备项目权限管理、集群创建、Namespace创建等
权限
这里王五创建的项目,我们给张三分配了应用负责人,那么张三就拥有了项目管理员权限,张三可以在这个应用下面进行项目的管理,创建集群。namespace。以及给用户分配授权,这里王五虽然创建了应用,但是他不是项目管理员权限,所有使用王五登录是无法在account-service这个应用下面创建集群、namespace的
项目创建成功之后,进入项目可以看到当前的应用默认已经有了两个环境、dev、pro
我们使用王五登录,王五在应用下面是无法创建集群和namespace,无法进行项目管理的
点击项目管理会弹出无法进行项目管理的操作权限
虽然王五没有项目管理员权限,不能管项目、不能创建集群、不能创建namespace,但是因为王五是应用的创建者,默认王五具有创建配置项和发布配置项的权限
接下来,我们使用项目管理员张三登录系统
因为张三是项目负责人,可以看到菜单下面会多一个授权的按钮
同理作为超级管理员apollo,登录进来也可以在account-service中看到授权按钮
接下来我们来验证下应用负责人和应用项目管理员的区别
我们创建了一个电商系统的应用,应用负责人是李国胜。项目的管理是李文波,默认情况下应用负责人是默认具有改项目管理员角色的,项目管理员一个应用有多个
但是应用的负责人只有一个,例如一个应用用于负责人只能是一个李国胜,但是项目的具体管理员可以有未元、李文波
我们在项目管理员里面默认可以看到当前项目的项目管理员是李国胜和李文波,只有项目管理员才具有当前应用创建集群、namespace的权限
这里需要特别注意的是只有项目的管理员才能用户项目的管理权限,项目的负责人没有项目的管理权限,这里我们项目的管理员还是李国胜和李文波,我们把项目负责人修改为未元
我们使用未元登录,是无法看到weiyuantest电商系统这个应用的,因为未元虽然是项目负责人,但是没有项目管理员的角色。默认情况下在创建应用的时候,应用负责人是默认具有项目管理员的角色的,
但是也会存在后应用负责人变更的情况,例如创建weiyutest这个应用时候默认的应用负责人是李国胜,默认李国胜是具有项目管理员角色的,现在应用负责人变更为了未元,我们要把项目负责人变更为未元,并且要在上面的管理员菜单上面将李国胜这个管理员删除掉,添加未元具有项目管理员角色
接下来项目管理员创建成功之后,接下来我们是未元登录
点击管理项目,我们进去看下会弹出项目管理的页面
我们可以指定当前项目的项目管理员和修改项目的基本信息
这里指定项目管理员的这个功能非常重要,apollo支持只有超级管理员和默认的管理员才能给项目分配管理员,默认情况下现在weiyuantest这个应用具有两个项目管理员未元、李文波,二者都可以在给
应用添加项目管理员的功能,如果我们要设定只有未元能够添加项目管理员、李文波不能添加管理员,当李文波登录应用之后点击项目管理,不显示管理员这个菜单如何实现了
我们使用超级管理员apollo登录
我们这这里设置,设置只有apollo和未元这个两个账号才具有给应用分配项目管理员角色的功能
操作如下,首先第一步使用apollo账号登录,在系统参数中 role.manage-app-master.enabled设置为true
第二步使用apollo账号登录,在系统权限分配中设置只有哪些账号能够能够分配项目管理员角色,我们添加只有未元能够分配项目管理员角色
这样当未元登录weiyutest的时候,我们看的页面如下
李文波是项目管理员,但是没有给项目管理员分配项目管理员的功能
这里还需要注意一个点,列如我们修改项目负责人为金晋明,但是金晋明是没有项目管理员角色的,金晋明登录的时候是无法访问到电商这个系统的,如果要访问,需要给金晋明分配项目管理员这个角色
我们使用未元这个管理员登录,我们来验证其他的功能
未元具有项目管理员这个角色,这个角色具备下面的功能:
1、能够进行项目管理,给当前的应用分配应用管理员角色、能够修改应用的基本信息
2、能够在当前应用下面创建集群、创建namespace
3、能够给当前的应用授权,运行哪些人能够创建配置项、哪些人审核配置项,创建配置项和审核配置项可以属于不同的人
我们要讲讲授权功能
默认情况下,我们可以看到未元虽然是项目管理员,但是他是没有创建配置项和发布配置项的按钮,如何要分配创建配置项和发布配置项的功能,需要点击授权按钮,进行配置
我们使用未元登录,因为未元是项目管理员能够给当前的应用分配创建配置项和发布配置项的权限,我们分配未元具有发布配置项和管理配置项的权限,授权如下
我们再次重新使用未元登录访问weiyuantest这个项目,我们可以看到这里新增加了发布和新增配置项两个按钮
我们也可以这样进行分配,一个人有创建配置项但是没有发布的权限,需要另外一个人要审核。这就是这句话的作用:应用和配置的管理都有完善的权限管理机制,对配置的管理还分为了编辑和发布两个环节,从而减少人为的错误
接下来要删除我们创建的weiyuantest这个项目,需要使用apollo这个超级管理员才能删除项目
如果要删除整个项目,点击右上角的“管理员工具--》删除应用、集群...”
首先查询出要删除的项目,点击“删除应用
接下来我们进行配置的管理
在weiyuantest项目中进行配置。 首先使用未元登录,然后选中你要在那个环境下面创建配置,我们选中在dev环境下面创建配置
4.4.4 添加Namespace
私钥的Namespace 只能被当前应用访问,公共的namespace可以让多个应用所共享,对于公共的namespace应用可以通过关联公共namespace来覆盖公共Namespace的配置
namespace是应用下面配置的分类
Namespace作为配置的分类,可当成一个配置文件。
以添加rocketmq配置为例,添加“spring-rocketmq” Namespace配置rocketmq相关信息。
以添加redis配置为例,添加“spring-redis” Namespace配置redis相关信息。
1. 添加项目私有Namespace:spring-rocketmq
进入项目首页,点击左下脚的“添加Namespace”,共包括两项:关联公共Namespace和创建Namespace,
这里选择“创建Namespace
这里选择private说明当前的spring-rocketmq这个配置是私有的只能被当前的应用weiyuantest所访问,如果选择为public,说明当前的配置是公共的,其他任何应用都可以访问,spring-rocketmq这个私钥的namespace创建成功之后,接下来会跳转到下面的页面,因为namespace下面可以增加配置项和发布配置项,所以需要给给namespace指定那些人可以在改namespace下面发布配置,哪些人可以在改namespace下面发布配置
接下来应用的主页面就可以看见我们创建的私有的namespace了
接下来我们也可以创建一个公共的namespace,叫spring-redis,只需要选择的时候选择为public就可以了,创建成功之后回到应用的主页面,我们可以看到下面的信息
我们在redis这个namespace下面创建几个配置项
这里我在补充一点:现在是在weiyuantest这个应用中我们创建了一个spring-redis这个公共的配置,公共的配置项apollo的客户端是能够访问任何应用的公共配置的,如何其他的应用如果需要修改公共配置的值,那么在其他的应用中需要关联spring-redis这个公共namespace的值了,然后对里面的值进行覆盖
我们登录另外一个系统,我们选择account-service这个应用
然后在account-service应用下面我们选择创建namespace,然后选择关联公共的namespace,就可以选择上面weiyuantest创建的spring-test这个公共的namespace了
结论:通过命名空间(namespace)可以很方便地支持多个不同应用共享同一份配置,同时还允许应用对共享
的配置进行覆盖
接下来我们要创建集群
在有些情况下,应用有需求对不同的集群做不同的配置,比如部署在A机房的应用连接的RocketMQ服务器地址和
部署在B机房的应用连接的RocketMQ服务器地址不一样。另外在项目开发过程中,也可为不同的开发人员创建不
同的集群来满足开发人员的自定义配置。
我们来创建一个名称为集群1的集群
创建成功之后回到主页面我们可以看到我们创建的集群的信息
对于集群有一个集群同步的功能
同步集群的配置是指在同一个应用中拷贝某个环境下的集群的配置到目标环境下的目标集群。
1. 从其他集群同步已有配置到新集群
切换到原有集群
展开要同步的Namespace,点击同步配置