winget install --id=kosay.kubetui -e
Kubetui is a terminal user interface (TUI) tool designed for monitoring Kubernetes resources. It provides an easy-to-use interface for developers and operators to access important information about their applications and infrastructure.
Kubetui is a terminal user interface (TUI) tool designed for real-time monitoring of Kubernetes resources, enabling developers and operators to access critical information about their applications and infrastructure with ease.
Key Features:
Audience & Benefit: Ideal for developers and Kubernetes operators seeking an efficient way to monitor and manage their clusters. Kubetui streamlines workflows by offering a user-friendly interface that simplifies resource exploration and monitoring, ultimately improving operational efficiency.
Installable via winget on Windows, Kubetui is a powerful tool designed with a focus on practicality and usability in Kubernetes environments.
Kubetui is a terminal user interface (TUI) tool designed for monitoring Kubernetes resources.
It provides an easy-to-use interface for developers and operators to access important information about their applications and infrastructure.
Table of Contents
Demo slow version
Kubetui offers the following features to help you monitor and manage your Kubernetes resources:
--pod-columns
or --pod-columns-preset
to control which columns appear in the pod list view. Also supports dynamic selection at runtime.Overall, kubetui is a powerful tool designed to provide a safe and efficient way to access and monitor your Kubernetes resources. With its user-friendly interface and comprehensive features, it simplifies the process of managing your applications and infrastructure.
To install kubetui, you can use the following methods:
Kubetui is available on homebrew, the package manager for macOS and Linux. Install it by running the following command:
brew install kubetui
Kubetui is available in the official repositories. Install it by running the following command:
pacman -S kubetui
If you are using Windows with scoop, you can add the necessary buckets and install kubetui with the following commands:
# Add the 'extras' bucket for vcredist2022
scoop bucket add extras
scoop bucket add https://github.com/sarub0b0/scoop-bucket
scoop install /kubetui
If you prefer using winget, the Windows package manager, you can install kubetui with the following command:
winget install kubetui
Kubetui is available on Chocolatey, the package manager for Windows. Install it by running the following command:
choco install kubetui
For openSUSE Tumbleweed, you can install kubetui using the zypper
package manager. Run the following command to install:
zypper install kubetui
cargo install
Kubetui is available on crates.io, the official Rust package registry. Install it by running the following command:
cargo install kubetui
Alternatively, you can download the precompiled binary from the GitHub Release page that matches your operating system. Once downloaded, you can run the binary directly without any additional installation steps.
Choose the method that suits your needs and preferences.
kubetui
$ kubetui -h
An intuitive Terminal User Interface (TUI) tool for real-time monitoring and exploration of Kubernetes resources.
Usage: kubetui [OPTIONS] [COMMAND]
Commands:
completion Generate completion script
Options:
-h, --help Print help
-V, --version Print version
-A, --all-namespaces[=] Select all namespaces [default: false]
-c, --context Context
-C, --kubeconfig kubeconfig path
--config-file Config file path
-l, --logging Logging
-n, --namespaces Namespaces (e.g. -n val1,val2,val3 | -n val1 -n val2 -n val3)
--pod-columns Comma-separated list of columns to show in pod table (e.g. name,status,ip). Use "full" to show all available columns
--pod-columns-preset Preset name for pod columns (e.g. "default", "full"). If both are specified, `--pod-columns` overrides this
-s, --split-direction Window split direction [default: v]
Use --pod-columns
to customize the columns displayed in the pod table.
Specify columns using a comma-separated list:
--pod-columns=ready,status,age
Use full
to show all available columns:
--pod-columns=full
Notes:
Name
column is always included even if not specified.full
keyword cannot be combined with other columns.You can also customize columns dynamically at runtime:
NAME
are always enabled and fixed.You can define reusable column presets under pod.column_presets
in your config file, and set a default preset with pod.default_preset
.
theme:
pod:
# Name of the default preset to use at startup (optional)
default_preset: minimal
# Define named presets of pod columns
column_presets:
default:
- name
- status
- age
- ip
- node
minimal:
- name
- status
- age
To use a preset defined in your config file at runtime:
kubetui --pod-columns-preset=default
This will apply the preset named "default" defined in your configuration file.
If both --pod-columns
and --pod-columns-preset
are specified, --pod-columns
takes precedence.
If neither is specified, the preset defined in pod.default_preset
(if any) is used.
Kubetui supports shell completion for Bash and Zsh. You can enable the completion by adding the following to your shell configuration file:
For Bash (add to ~/.bashrc
or ~/.bash_profile
):
source <(kubetui completion bash)
For Zsh (add to ~/.zshrc
):
source <(kubetui completion zsh)
You can customize the UI appearance by specifying a configuration file using the --config-file
flag:
kubetui --config-file /path/to/your/config.yaml
The configuration file can also be located at ~/.config/kubetui/config.yaml
or $XDG_CONFIG_FILE/kubetui/config.yaml
.
The configuration file allows you to modify various aspects of the UI, including:
A sample configuration file is available at examples/config.yaml
to help you get started with customizing the UI.
The Log Query feature empowers you to retrieve logs from multiple Pods and their containers. Using regular expressions, selectors, and specified resources, you can precisely define the log retrieval targets. This functionality also allows you to filter logs using regular expressions, providing a powerful and flexible log querying experience.
pod:app container:nginx log:401
When entering ?
or help
in the log query form, the help dialog will be displayed.
Query | Alias | Description |
---|---|---|
pod:\ | pods, po, p | Include Pods that match the regular expression in log retrieval target. |
!pod:\ | !pods, !po, !p | Exclude Pods that match the regular expression from log retrieval target. Can be defined multiple times. |
container:\ | containers, co, c | Include containers that match the regular expression in log retrieval target. |
!container:\ | !containers, !co, !c | Exclude containers that match the regular expression from log retrieval target. Can be defined multiple times. |
log:\ | logs, lo, l | Retrieve logs that match the regular expression. Can be defined multiple times. |
!log:\ | !logs, !lo, !l | Exclude logs that match the regular expression. Can be defined multiple times. |
label:\ | labels | Include Pods with labels matching the selector in log retrieval target. Cannot be specified with resource. |
field:\ | fields | Include Pods with fields matching the selector in log retrieval target. |
/\ | Include Pods belonging to the specified resource in log retrieval target. Cannot be specified with label. |
Supported resources:
Resource | Alias |
---|---|
pod | po, pods |
replicaset | rs, replicasets |
deployment | deploy, deployments |
statefulset | sts, statefulsets |
daemonset | ds, daemonsets |
job | jobs |
service | svc, services |
When including spaces in queries such as or
, enclose the string with "
or '
. For example:
pod:"a b"
label:"environment in (production, qa)"
If you use "
, '
, or \
within the quoted string, escape them with \
. For example:
pod:"a\\b"
Query Syntax
**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 = "\\" | "\"" | "\'"
Key | Description |
---|---|
h, ? | Open the dialog for help |
Enter | Select an item and trigger an event |
n | Open the dialog for selecting the namespace |
N | Open the dialog for selecting multiple namespaces |
c | Open the dialog for selecting the context |
y | Open the dialog for yaml |
Tab, Shift+Tab | Change the focus of the view within the active tab |
number | Switch to the tab (number: 1~6) |
ESC | Close the window or terminate the app (when the dialog is not open) |
q | Terminate the app |
f | Open the dialog for selecting multiple API resources |
Shift+s | Toggle the split direction between vertical and horizontal |
Source | Destination |
---|---|
Ctrl+p | Up |
Ctrl+n | Down |
Ctrl+f | Right |
Ctrl+b | Left |
Ctrl+u | PgUp |
Ctrl+d | PgDn |
Ctrl+h, Backspace | Delete |
Ctrl+a | Home |
Ctrl+e | End |
Ctrl+[ | Esc |
Key | Description |
---|---|
j, k, Down, Up, PgDn, PgUp | Change the selected item / Scroll the view |
Left, Right | Scroll horizontally in the view |
g | Go to the first item / Go to the top of the view |
G | Go to the last item / Go to the bottom of the view |
Key | Description |
---|---|
/ | Activate search mode and open the search form |
Enter | Confirm the input |
q, Esc | Disable search mode and close the search form (when search mode is active) |
Key | Description |
---|---|
n, N | Go to the next / previous match |
q, Esc | Disable search mode |
Key | Description |
---|---|
/ | Open the filter form |
Enter, ESC | Close the filter form |
Key | Description |
---|---|
Down, Up, PgDn, PgUp | Change the selected item / Scroll the view |
Tab, Shift+Tab | Change the focus of the view within the active tab |
Enter | Select an item and trigger an event |
ESC | Close the window or terminate the app (when the dialog is not open) |
Key | Description |
---|---|
Home | Move the cursor to the beginning |
End | Move the cursor to the end |
Ctrl+w | Delete text from the cursor to the beginning |
Ctrl+k | Delete text from the cursor to the end |
Left, Right | Move the cursor to the previous / next character |
Key | Description |
---|---|
f, p | Toggle between pretty print and single-line display for JSON logs. |
Enter | Insert a blank line. |
Bug reports and pull requests are welcome.
This software is available as open source under the terms of the MIT License.