【有奖征文】天翼云对DSS的公有云改造和后续思路
天翼云对DSS的公有云改造和后续思路
背景
在此之前,中国电信对内的大数据都没有一个统一的入口,我们大数据团队的负责人刚神很早就关注了wedata社区。在开源方面,DataSphere Sdutio(以下简称DSS)作为大数据一站式开发平台是非常优秀的,同类竞品也比较少或者不够完善,所以我们团队选择了DSS。在我们内部使用一段时间后大家的反馈都还不错,同时领导也提出了把dss+linkis改造成公有云版本的建议,我们团队经过讨论达成一致意见并迅速的开展了相关工作,历时2个多月的时间改造完成并且上线。在这期间得到社区的大力支持,特别是强哥、平哥、黄哥等微众大佬的鼎力支持和问题解答,在此深表感谢。以下就改造工作简单做一下分享:
对接天翼云的单点登录
linkis-gateway本身是支持单点登录的,实际接入天翼云cas单点登录也遇到了一些问题,比如:cas回调接口会被网关拦截;2.dss默认设置登陆状态的方法需要移到cas模块,getbaseInfo的设置登陆需要去掉。其他的接入步骤按官方步骤基本上就能正常运行。这块我们也是做成了配置(包括回调接口,重定向地址,ctyun自己的还有appid等) 第一步新建了一个单点登录的模块(我们是ctyunsso)实现SSOInterceptor
trait SSOInterceptor {
/**
* 如果打开SSO单点登录功能,当前端跳转SSO登录页面登录成功后,会重新跳回到DSS首页,这时DSS前端再次请求gateway,
* gateway会通过调用该方法获取已SSO登录的用户,然后将用户写入cookie,保证后续请求可直接放行。
* 您需实现该方法,通过Request返回用户名。
* @param gatewayContext
* @return
*/
def getUser(gatewayContext: GatewayContext): String
/**
* 通过DSS首页Url,用户生成一个可重定向的SSO登录页面URL。
* 要求:需带上requestUrl,以便SSO登录成功后能跳转回来
* @param requestUrl DSS首页URL
* @return 例如: https://${sso_host}:${sso_port}/cas/login?redirectUrl=${requestUrl}
*/
def redirectTo(requestUrl: URI): String
/**
* 用户退出登录时,gateway会调用此接口,以保证gateway清除cookie后,SSO单点登录也会把登录信息清除掉
* @param gatewayContext
*/
def logout(gatewayContext: GatewayContext): Unit
}
第二步 配置和jar包
linkis-gateway增加下面配置
wds.linkis.gateway.conf.enable.sso=true //开启单点登录模式
wds.linkis.gateway.conf.sso.interceptor=cn.ctyun.SSOXX 自己实现的单点登录类
将单点登录模块的jar包放到linkis-gataway/lib 下面
模块可以建在linkis下面,方便打包。
安全性全面增强
对天翼云来说安全有一票否决权,我们的服务都要符合各种安全策略(如https,nginx配置,验证码,代码漏洞扫描都做了改造,弱密码等),以https为例,咨询社区暂时没考虑https,我们自己做了升级https,发现几乎所有模块都有问题,这个url同时也是后端各个模块之前通信的baseurl配置,比如qualitis,visaulis与dss之前的交互,创建删除更新项目等;因为DSS前端模块跳转的链接也要用到这个配置,所以只能配置外网的https baseurl;基本上把所有模块的httpclient,DSS下所有的appjoint,linkis的httpclient都做了改动。兼容了http和https两种调用。(这块应该把前后端url分开,因为时间原因,我们没有改动,实际证明还是应该改的)。

升级改造过程中也修复问题和增加的一些特性 大概20个左右

用户工作空间HA
社区版本用户工作空间目录默认是使用linux目录,需要在linux下建N个用户和目录,还有备份等原因我们选择了hdfs目录,社区也是支持这个功能的,但不太完善,比如前端不支持保存等,后端也存在很多问题需要适配,具体这块的坑,我的同事涛哥会有专门的文章来介绍
用户资源自动开通
社区版本因为没有太多的涉及到用户管理以及用户开通功能的版块,因此我们对这个版块进行了改造:采用代理用户的方式来实现多租户。在早期内部私有化试用阶段,流程上我们通过系统工单形式进行账户申请,技术上采用业务人员手动执行脚本的方式来进行用户开通,涉及到LDAP账户、keytab授权、hdfs目录、hive库表等多个模块的开通与授权工作,采用脚本开通需要付出一定人力成本,出现问题时排查需要付出较多精力。在进行公有云改造时,依托我们近期开发的运维平台优势,将底层资源开通的功能交给了运维平台实现,开发了一个单独的用户授权服务,将整个用户开通流程从脚本调用方式升级为运维平台API调用。当有新用户需求时,天翼云用户中心向用户授权模块下发工单,由用户授权模块调用运维平台,实现对底层资源的开通,实现了用户资源的自动开通;使得各模块职责单一,出现问题后也便于排查,提高了效率。如果这一版块其他小伙伴也存在相同的需求,我们也会将授权模块的实现框架进行开源并与社区探讨整合。

未来展望
现在产品还有很多需要完善的地方,比如分布式(规划如下)。

还有多用户管理,多集群等,新手引导,案例模板等,还有社区1.0发布之后合并到我们的公有云版本
已赞