跳转到内容

用户权限服务部署说明指南

简介

用户和权限服务是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 地址

img

二开模块发布地址:http://trantor.terminus.io:8082/terminus/gaia

绿色段地址为trantor主metastore地址,红色字段为团队/项目标识 terminus: 团队标识

gaia: 项目标识

拼接成完整的一个发布地址

img

执行元数据发布命令

IDEA控制台执行相关命令

img

发布通用能力draco元数据

Terminal window
mvn clean compile -Dtrantor.deploy -Pdraco

发布通用能力taurus元数据

Terminal window
mvn clean compile -Dtrantor.deploy -Ptaurus

发布parana_user 产品元数据

Terminal window
mvn clean compile -Dtrantor.deploy -Puser

发布二开模块元数据

Terminal window
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的配置文件

img

img

此处主要说明下一些基本的变量,项目侧在拉取壳应用主要变更带你就在环境下的addons

找到对应环境下的配置,本处以development举例。各个环境对应的名称是有约定的。如不了解请移步dice使用文档

主要对应以下几个addons

api-gateway 网关路由服务

redis 缓存服务

registercenter 注册中心

t-rds-dev 数据库服务

trantor-env-dev trantor依赖环境变量服务

rocketmq 消息服务

以上几个服务在部署时需要切换成当前项目的对应服务addons配置

代码推送

此时相关dice配置已完成,这个时候代码还只是在本地,而且代码的git远程仓库地址还是指向的示例工程地址。

移除掉原有的远程仓库,防止这边修改代码影响到示例工程

Terminal window
git remote remove origin

添加git 新的远程仓库地址

Terminal window
git remote add origin 远程仓库地址

添加对应别名,指向需要推送的远程仓库地址

Terminal window
git push -f

此时就完成了项目远程仓库与本地代码的关联

推送uc-front 代码

操作与isv-user-center一致,此处不在描述

应用环境变量配置

此时,代码已经可以部署了,熟悉dice部署流程的同学是不是已经准备开始构建流水线了。。。嗯,别急。让我们把最后一个配置给加上。

添加trantor项目的通用环境变量

该操作需要有dice项目主管以上的权限才可。

  1. 进入项目管理->扩展服务->新增服务

img

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

img

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

img

扩展服务包含的环境变量

ACL_ADMIN_HOST: admin.services--d7b0da5388b1267bc72d4ab46cb131cf.svc.cluster.local:8080
ACL_CLIENT_HOST: admin.services--d7b0da5388b1267bc72d4ab46cb131cf.svc.cluster.local:8080
ACL_MOCK: false
COOKIE_DOMAIN: terminus.io
DS_HOST: datastore.services--62ff95a2066ed4900e309bc737192aa5.svc.cluster.local
DS_PORT: 8080
DS_PROJECT_ID: trantor_uat
LOGIN_SESSION_EXPIRE_TIME: 604800
LOGIN_SHARE_COOKIE_NAME: t_product_demo_pre_u_c
META_STORE_HOST: meta-store.services--62ff95a2066ed4900e309bc737192aa5.svc.cluster.local
META_STORE_PORT: 8080
UC_FRONT_URL: prodcut-demo-uc-front.app.terminus.io
UC_PROTOCOL: https
USER_CENTER_PROTOCOL: dubbo

ACL_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 应用环境变量配置

应用管理页面->参数设置 ->选择对应环境

img

MYSQL_DATABASE=初始化脚本执行的库名

MYSQL_DATABASE 环境变量值配置取决于初始化脚本执行的对应库。

uc-front 应用环境变量配置

配置uc-front应用依赖isv-user-center 服务是否部署成功

WEB_PORT=8080
WEB_HOST=isv-user-center admin内部地址 示例:admin.services--05c70b75b0dff1b5cb2a2e3fb064ea06.svc.cluster.local

应用发布

环境变量配置完成后开始构建流水线

应用管理-> 流水线->新建流水线->选择分支

img

等待完成,正常情况下10分钟以内可以完成部署。如果时间过长请自查下配置,确定是否是健康检查配置有误。

通用配置修改

isv-user-center以及uc-front部署成功后,进入到前端页面,验证登录是否成功。验证完成后,修改通用配置刚刚预设的几个环境变量。

trantor应用配置参数修改

项目管理页搜索trantor,找到交付控制台应用和统一工作台应用

img

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

image.png

修改ACL_CLIENT_HOST和ACL_ADMIN_HOST地址,内部地址获取查看更改通用trantor-env 环境变量

trantor0.14之前还要配置ACL_URL

ACL_URL变量内容修改,查看ACL_URL地址

点击左上角菜单

img

image.png

选择对应项目的环境

image.png

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

image.png

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

image.png

复制url路径前缀地址到ACL_URL环境变量。一共两条记录取不带trantor的路由地址。

trantor交付控制台操作与trantor工作台应用替换为一致

服务重启

1.重启trantor服务

2.需要依赖trantor服务重启完成,重启isv-user-center服务。如有其他服务已经部署完成的,其他服务同样需要重启。