#tui #kubernetes #terminal #monitor #user-interface #mouse-event

app kubetui

一个直观的终端用户界面 (TUI) 工具,用于实时监控和探索 Kubernetes 资源

8 个稳定版本

1.5.3 2024 年 7 月 23 日
1.5.2 2024 年 5 月 16 日
1.5.1 2024 年 4 月 23 日
1.5.0 2024 年 1 月 14 日
1.3.0 2023 年 6 月 10 日

#65 in 命令行界面

Download history 21/week @ 2024-04-26 2/week @ 2024-05-03 74/week @ 2024-05-10 81/week @ 2024-05-17 6/week @ 2024-05-24 2/week @ 2024-05-31 3/week @ 2024-06-07 6/week @ 2024-06-14 4/week @ 2024-06-21 4/week @ 2024-06-28 110/week @ 2024-07-19 33/week @ 2024-07-26 6/week @ 2024-08-02 1/week @ 2024-08-09

每月 150 次下载

MIT 许可证

1MB
26K SLoC

kubetui

Release Test

库贝图是一个为监控 Kubernetes 资源而设计的终端用户界面 (TUI) 工具。
它提供了一个易于使用的界面,让开发人员和运维人员可以访问有关其应用程序和基础设施的重要信息。

目录

Demo

演示慢速版本

Demo slow version

功能

库贝图提供了以下功能,以帮助您监控和管理您的 Kubernetes 资源

  • Pod 列表和容器日志:轻松查看 pod 列表及其容器日志。
  • ConfigMap 和 Secret 监控:监控 ConfigMap 和 secret,并解码其数据。
  • 网络相关资源:探索与网络相关的资源及其描述。
  • 事件监控:实时查看 Kubernetes 事件。
  • 特定资源监控(列表 / YAML):以列表或 YAML 格式查看特定资源。
  • 命名空间多选:同时选择和查看多个命名空间。
  • 上下文选择:更改您要操作的平台 Kubernetes 上下文。
  • 剪贴板支持(文本复制):使用鼠标操作方便地复制文本。
  • 鼠标事件支持:利用鼠标事件以获得更流畅的用户体验。
  • 搜索功能:轻松在界面内搜索特定关键词。
  • 项目过滤:基于多个用空格分隔的关键词进行项目过滤。

总之,库贝图是一个强大的工具,旨在以安全有效的方式访问和监控您的 Kubernetes 资源。凭借其用户友好的界面和全面的功能,它简化了管理应用程序和基础设施的过程。

安装

Packaging status

要安装kubetui,您可以采用以下方法

Homebrew在macOS和Linux上

Kubetui在Homebrew上可用,它是macOS和Linux的包管理器。通过运行以下命令进行安装

brew install kubetui

Scoop在Windows上

如果您使用的是Windows Scoop,您可以添加必要的存储桶,并使用以下命令安装kubetui

# Add the 'extras' bucket for vcredist2022
scoop bucket add extras
scoop bucket add <bucket> https://github.com/sarub0b0/scoop-bucket
scoop install <bucket>/kubetui

WinGet在Windows上

如果您更喜欢使用WinGet,即Windows包管理器,可以使用以下命令安装kubetui

winget install kubetui

Chocolatey在Windows上

Kubetui在Chocolatey上可用,它是Windows的包管理器。通过运行以下命令进行安装

choco install kubetui

openSUSE Tumbleweed

对于openSUSE Tumbleweed,您可以使用zypper包管理器安装kubetui。运行以下命令进行安装

zypper install kubetui

使用 cargo install

Kubetui在crates.io上可用,这是官方的Rust包注册处。运行以下命令进行安装

cargo install kubetui

在运行命令之前,请确保已安装RustCargo

下载二进制文件

或者,您可以从GitHub发行版页面下载与您的操作系统匹配的预编译二进制文件。下载后,您可以直接运行二进制文件,无需任何额外的安装步骤。

选择适合您需求和偏好的方法。

用法

kubetui
$ kubetui -h
kubernetes terminal user interface

Usage: kubetui [OPTIONS]

Options:
  -h, --help                           Print help information
  -V, --version                        Print version information
  -A, --all-namespaces[=<true|false>]  Select all namespaces [default: false]
  -c, --context <CONTEXT>              Context
  -C, --kubeconfig <KUBECONFIG>        kubeconfig path
  -l, --logging                        Logging
  -n, --namespaces <NAMESPACES>        Namespaces (e.g. -n val1,val2,val3 | -n val1 -n val2 -n val3)
  -s, --split-mode <v|h>               Window split mode [possible values: v, h, vertical, horizontal]

日志查询

日志查询功能使您能够从多个Pod及其容器中检索日志。使用正则表达式、选择器和指定的资源,您可以精确定义日志检索的目标。此功能还允许您使用正则表达式过滤日志,提供强大且灵活的日志查询体验。

用法示例

pod:app container:nginx log:401

在日志查询表单中输入?help时,将显示帮助弹出窗口。

支持的查询

