云原生应用开发新体验:Kui

云原生(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 可视化 - Moelove.info

默认情况下,如果我们没有给 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 的参数,则它会打开一个新的窗口,并将内容展示出来。

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

Kui YAML - Moelove.info

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

Kui Conditions - Moelove.info

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

截图

Kui 截图 - Moelove.info

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

交互式 Shell

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

kubectl kui shell

Kui Shell - Moelove.info

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

Kui Shell - Moelove.info

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

Kui JSON - Moelove.info

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

开发部署

你可以使用 内置编辑器 或者任意你喜欢的编辑器编辑你的配置文件,比如我们想要部署一个 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 即可在右侧窗口查看该内容, 并且在左侧进行部署后,也可在右侧进行管理等操作。

Kui deploy - Moelove.info

易扩展

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

tutorials

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

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

Kui preview - Moelove.info

Enjoy your Cloud Native!


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

TheMoeLove

加载评论