kubernetes通过web方式连接指定pod的命令行终端(运维管理平台开源组件alkssh)

当前问题:

  目前自研的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,可以在评论区直接提问说明,我看到第一时间会回复你,运维开发是将来的发展趋势,自动化运维已经满足不了部分需求,谢谢大家的支持!!

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。