查询 别名 描述
pod:<regex> pods, po, p 在日志检索目标中包含与正则表达式匹配的Pod。
!pod:<regex> !pods, !po, !p 从日志检索目标中排除与正则表达式匹配的Pod。可以定义多次。
container:<regex> containers, co, c 在日志检索目标中包含与正则表达式匹配的容器。
!container:<regex> !containers, !co, !c 从日志检索目标中排除与正则表达式匹配的容器。可以定义多次。
log:<regex> logs, lo, l 检索与正则表达式匹配的日志。可以定义多次。
!log:<regex> !logs, !lo, !l 从日志检索目标中排除与正则表达式匹配的日志。可以定义多次。
label:<selector> labels 在日志检索目标中包含标签与选择器匹配的Pod。不能与资源一起指定。
field:<selector> fields 在日志检索目标中包含字段与选择器匹配的Pod。
<resource>/<name> 在日志检索目标中包含属于指定资源的Pod。

支持的资源

资源 别名
pod po, pods
replicaset rs, replicasets
deployment deploy, deployments
statefulset sts, statefulsets
daemonset ds, daemonsets
job jobs
service svc, services

查询字符串转义

当查询中包含空格,如 <regex><selector> 时,请用 "' 将字符串括起来。例如

pod:"a b"
label:"environment in (production, qa)"

如果在引号字符串中使用 "'\,请用 \ 转义。例如

pod:"a\\b"
查询语法
**Lexer and Parser**

LOG_QUERIES = QUERY ( " "+ QUERY )*

QUERY = POD
        | EXCLUDE_POD
        | CONTAINER
        | EXCLUDE_CONTAINER
        | LOG
        | EXCLUDE_LOG
        | LABEL
        | FIELD
        | SPECIFIED_RESOURCE

POD = ( "pods" | "pod" | "po" | "p" ) ":" REGEX
EXCLUDE_POD = "!" POD

CONTAINER = ( "containers" | "container" | "co" | "c" ) ":" REGEX
EXCLUDE_CONTAINER = "!" CONTAINER

LOG = ( "logs" | "log" | "lo" | "l" ) ":" REGEX
EXCLUDE_LOG = "!" LOG

REGEX = QUOTED_STRING | UNQUOTED_STRING

LABEL = ( "labels" | "label" ) ":" SELECTOR
FIELD = ( "fields" | "field" ) ":" SELECTOR

SELECTOR = QUOTED_STRING | UNQUOTED_STRING

SPECIFIED_RESOURCE = RESOURCE "/" NAME

RESOURCE = ( "pods" | "pod" | "po" )
           | ( "replicasets" | "replicaset" | "rs" )
           | ( "deployments" | "deployment" | "deploy" )
           | ( "statefulsets" | "statefulset" | "sts" )
           | ( "daemonsets" | "daemonset" | "ds" )
           | ( "services" | "service" | "svc" )
           | ( "jobs" | "job" )

NAME = ALPHANUMERIC ( ALPHANUMERIC | "-" | "." )* ALPHANUMERIC

UNQUOTED_STRING = ~['" \t\r\n] ( ~[ \t\r\n] )* // without spaces

QUOTED_STRING = "\"" ESCAPED_STRING "\"" | "'" ESCAPED_STRING "'"

ESCAPED_STRING = ( ESCAPED_CHAR | ~[\"'] )\*

ESCAPED_CHAR = "\\" | "\"" | "\'"

键绑定

通用

描述
h? 打开帮助弹出窗口
输入 选择一个项目并触发事件
n 打开选择命名空间的弹出窗口
N 打开选择多个命名空间的弹出窗口
c 打开选择上下文的弹出窗口
y 打开yaml弹出窗口
TabShift+Tab 在活动选项卡内改变视图的焦点
数字 切换到指定选项卡(数字:1~6)
ESC 关闭窗口或终止应用(当弹出窗口未打开时)
q 终止应用
f 打开选择多个API资源的弹出窗口
Shift+s 在垂直和水平之间切换分割方向

键映射

目标
Ctrl+p 向上
Ctrl+n 向下
Ctrl+f 向右
Ctrl+b 向左
Ctrl+u 向上翻页
Ctrl+d 向下翻页
Ctrl+h退格键 删除
Ctrl+a Home
Ctrl+e End
Ctrl+[ Esc

视图控制

描述
jk下箭头上箭头翻页下翻页上 改变选定的项 / 滚动视图
左箭头右箭头 在视图中水平滚动
g 转到第一个项目 / 转到视图顶部
G 转到最后一个项目 / 转到视图底部

文本视图

描述
/ 激活搜索模式并打开搜索表单
输入 确认输入
qEsc 禁用搜索模式并关闭搜索表单(当搜索模式激活时)

搜索模式

描述
nN 转到下一个/上一个匹配项
qEsc 禁用搜索模式

表格视图

描述
/ 打开筛选表单
EnterEsc 关闭筛选表单

弹出窗口

描述
下箭头上箭头翻页下翻页上 改变选定的项 / 滚动视图
TabShift+Tab 在活动选项卡内改变视图的焦点
输入 选择一个项目并触发事件
ESC 关闭窗口或终止应用(当弹出窗口未打开时)

输入表单

描述
Home 移动光标到开始位置
End 移动光标到结束位置
Ctrl+w 从光标位置删除到开始位置的内容
Ctrl+k 从光标位置删除到结束位置的内容
左箭头右箭头 移动光标到前一个/下一个字符

贡献

欢迎提交错误报告和拉取请求。

许可证

本软件作为开源软件,根据 MIT 许可证 提供。

依赖关系

~78MB
~1M SLoC