用户权限服务部署说明指南
简介
用户和权限服务是Trantor体系中一个很重要的组成部分,Trantor用户和权限服务是独立于底座部署的。文本主要讲解用户权限服务部署的详细说明。
阅读对象
本文主要针对系统开发、部署和运维人员。
壳应用拉取
壳应用仓库地址:
isv-user-center: https://terminus-org.app.terminus.io/terminus/workBench/projects/344/apps/4742/repo
uc-front: https://terminus-org.erda.cloud/terminus/dop/projects/241/apps/5573/repo
元数据发布
配置trantor元数据发布信息
拉取代码之后,修改父pom下的相关地址标品发布地址
地址获取找到项目中对应trantor的主服务metastore 地址

二开模块发布地址:http://trantor.terminus.io:8082/terminus/gaia
绿色段地址为trantor主metastore地址,红色字段为团队/项目标识 terminus: 团队标识
gaia: 项目标识
拼接成完整的一个发布地址

执行元数据发布命令
IDEA控制台执行相关命令

发布通用能力draco元数据
mvn clean compile -Dtrantor.deploy -Pdraco发布通用能力taurus元数据
mvn clean compile -Dtrantor.deploy -Ptaurus发布parana_user 产品元数据
mvn clean compile -Dtrantor.deploy -Puser发布二开模块元数据
mvn clean compile -Dtrantor.deploy初次部署建表语句
因整个用户服务还有部分表未实现trantor化,所以需要手动执行部分建表语句。数据库选择与trantor数据库或者新建数据库都可, 环境变量配置MYSQL_DATABASE=初始化脚本执行的库名
CREATE SCHEMA `draco` DEFAULT CHARACTER SET utf8mb4;CREATE TABLE `uc_user_detail`( `user_id` bigint(20) NOT NULL COMMENT '用户ID', `info` varchar(2048) COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '用户JSON信息', PRIMARY KEY (`user_id`)) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = DYNAMIC COMMENT ='用户信息表';
CREATE TABLE `uc_user_event_log`( `id` bigint(20) NOT NULL AUTO_INCREMENT, `user_id` bigint(20) DEFAULT NULL, `event_type` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL, `event` varchar(512) COLLATE utf8mb4_general_ci DEFAULT NULL, `event_time` datetime DEFAULT NULL, `mac_address` varchar(128) COLLATE utf8mb4_general_ci DEFAULT NULL, `ip` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL, `extra` varchar(2048) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL, `created_at` datetime DEFAULT NULL, `updated_at` datetime DEFAULT NULL COMMENT '更新时间', PRIMARY KEY (`id`), KEY `idx_user_id_event_type` (`user_id`, `event_type`) USING BTREE) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = DYNAMIC COMMENT ='用户事件日志表';
CREATE TABLE `uc_user_third_account`( `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键', `user_id` bigint(20) NOT NULL COMMENT '用户ID', `account_id` varchar(255) COLLATE utf8mb4_general_ci NOT NULL COMMENT '三方账户ID', `account_name` varchar(255) COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '第三方账户名', `account_type` varchar(255) COLLATE utf8mb4_general_ci NOT NULL COMMENT '第三方账户类型:QQ、WECHAT、WECHAT-MP、WEIBO', `app_id` varchar(255) COLLATE utf8mb4_general_ci NOT NULL COMMENT '授权APPID', `open_id` varchar(64) COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT 'OPEN ID', `extra` varchar(2048) COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '扩展JSON字段', `created_at` datetime NOT NULL COMMENT '创建时间', `updated_at` datetime DEFAULT NULL COMMENT '更新时间', PRIMARY KEY (`id`)) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT ='第三方账户';
CREATE TABLE `uc_client_details` ( `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键', `user_id` bigint(20) DEFAULT NULL COMMENT '创建的用户id', `client_id` varchar(255) DEFAULT NULL COMMENT 'clientID', `client_name` varchar(255) DEFAULT NULL COMMENT 'client名称', `client_secret` varchar(255) DEFAULT NULL COMMENT 'client密钥', `access_token_validity` varchar(255) DEFAULT NULL COMMENT 'access token 校验', `access_token_validity_seconds` int(11) DEFAULT NULL COMMENT 'access token 过期时长', `additional_information` varchar(255) DEFAULT NULL COMMENT '额外信息', `authorities` varchar(255) DEFAULT NULL COMMENT '权限', `authorized_grant_types` varchar(255) DEFAULT NULL COMMENT '授权方式', `auto_approve_scopes` varchar(255) DEFAULT NULL COMMENT '自动核准作用域', `refresh_token_validity` varchar(255) DEFAULT NULL COMMENT 'refresh token 校验', `refresh_token_validity_seconds` int(11) DEFAULT NULL COMMENT 'refresh token 过期时长', `registered_redirect_uris` varchar(2048) DEFAULT NULL COMMENT '注册的重定向地址', `resource_ids` varchar(255) DEFAULT NULL COMMENT '资源信息的id', `scope` varchar(255) DEFAULT NULL COMMENT '可使用资源域', `enabled` tinyint(1) NOT NULL DEFAULT '1' COMMENT '是否启用', `deleted` tinyint(1) NOT NULL DEFAULT '0' COMMENT '逻辑删除delete flag (0:not,1:yes)', `created_at` datetime NOT NULL COMMENT '创建时间', `updated_at` datetime DEFAULT NULL COMMENT '更新时间', PRIMARY KEY (`id`)) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 ROW_FORMAT = DYNAMIC;
CREATE TABLE `uc_setting_properties` ( `id` int(11) unsigned NOT NULL AUTO_INCREMENT, `setting_key` varchar(128) NOT NULL DEFAULT '' COMMENT '生效setting key,用于指定 properties 关联到哪个setting上面', `properties` varchar(2048) DEFAULT NULL COMMENT '具体属性值', `created_at` datetime DEFAULT NULL COMMENT '创建时间', `updated_at` datetime DEFAULT NULL COMMENT '更新时间', PRIMARY KEY (`id`), UNIQUE KEY `UN_INDEX_SETTING_KEY` (`setting_key`)) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
CREATE TABLE `uc_distribute_message` ( `id` bigint(20) NOT NULL AUTO_INCREMENT, `err_message` varchar(1024) DEFAULT NULL, `extra` varchar(2048) DEFAULT NULL, `send_num` int DEFAULT NULL, `status` int DEFAULT NULL, `tag` varchar(50) DEFAULT NULL, `message_id` varchar(50) DEFAULT NULL, `body` varchar(4096) DEFAULT NULL, `message_type` varchar(50) Default NULL COMMENT '消息类型,用于消息的反序列化', `created_at` datetime(6) NOT NULL, `updated_at` datetime(6) NOT NULL, PRIMARY KEY (`id`), KEY `idx_dist_retry_and_type` (`tag`,`status`,`send_num`) COMMENT 'tag and sendNum字段索引') ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
ALTER TABLE uc_client_details ADD COLUMN `app_level` tinyint COMMENT '应用等级';ALTER TABLE uc_client_details ADD COLUMN `sensitived` tinyint(1) COMMENT '敏感&非敏感';ALTER TABLE uc_client_details ADD COLUMN `alter_notify_url` varchar(1024) COMMENT '数据变更通知URL';
ALTER TABLE `uc_distribute_message` ADD COLUMN `identify` varchar(32) COMMENT '消息标识';
-- 2020-04-28 修改会员注销问题ALTER TABLE `uc_user_third_account` ADD COLUMN `deleted` tinyint(1) NOT NULL DEFAULT 0 COMMENT '逻辑删除' AFTER `extra` ;
-- 2020-07-29 用户日志增加租户id分割ALTER TABLE `uc_user_event_log` ADD COLUMN `tenant_id` int(20) NOT NULL DEFAULT '1' COMMENT '租户ID';
-- 2020-08-18 用户日志增加操作人信息ALTER TABLE `uc_user_event_log` ADD COLUMN `operator_id` int(20) DEFAULT null COMMENT '操作者ID';
-- 2021-01-04 补全字段和表的注释ALTER TABLE `uc_user_event_log` MODIFY COLUMN `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '事件日志id';ALTER TABLE `uc_user_event_log` MODIFY COLUMN `user_id` bigint(20) DEFAULT NULL COMMENT '用户id';ALTER TABLE `uc_user_event_log` MODIFY COLUMN `event_type` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '事件类型';ALTER TABLE `uc_user_event_log` MODIFY COLUMN `event` varchar(512) COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '事件';ALTER TABLE `uc_user_event_log` MODIFY COLUMN `event_time` datetime DEFAULT NULL COMMENT '事件产生时间';ALTER TABLE `uc_user_event_log` MODIFY COLUMN `mac_address` varchar(128) COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT 'mac地址';ALTER TABLE `uc_user_event_log` MODIFY COLUMN `ip` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '请求ip';ALTER TABLE `uc_user_event_log` MODIFY COLUMN `extra` varchar(2048) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '扩展';ALTER TABLE `uc_user_event_log` MODIFY COLUMN `created_at` datetime DEFAULT NULL COMMENT '创建时间';ALTER TABLE `uc_setting_properties` MODIFY COLUMN `id` int(11) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键';ALTER TABLE `uc_distribute_message` MODIFY COLUMN `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '记录id';ALTER TABLE `uc_distribute_message` MODIFY COLUMN `err_message` varchar(1024) DEFAULT NULL COMMENT '错误信息';ALTER TABLE `uc_distribute_message` MODIFY COLUMN `extra` varchar(2048) DEFAULT NULL COMMENT '扩展字段';ALTER TABLE `uc_distribute_message` MODIFY COLUMN `send_num` int DEFAULT NULL COMMENT '发送次数';ALTER TABLE `uc_distribute_message` MODIFY COLUMN `status` int DEFAULT NULL COMMENT '发送状态';ALTER TABLE `uc_distribute_message` MODIFY COLUMN `tag` varchar(50) DEFAULT NULL COMMENT '消息标签';ALTER TABLE `uc_distribute_message` MODIFY COLUMN `message_id` varchar(50) DEFAULT NULL COMMENT '消息id';ALTER TABLE `uc_distribute_message` MODIFY COLUMN `body` varchar(4096) DEFAULT NULL COMMENT '消息内容';ALTER TABLE `uc_distribute_message` MODIFY COLUMN `created_at` datetime(6) NOT NULL COMMENT '创建时间';ALTER TABLE `uc_distribute_message` MODIFY COLUMN `updated_at` datetime(6) NOT NULL COMMENT '修改时间';ALTER TABLE `uc_client_details` COMMENT '用户客户端详情表';ALTER TABLE `uc_setting_properties` COMMENT '设置属性表';ALTER TABLE `uc_distribute_message` COMMENT '分发消息表';Dice Addons配置
打开项目dice.yml的配置文件


此处主要说明下一些基本的变量,项目侧在拉取壳应用主要变更带你就在环境下的addons
找到对应环境下的配置,本处以development举例。各个环境对应的名称是有约定的。如不了解请移步dice使用文档
主要对应以下几个addons
api-gateway 网关路由服务
redis 缓存服务
registercenter 注册中心
t-rds-dev 数据库服务
trantor-env-dev trantor依赖环境变量服务
rocketmq 消息服务
以上几个服务在部署时需要切换成当前项目的对应服务addons配置
代码推送
此时相关dice配置已完成,这个时候代码还只是在本地,而且代码的git远程仓库地址还是指向的示例工程地址。
移除掉原有的远程仓库,防止这边修改代码影响到示例工程
git remote remove origin添加git 新的远程仓库地址
git remote add origin 远程仓库地址添加对应别名,指向需要推送的远程仓库地址
git push -f此时就完成了项目远程仓库与本地代码的关联
推送uc-front 代码
操作与isv-user-center一致,此处不在描述
应用环境变量配置
此时,代码已经可以部署了,熟悉dice部署流程的同学是不是已经准备开始构建流水线了。。。嗯,别急。让我们把最后一个配置给加上。
添加trantor项目的通用环境变量
该操作需要有dice项目主管以上的权限才可。
- 进入项目管理->扩展服务->新增服务

三方服务选择Custom类型,建议名称统一trantor-env-对应环境缩写,选择对应环境

创建完之后选择文本模式编辑

扩展服务包含的环境变量
ACL_ADMIN_HOST: admin.services--d7b0da5388b1267bc72d4ab46cb131cf.svc.cluster.local:8080ACL_CLIENT_HOST: admin.services--d7b0da5388b1267bc72d4ab46cb131cf.svc.cluster.local:8080ACL_MOCK: falseCOOKIE_DOMAIN: terminus.ioDS_HOST: datastore.services--62ff95a2066ed4900e309bc737192aa5.svc.cluster.localDS_PORT: 8080DS_PROJECT_ID: trantor_uatLOGIN_SESSION_EXPIRE_TIME: 604800LOGIN_SHARE_COOKIE_NAME: t_product_demo_pre_u_cMETA_STORE_HOST: meta-store.services--62ff95a2066ed4900e309bc737192aa5.svc.cluster.localMETA_STORE_PORT: 8080UC_FRONT_URL: prodcut-demo-uc-front.app.terminus.ioUC_PROTOCOL: httpsUSER_CENTER_PROTOCOL: dubboACL_ADMIN_HOST 环境变量是trantor发起鉴权访问的服务地址,走的是http协议。
ACL_CLIENT_HOST 环境变量目前在trantor项目里两者是同一概念。配置成一致即可
ACL_MOCK 是否启用权限鉴权,当为true时,权限会被mock掉。任何账号登录能看到全量菜单。false时账号登录只能看到自己被授权的菜单内容
COOKIE_DOMAIN 解决cookie不能跨域的问题,地址选择当前域名即可。如果服务出现反复跳登录页可能是该环境变量配置有误
DS_HOST trantor datastore 从服务地址
DS_PORT trantor datastore 从服务端口号
DS_PROJECT_ID trantor的数据库名称
LOGIN_SESSION_EXPIRE_TIME 登录态保持登录时间以秒为单位
LOGIN_SHARE_COOKIE_NAME 登录token的cookie key 应用之间保持一致。通过改key获取当前登录用户信息
META_STORE_HOST trantor 从metastore地址
META_STORE_PORT trantor 从metastore端口号
UC_FRONT_URL uc登录页的前端地址
UC_PROTOCOL uc当前登录页协议 http或者https
USER_CENTER_PROTOCOL 获取用户信息协议有两个值http 和dubbo, gaia翻新之后该变量默认为http,不需要配置
初始化时部分环境变量先预设,需要等isv-user-center 和uc-front应用部署完成
应用环境变量配置
isv-user-center 应用环境变量配置
应用管理页面->参数设置 ->选择对应环境

MYSQL_DATABASE=初始化脚本执行的库名MYSQL_DATABASE 环境变量值配置取决于初始化脚本执行的对应库。
uc-front 应用环境变量配置
配置uc-front应用依赖isv-user-center 服务是否部署成功
WEB_PORT=8080WEB_HOST=isv-user-center admin内部地址 示例:admin.services--05c70b75b0dff1b5cb2a2e3fb064ea06.svc.cluster.local应用发布
环境变量配置完成后开始构建流水线
应用管理-> 流水线->新建流水线->选择分支

等待完成,正常情况下10分钟以内可以完成部署。如果时间过长请自查下配置,确定是否是健康检查配置有误。
通用配置修改
isv-user-center以及uc-front部署成功后,进入到前端页面,验证登录是否成功。验证完成后,修改通用配置刚刚预设的几个环境变量。
trantor应用配置参数修改
项目管理页搜索trantor,找到交付控制台应用和统一工作台应用

进入应用管理也,选择应用设置->参数设置,打开对应环境的参数。

修改ACL_CLIENT_HOST和ACL_ADMIN_HOST地址,内部地址获取查看更改通用trantor-env 环境变量
trantor0.14之前还要配置ACL_URL
ACL_URL变量内容修改,查看ACL_URL地址
点击左上角菜单


选择对应项目的环境

选择API网关->流量入口管理 -> 选择统一域名入口->详情

进入详情页->输入应用名称,筛选对应记录

复制url路径前缀地址到ACL_URL环境变量。一共两条记录取不带trantor的路由地址。
trantor交付控制台操作与trantor工作台应用替换为一致
服务重启
1.重启trantor服务
2.需要依赖trantor服务重启完成,重启isv-user-center服务。如有其他服务已经部署完成的,其他服务同样需要重启。