Monokle 是一款完全开源的 Kubernetes 桌面管理工具,通过提供用于编写 YAML 清单、验证策略和管理实时集群的统一可视化工具,简化了创建、分析和部署 Kubernetes 配置的过程。Monokle 可通过本地安装的桌面版本和云版本使用,无需在你的环境中安装,Monokle 还包括一个 CLI 和 GitHub 操作,可用于集成到您的开发工作流程中。Monokle Desktop 适用于创建和维护高质量 Kubernetes 应用的工程师。桌面版侧重于使任何人都能够在部署之前和之后独立于他们的知识水平来管理清单和配置,具有特定功能,可以通过单个开发人员和平台工程师的模板和片段轻松创建内容。

核心功能

  • 👩💻 用于配置文件、清单、资源和集群管理的单一 IDE
  • 🌤️ 连接到您的集群并查看实时状态和资源
  • ⚡ 快速获得您的清单、它们包含的资源和关系的高级视图
  • 📇 利用 Git 管理配置的生命周期
  • 👌 根据 YAML 格式、K8s Schema(包括已安装的 CRD)实时验证你的清单
  • ✅ 使用 OPA 策略规则验证资源或定义您自己的
  • 🖊️ 轻松编辑和创建资源,无需学习或查找 yaml 语法并查看应用的更改
  • 🔨 通过保持名称和引用的完整性来重构资源
  • 📷 预览和调试使用 kustomize 或 helm 生成的资源
  • ➕ 可视化 CRD 中定义的扩展资源
  • 🤝 将资源版本与您的集群进行比较,并立即或通过拉取请求应用更改
  • 📚 使用 Monokle 的模板系统创建多步骤表单以快速生成清单

安装

可以直接获取 Monokle 的源码自己构建,也可以直接下载官方的安装包一键安装即可:

• Windows:https://github.com/kubeshop/monokle/releases/download/downloads/Monokle-win-x64.exe
• MacOS:https://github.com/kubeshop/monokle/releases/download/downloads/Monokle-mac-universal.dmg
• Linux:https://github.com/kubeshop/monokle/releases/download/downloads/Monokle-linux-x86_64.AppImage

Monokle Desktop 使用 Helm、Kubectl 和 Kustomize 来实现相应的预览功能,并使用 Git 来进行版本控制。所以还需要我们安装 Helm、Kubectl 或 Kustomize 以及 Git 工具。

使用

安装完成后直接打开应用即可开始使用。第一次使用的时候在欢迎屏幕上,可以通过四个选项开始处理项目:

  • 选择一个包含K8s资源的目录
  • 从0开始创建一个项目和资源
  • 通过预设的模板来选择
  • 从一个 Git 仓库中来获取数据

开源桌面虚拟化解决方案 开源桌面管理_开源桌面虚拟化解决方案

比如我们这里选择一个 helm chart 模板,选择后会创建一个项目,并自动打开 chart 包。



开源桌面虚拟化解决方案 开源桌面管理_kubernetes_02

在页面中间我们可以选择 Create a resource 来创建一个新的资源:



开源桌面虚拟化解决方案 开源桌面管理_kubernetes_03

勾选 Generate Random 则会根据资源的 schema 定义随机生成一些内容,如果你配置了一些模板,还可以直接选择从模板进行创建:



开源桌面虚拟化解决方案 开源桌面管理_开源_04

然后就可以自定义资源对象内容,然后可以将其保存到我们的 chart 包中去,如果你连接了集群也可以直接进行部署操作。

在菜单的第二个 tab 中可以对资源进行对比同步,包括可以从集群中资源或者 Helm/Kustomize 预览的资源。



开源桌面虚拟化解决方案 开源桌面管理_github_05

第三个功能是根据验证设置修复资源,在左侧菜单的设置部分中管理验证策略、打开或关闭规则等。

第四个就是从 Git 仓库 Clone 资源数据下来进行编辑管理:



开源桌面虚拟化解决方案 开源桌面管理_开源桌面虚拟化解决方案_06

从功能上来看我们可以了解 Monokle Desktop 主要用于处理资源清单文件的,但它也具有连接到集群并显示所有包含的资源的能力,从而提供了一种方便、简单的方法来检查集群资源。

从左侧菜单栏选择第五个功能 View cluster dashboard,进入页面后 Monokle 会根据我们 kubeconfig 中的配置列出所有的集群,然后选择一个集群进行连接即可:



开源桌面虚拟化解决方案 开源桌面管理_开源_07

连接后正常就可以看到 K8s 集群的整体概览了,和大部分 K8s 管理系统类似,会将当前集群的一些整体状况和相关的资源对象展示出来,如下图所示:

开源桌面虚拟化解决方案 开源桌面管理_github_08

比如我们最常用的 Pod 列表,基本展示方式和其他 Dashboard 基本上没什么太大的差异。



开源桌面虚拟化解决方案 开源桌面管理_kubernetes_09

在列表中点击一个 Pod 就会展示出当前 Pod 的相关信息、资源清单,同样还有日志和 Shell 功能,在资源清单中还可以直接进行修改。



开源桌面虚拟化解决方案 开源桌面管理_kubernetes_10

当我们连接了集群后则可以操作的功能就更多了,比如在前面的资源管理的页面中也会包含当前集群的一些资源信息了,比如我们这里选择 values.yaml 文件后,还可以选择将该 Helm Chart 安装到集群中去。



开源桌面虚拟化解决方案 开源桌面管理_开源桌面虚拟化解决方案_11

同时在资源验证页面也会自动将当前集群的资源清单校验结果展示出来:



开源桌面虚拟化解决方案 开源桌面管理_kubernetes_12

这些验证策略在设置页面可以选择是否开启:



开源桌面虚拟化解决方案 开源桌面管理_kubernetes_13

此外 Monokle 还具有插件功能,我们可以直接应用中安装,同样也支持很多快捷键可以提高我们的工作效率。关于 Monokle 的更多使用大家可以前往官方文档 https://kubeshop.github.io/monokle/ 探索。

GitHub 仓库:https://github.com/kubeshop/monokle