diff --git a/README.md b/README.md new file mode 100644 index 0000000..37b1514 --- /dev/null +++ b/README.md @@ -0,0 +1,80 @@ +##
k8s-webshell
+ +### k8s-webshell 能做什么 +用户可以再web页面上直接登录k8s内部容器, 执行shell命令. +#### 示例如下: +![k8s-webshell](doc/imgs/k8s-webshell.gif) + +### build + +- compile k8s-webshell (要求本地有make): + ```bash + ### 如果需要指定linux版本,加参数 `make linux` + # make + ``` + +- build 镜像(): + ```bash + # make docker + ``` + +- push 镜像: + ```bash + docker-compose push k8s-webshell + ``` + + +### 部署方式有2种: +- kubernetes 部署(k8s 集群内 incluster 模式)到集群当中 +- docker-compose 部署(k8s集群外部署) + +### kubernetes 部署 k8s-webshell + +进入到doc/deploy/k8s 下面依次执行: +(`注意` 根据自己的pod部署的命名空间修改里面的`namespace`字段) +```bash +# kubectl apply -f k8s-webshell-sa.yaml +# kubectl apply -f k8s-webshell-clusterrole.yaml +# kubectl apply -f k8s-webshell-clusterrolebinding.yaml +# kubectl apply -f k8s-webshell-deployment.yaml +# kubectl apply -f k8s-webshell-svc.yaml +``` +修改`doc/demo/client/index.html` 中的以下内容的ip修改为容器的为域名(ssl证书为xx.com): +```javascript +ws = new WebSocket("wss://xx.com:30001/api/ws?" + "token=" + wsToken); +``` +然后打开index.html 就可以测试了 + +### docker-compose 部署 + +在项目根目录下执行: +```bash +docker-compose -f docker-compose.yaml up -d k8s-webshell +``` + +### 接口使用 +调用`/auth`(POST方法)先获取token,参数如下: +```json +{ + "secretKey":"ERkyNK2Q", + "paasUser":"zhuruiqing", + "podNs":"richie", + "podName":"my-nginx-f9995bdb6-jtr5k", + "containerName":"my-nginx" + +} +``` +参数说明: +```python +secretKey api认证secretKey +paasUser paas平台用户 +podNs pod命名空间 +podName pod名称 +containerName 容器名称 + +``` + +### web页面调用k8s-webshell websocket接口 +调用接口`/api/ws`其中token为 请求auth后获得的token: +`ws = new WebSocket("wss://xx.com:30001/api/ws?" + "token=" + wsToken);` +