Khadijah 是一款基于奇虎 360 开源的 Wayne 的 kubernetes 命令行管理工具。
- 支持了多种 Wayne OpenAPI 的接口调用
- 支持了跨部门、跨项目的资源信息查询
- 支持了 Kubernetes 原生信息的查询
- 支持了基于 Wayne 的权限管理下的从命令行进入 Kubernetes Pod 容器的远程 Shell
go get -u github.com/chengyumeng/khadijah
khadijah config set --apikey=example --websocketurl=ws://127.0.0.1:8080 --baseurl=http://127.0.0.1:4200
# 必须指定 baseurl,该值为 Wayne 服务的 http(s)地址
# websocketurl 是用于远程 Shell 的 Wayne 地址,可以按需指定
# apikey 为需要调用 Wayne OpenAPI 需要指定的值(khadijah query 下所有操作依赖于这个值)
khadijah login -uadmin -padmin
khadijah get namespace
Name: admin Email:admin@360.cn
+----+--------------+-----------------+-------------------------------+-------------------------------+
| ID | NAME | USER | CREATETIME | UPDATETIME |
+----+--------------+-----------------+-------------------------------+-------------------------------+
| 27 | argo | admin | 2018-12-26 11:01:08 +0800 CST | 2018-12-26 11:01:08 +0800 CST |
+----+--------------+-----------------+-------------------------------+-------------------------------+
khadijah get deployment -n=infra
+-----+----------------------------------------+------------+-----+-----------+-------------+-------------------------------+
| ID | NAME | TYPE | APP | NAMESPACE | USER | CREATETIME |
+-----+----------------------------------------+------------+-----+-----------+-------------+-------------------------------+
| 1 | infra-wayne | deployment | | | admin | 2018-05-30 16:59:59 +0800 CST |
| 2 | infra-test | deployment | | | admin | 2018-05-30 17:20:22 +0800 CST |
| 3 | infra-cpu | deployment | | | admin | 2018-05-31 10:36:21 +0800 CST |
+-----+----------------------------------------+------------+-----+-----------+-------------+-------------------------------+
khadijah describe deployment move-num1 -n=infra -o=pretty
+-----------+-----------+---------+--------------------------------+------------------------------+----------+--------------------------------+---------------------------+
| NAME | NAMESPACE | CLUSTER | LABELS | CONTAINERS | REPLICAS | MESSAGE | PODS |
+-----------+-----------+---------+--------------------------------+------------------------------+----------+--------------------------------+---------------------------+
| move-num1 | infra | K8S-1 | app:move-num1 qihoo-app:move | php:docker.hub/php:1.1.0 | 1/1 | 2018-12-10 19:03:00 +0800 | move-num1-945d9577f-wnvtm |
| | | | qihoo-ns:infra | nginx:docker.hub/nginx:1.1.0 | | CST:Deployment has minimum | |
| | | | | qconf:docker.hub/agent:0.1.0 | | availability. 2018-12-11 | |
| | | | | | | 14:52:19 +0800 CST:ReplicaSet | |
| | | | | | | "move-num1-945d9577f" has | |
| | | | | | | successfully progressed. | |
+-----------+-----------+---------+--------------------------------+------------------------------+----------+--------------------------------+---------------------------+
khadijah query getpodinfo -c=K8S-1 --label=app
{
"code": 200,
"pods": [
{
"podIp": "172.17.4.44",
"labels": {
"app": "move-num1",
"pod-template-hash": "501851339",
"qihoo-app": "move",
"qihoo-ns": "infra"
}
}
]
}
khadijah 的工作基于 Wayne 的两个特性:
- OpenAPI
- Web API
用户可以配置独立调用两种 API,在使用之前,务必配置 Wayne 服务地址,例如:
khadijah config set --baseurl=http://www.wayne.cloud
调用 OpenAPI 接口,需配置 APIKey:
khadijah config set --apikey=xxx
OpenAPI 接口的调用方式举例:
khadijah query getvipinfo -p=18080
调用 websocket (需要安装插件):
khadijah config set --websocketurl=ws://www.wayne.cloud
如需调用 Web API 接口,需要在 Wayne 上通过管理员设置登录密码, Wayne 设置路径为:
管理后台 =》权限 =》 用户列表 =》 重置密码
之后可以通过如下命令登录:
khadijah login -uadmin -padmin
恭喜你,之后就可以调用一切接口!