云原生(Cloud Native)应用是伴随著 Kubernetes 应用范围的扩大,基于云模型而提出的一种概念。

本文来介绍一个云原生应用开发的工具 Kui, 这是一款由 IBM 开源的工具,使用 Electron 提供 GUI 能力。

Kui Shell offers a new development experience for building cloud-native applications. By combining the power of familiar CLIs with visualizations in high-impact areas, Kui enables you to manipulate complex JSON and YAML data models, integrate disparate tooling, and provides quick access to aggregate views of operational data.

正如以上介绍中提到的,Kui 提供了一种新的开发体验(原先大多数时候我们是通过 kubectl 与 Kubernetes 中的资源进行交互),Kui 结合了原有 CLI 的强大功能,并提供一种可视化的方式,方便我们对 Kubernetes 中 YAML 或者 JSON 格式数据的处理。

介绍就先到这里,我们来看下它的安装及主体功能,看看它能为我们带来什么。

安装

安装方式其实很简单,项目的安装文档已经非常详细了。我主要推荐两种在 Linux 下的安装方式(当然,Kui 是支持跨平台的 macOS 和 Windows 也都可以用):

  • 下载预构建好的二进位包:

(MoeLove) ? wget -O kui.zip https://linux-zip.kui-shell.org/
(MoeLove) ? unzip kui.zip
(MoeLove) ? ./Kui-linux-x64/Kui shell

  • 源码安装:

这是我最为推荐的方式,以下内容也均是以此方式安装来介绍的。 注意,此方式需要你机器上已经装好了 NodeJS 相关的环境

(MoeLove) ? git clone https://github.com/IBM/kui.git
(MoeLove) ? cd kui
(MoeLove) ? npm install
(MoeLove) ? export PATH=$PWD/bin/:$PATH

在执行完上述命令后,便安装了相关的依赖,以及 bin 目录下的 kubectl-kui 命令会通过 kubectl 的插件机制,自动注册好。

通过以下命令可进行验证:

(MoeLove) ? kui git:(master) kui version
2.33.0
(MoeLove) ? kui git:(master) kubectl kui version
2.33.0

使用

你的机器上需要提前配置好 KUBECONFIG 的环境变数或者是将配置文件放到了正确的位置 i.e. $HOME/.kube/config

如果你还没有一个可访问的 Kubernetes 集群,强烈建议你阅读我之前的文章 使用 Kind 搭建你的本地 Kubernetes 集群, Kind 是一个非常优秀也非常方便的工具。

如果你对 Kubernetes 还不甚了解的话,也推荐阅读我写的 《Kubernetes 从上手到实践》 进行学习。

回到正题,我们来看下 Kui 的主体功能。

可视化展示

默认情况下,如果我们没有给 kui 传递 --ui 参数的话,它和正常使用 kubectl 的行为一致,仍然在终端下输出内容。

类似这样:

(MoeLove) ? kui git:(master) kubectl kui get pods -n kube-system
NAME READY STATUS RESTARTS AGE
coredns-fb8b8dccf-292wk 1/1 Running 0 153m
coredns-fb8b8dccf-lbj2g 1/1 Running 0 153m
etcd-moelove-control-plane 1/1 Running 0 152m
kube-apiserver-moelove-control-plane 1/1 Running 0 152m
kube-controller-manager-moelove-control-plane 1/1 Running 0 152m
kube-proxy-jltdj 1/1 Running 0 153m
kube-proxy-thpq5 1/1 Running 0 153m
kube-scheduler-moelove-control-plane 1/1 Running 0 152m
weave-net-dws2l 2/2 Running 0 153m
weave-net-tt82h 2/2 Running 0 153m

但如果我们给它传递了 --ui 的参数,则它会打开一个新的窗口,并将内容展示出来。

点击其中的任意资源,便可打开其详细内容:

底部 tab 可进行内容切换,比如可查看它的状态或者它其中的 Container 等。

当然,右下角还有一个删除按钮,可用于删除此资源(没有二次确认的,请慎重)

截图

在窗口的右下角有一个截图按钮,使用此按钮可以方便的对当前窗口的图像进行拷贝和保存。

互动式 Shell

使用以下命令可以打开互动式 Shell 窗口:

kubectl kui shell

在此互动式 Shell 窗口中,你可以正常的执行你日常使用的命令:

当然除了像正常在终端中的命令输出外,如果输出内容是 JSON 或者 YAML 的话,则会自动打开 kui 的一个窗口进行展示。

左侧的 + 号可以用于新增标签。

开发部署

你可以使用 内置编辑器 或者任意你喜欢的编辑器编辑你的配置文件,比如我们想要部署一个 Redis 在 Kubernetes 集群中。

你可以写一个配置文件如下:

apiVersion: apps/v1
kind: Deployment
metadata:
labels:
run: redis
name: redis
spec:
replicas: 1
selector:
matchLabels:
run: redis
strategy: {}
template:
metadata:
labels:
run: redis
spec:
containers:
- image: redis:alpine
name: redis
resources: {}

保存为 deploy.yaml 使用 open deploy.yaml 即可在右侧窗口查看该内容, 并且在左侧进行部署后,也可在右侧进行管理等操作。

易扩展

项目代码比较简单,文档中也有开发文档,可以很方便的自信进行扩展。(不展开了)

tutorials

当输入此命令后,会看到其内置的几个使用教程,更多功能可以通过此命令进行探索。

例如这种 Preview 的功能之类的。

Enjoy your Cloud Native!


可以通过下面二维码订阅我的文章公众号【MoeLove】


推荐阅读:
相关文章