Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

【有奖征文】天翼云对DSS的公有云改造和后续思路 #17

Open
det101 opened this issue Nov 16, 2020 · 2 comments
Open

【有奖征文】天翼云对DSS的公有云改造和后续思路 #17

det101 opened this issue Nov 16, 2020 · 2 comments

Comments

@det101
Copy link

det101 commented Nov 16, 2020

天翼云对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分开,因为时间原因,我们没有改动,实际证明还是应该改的)。
image

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

用户工作空间HA

社区版本用户工作空间目录默认是使用linux目录,需要在linux下建N个用户和目录,还有备份等原因我们选择了hdfs目录,社区也是支持这个功能的,但不太完善,比如前端不支持保存等,后端也存在很多问题需要适配,具体这块的坑,我的同事涛哥会有专门的文章来介绍

用户资源自动开通

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

未来展望

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

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

@det101 det101 changed the title 【有奖征文】DSS公有云改造 【有奖征文】天翼云对DSS的公有云改造和后续思路 Nov 16, 2020
@dcy0701
Copy link

dcy0701 commented Nov 17, 2020

已赞

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants
@det101 @dcy0701 and others