绑定完请刷新页面
取消
刷新

分享好友

×
取消 复制
云原生应用开发新体验:Kui
2020-05-11 13:41:19

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



分享好友

分享这个小栈给你的朋友们,一起进步吧。

唠唠云原生
创建时间:2020-05-11 11:26:03
云原生是一种构建和运行应用程序的方法,是一套技术体系和方法论。云原生(CloudNative)是一个组合词,Cloud+Native。 Cloud表示应用程序位于云中,而不是传统的数据中心;Native表示应用程序从设计之初即考虑到云的环境,原生为云而设计,在云上以佳姿势运行,充分利用和发挥云平台的弹性+分布式优势。
展开
订阅须知

• 所有用户可根据关注领域订阅专区或所有专区

• 付费订阅:虚拟交易,一经交易不退款;若特殊情况,可3日内客服咨询

• 专区发布评论属默认订阅所评论专区(除付费小栈外)

技术专家

查看更多
  • 栈栈
    专家
戳我,来吐槽~