当前问题:
目前自研的DEVOPS运维管理平台已具备容器的可查看列表,但是缺少能一键进入pod的网页版终端,主要问题是不同的研发人员需要分配不同的权限,使其只能看到他所负责的应用,
解决方法:
1.利用xshell脚本的方式实现
需要先登录具备kubectl的服务器,然后通过提前传入的参数,抓取当前需要进入的容器名称,在通过exec命令进入到容器终端中,此方法具备风险,如果开发人员修改登陆脚本,可直接进入到kubectl界面,权限过大
2.利用kubernetes图形化管理工具实现
如kubernetes官方的dashboard图形化界面,Rancher等图形化工具进行连接,缺点,通过对这几款图形化工具的了解,不具备分业务分人员的权限,二次开发困难,无法结合已有的运维管理整合使用
3.利用开源组件alkssh进行定制化的连接二次开发方便
可结合公司开发的运维管理平台进行协作,直接传递url参数的方式进行指定pod的连接,代码简洁,只需要导入kubectl的权限,即可实现浏览器webssh的操作,直接通往pod的exec终端,可进行所有的linux命令,包括tab补全,特别文件颜色显示,复制粘贴界面等操作
此处主要说明第三种连接pod的方式
1 github地址
https://github.com/SK2-Angel/alkssh
gitee地址:
https://gitee.com/zlchen199/alkssh
2 利用docker启动组件
docker run -v -d /root/kubernetes.yaml:/root/kubernetes.yaml -p 3578:3578 --add-host apiserver.cluster.local:172.3.59.166 czl1041484348/alkssh:v1
说明:
/root/kubernetes.yaml: kubernetes的认证文件,组件需要获取kubernetes权限,用来调用api和数据传输。
-p 3578:3578: 容器内部的默认启动端口是3578,根据个人的需求进行改变。
--add-host apiserver.cluster.local:172.3.59.166: 这参数是添加一个hosts到容器中,这里是因为我的kubernetes集群的6443的kube-apiserver是通过名称进行访问的,所以要加一个hosts否则无法解析地址,根据个人的需求进行改变.。
3 访问方式
http://225.145.56.221:3578/index/alkssh/nginx-alktest-5bfb49576d-875f9
访问url说明
http://部署此组件的机器地址加端口号/index/namespace命名空间/pod的名称
总结
此开源组件除了docker也可部署在宿主机和kubernetes中,后续会更新kubernetes的部署方法,如果有任何疑问或者发现了BUG,可以在评论区直接提问说明,我看到第一时间会回复你,运维开发是将来的发展趋势,自动化运维已经满足不了部分需求,谢谢大家的支持!!