Web Kubectl - 在Web浏览器中运行kubectl命令

August 13, 2024 · View on GitHub

英文 README.md

Web Kubectl - 在Web浏览器中运行kubectl命令

Downloads Go Report Card License Dockerized Version

webkubectl

目标

Web Kubectl帮助您管理kubernetes集群的凭据,并在Web浏览器中运行kubectl命令,从而不必在本地PC或其他服务器上安装kubectl,并且Web Kubectl也适用于团队多人同时使用,此外还可以使用API集成到您自己的应用中。

优势

  • 支持多用户和多个Kubernetes集群:一个Web Kubectl部署可用于一个团队,尽管团队各个成员都在同时连接不同的Kubernetes集群、使用不同的Kubernetes权限。
  • 会话隔离:所有的在线会话都是隔离的,每个会话都有自己的命名空间和存储空间,对其他存储空间不可见。
  • 支持kubeconfig文件和bearer token:您可以提供kubeconfig文件或bearer token以通过Web Kubectl连接Kubernetes集群。
  • 易于使用和集成:使用Web Kubectl首页可以快速入门,或者使用API与您的应用集成。
  • 管理VPC中的Kubernetes集群:通过Web Kubectl您可以管理那些在VPC中、您自己的电脑无法直接连接的Kubernetes集群。
_______________________________________________________________________
|   Local Network     |          DMZ           |      VPC/Datacenter  |
|                     |                        |                      |
|                     |    _______________     |   ----------------   |
|   ---------------   |    |             |  /~~~~~>| Kubernetes A |   |
|   | Your Laptop |~~~~~~~>| Web Kubectl | /   |   ----------------   |
|   ---------------   |    |             | \   |                      |
|                     |    ---------------  \  |   ----------------   |
|                     |                      \~~~~>| Kubernetes B |   |
|                     |                        |   ----------------   |
-----------------------------------------------------------------------

架构

Web Kubectl 使用webkubectl/gotty在Web浏览器中运行基于JavaScript的Shell终端。
当打开一个新会话时,将为该会话创建一个临时Linux命名空间,以确保所有会话都是隔离的,每个会话都有自己的命名空间和存储,同时为当前会话生成.kube/config文件。
会话结束后,临时命名空间和存储将被删除。

安装

$ docker run --name="webkubectl" -p 8080:8080 -d --privileged kubeoperator/webkubectl

高级环境变量

ENVTypeDefault ValueDescription
SESSION_STORAGE_SIZEstring10M单会话的存储大小限制
KUBECTL_INSECURE_SKIP_TLS_VERIFYbooltruekubectl命令是否跳过tls验证
GOTTY_OPTIONSstring--port 8080 --permit-write --permit-arguments查看 Gotty Options
WELCOME_BANNERstringWelcome to Web Kubectl, try kubectl --help.Web终端打开后的欢迎横幅

使用

使用首页

在浏览器中打开下方的网址。

http://<webkubectl-address>:<port>

在打开的页面中,您可以管理您自己的kubeconfig文件或bearer token凭据,这些凭据存储在您本地浏览器的Local Storage中。然后选择一个会话,单击“连接”在弹出的Web终端中使用kubectl命令。

index

terminal

使用 API

通过Kubernetes API Server地址和bearer token获取终端Token

$ curl http://<webkubectl-address>:<port>/api/kube-token -X POST -d '{"name":"gks-hk-dev","apiServer":"https://k8s-cluster:6443","token":"token-content"}'
#response
$ {"success":true,"token":"mkolj4hgbutfgy1thgp1","message":""}

请求参数

参数名参数类型参数描述
namestring会话名称
apiServerstringKubernetes API Server地址
tokenstringKubernetes Bearer Token

响应结果

参数名参数类型参数描述
successbool请求处理成功为true,否则false
tokenstring打开终端时使用的Token
messagestring错误信息

通过kubeconfig文件获取终端Token

$ curl http://<webkubectl-address>:<port>/api/kube-config -X POST -d '{"name":"k8s-cluster-bj1","kubeConfig":"<Kubernetes config file content base64 encoded>"}'
#response
$ {"success":true,"token":"mkolj4hgbutfgy1thgp1","message":""}

请求参数

参数名参数类型参数描述
namestring会话名称
kubeConfigstringBase64编码后的kubeconfig文件内容

响应结果

参数名参数类型参数描述
successbool请求处理成功为true,否则false
tokenstring打开终端时使用的Token
messagestring错误信息

使用API响应中的Token打开终端

http://<webkubectl-address>:<port>/terminal/?token=<API响应中的Token>

安全

  • 终端Token验证:从API响应中获取的终端Token使用一次后将立即失效,如果一直不使用,则在5分钟后过期。
  • Authentication:默认情况下,无需进行任何身份验证即可访问所有资源,若要限制匿名访问,可以启用gotty的基本身份验证,请参见操作方法
  • SSL/TLS:默认情况下,服务器与客户端之间的所有流量均未加密,我们建议您启用gotty的SSL / TLS选项,请参见操作方法。或者,您可以在代理后面部署Web Kubectl并为该代理启用SSL / TLS,请注意,您的代理需要支持WebSocket协议。

扩展

依赖

许可

Copyright (c) 2014-2024 FIT2CLOUD 飞致云

https://www.fit2cloud.com

Web Kubectl is licensed under the Apache License, Version 2.0.


类似项目

广告

KubeOperator

KubeOperator 是一个开源项目,在离线网络环境下,通过可视化 Web UI 在 VMware、Openstack 或者物理机上部署和管理生产级别的 Kubernetes 集群。
https://kubeoperator.io
https://github.com/kubeoperator/kubeoperator