云原生(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】