An open API service indexing awesome lists of open source software.

https://github.com/chengyumeng/khadijah

A command-line tool that makes Qihoo360/Wayne easier to use with kubernetes.
https://github.com/chengyumeng/khadijah

golang kubernetes wayne

Last synced: 12 months ago
JSON representation

A command-line tool that makes Qihoo360/Wayne easier to use with kubernetes.

Awesome Lists containing this project

README

          

# Khadijah

[![Build Statue](https://travis-ci.org//chengyumeng/khadijah.svg?branch=master)](https://travis-ci.org/chengyumeng/khadijah)
[![Build Release](https://img.shields.io/github/release/chengyumeng/Khadijah.svg)](https://github.com/chengyumeng/khadijah/releases)
[![Go Report Card](https://goreportcard.com/badge/github.com/chengyumeng/khadijah)](https://goreportcard.com/report/github.com/chengyumeng/khadijah)

Khadijah 是一款基于奇虎 360 开源的 Wayne 的 kubernetes 命令行管理工具。

### 为什么使用 Khadijah ?

## Feature

- 支持了多种 Wayne OpenAPI 的接口调用
- 支持了跨部门、跨项目的资源信息查询
- 支持了 Kubernetes 原生信息的查询
- 支持了基于 Wayne 的权限管理下的从命令行进入 Kubernetes Pod 容器的远程 Shell

## 快速安装

```bash
go get -u github.com/chengyumeng/khadijah
```

```bash
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 下所有操作依赖于这个值)
```

```bash
khadijah login -uadmin -padmin
```

```bash
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 |
+----+--------------+-----------------+-------------------------------+-------------------------------+
```

```bash
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 |
+-----+----------------------------------------+------------+-----+-----------+-------------+-------------------------------+
```

```bash
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. | |
+-----------+-----------+---------+--------------------------------+------------------------------+----------+--------------------------------+---------------------------+
```

```bash
khadijah query getpodinfo -c=K8S-1 --label=app
```
```json
{
"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 服务地址,例如:
```bash
khadijah config set --baseurl=http://www.wayne.cloud
```

调用 OpenAPI 接口,需配置 APIKey:
```bash
khadijah config set --apikey=xxx
```

OpenAPI 接口的调用方式举例:
```bash
khadijah query getvipinfo -p=18080
```

调用 websocket (需要安装插件):
```bash
khadijah config set --websocketurl=ws://www.wayne.cloud
```

如需调用 Web API 接口,需要在 Wayne 上通过管理员设置登录密码, Wayne 设置路径为:

管理后台 =》权限 =》 用户列表 =》 重置密码

之后可以通过如下命令登录:
```bash
khadijah login -uadmin -padmin
```

恭喜你,之后就可以调用一切接口!