Skip to content

Latest commit

 

History

History
164 lines (125 loc) · 8.67 KB

README.zh_CN.md

File metadata and controls

164 lines (125 loc) · 8.67 KB

英文 README.md

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

Downloads Go Report Card License Dockerized Version Visitors

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

高级环境变量

ENV Type Default Value Description
SESSION_STORAGE_SIZE string 10M 单会话的存储大小限制
KUBECTL_INSECURE_SKIP_TLS_VERIFY bool true kubectl命令是否跳过tls验证
GOTTY_OPTIONS string --port 8080 --permit-write --permit-arguments 查看 Gotty Options
WELCOME_BANNER string Welcome 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":""}

请求参数

参数名 参数类型 参数描述
name string 会话名称
apiServer string Kubernetes API Server地址
token string Kubernetes Bearer Token

响应结果

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

通过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":""}

请求参数

参数名 参数类型 参数描述
name string 会话名称
kubeConfig string Base64编码后的kubeconfig文件内容

响应结果

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

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