Skip to content

๐Ÿš€ Interactive Bash scripts (klog, kenv, kdesc) to supercharge your kubectl workflow. Simplify log searching, env inspection, and resource description on Kubernetes.

License

Notifications You must be signed in to change notification settings

syauqiahmd/kube-helper-scripts

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

9 Commits
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

Kubernetes Helper Scripts

Demo

klog, kenv, and kdesc are simple, interactive bash scripts designed to streamline common kubectl tasks.

They provide a user-friendly, numbered menu to select namespaces and resources, eliminating the need to type or copy and paste long names.


Features

  • Interactive Selection: Easily select namespaces and pods from a numbered list.
  • Interactive Loop: After viewing logs, you can instantly search again, switch pods, or even change namespaces without restarting the script.
  • Colorful Interface: Color-coded prompts and lists for better readability.
  • Keyword Filtering: Instantly filter logs or environment variables using one or more keywords.
  • Log Following: klog includes an option to stream logs in real-time (kubectl logs -f).
  • Flexible Log Tailing: Specify the number of log lines to retrieve (e.g., the last 100 lines).
  • Zero Dependencies: Written in pure bash with no external dependencies required.
  • Argument Support: Pass in a namespace as an argument to skip the namespace selection menu (e.g., ./klog my-namespace).

Prerequisites

  • kubectl must be installed and configured to point to a running Kubernetes cluster.

Installation

An installation script is provided to automatically make the scripts executable and copy them to a suitable directory in your system's PATH.

  1. Clone the repository or download the scripts.

  2. Navigate into the project directory:

    cd kube-helper-scripts
  3. Run the installation script:

    chmod +x install.sh
    ./install.sh

The script will attempt to install the scripts to a user-local directory (like ~/.local/bin) if it is in your $PATH. Otherwise, it will fall back to /usr/local/bin, which may prompt for a sudo password.

After installation, you may need to restart your terminal or source your shell profile (e.g., source ~/.bashrc) for the new commands to be available.

Usage

Once installed, you can run the scripts directly from your terminal.

klog

Run the script with klog or klog <namespace>.

The script will guide you through selecting a namespace and pod. You can then enter keywords to filter the logs, choose to follow them live, and specify how many lines to retrieve.

After the logs are displayed, a menu will appear, allowing you to start a new search, switch pods, or change namespaces.

$ klog
Please select a namespace:
1) default
2) dev
3) staging
Enter number for namespace: 2

Please select a pod from the namespace 'dev':
1) logger-dev-1-7787d59d78-j4m65
2) logger-dev-2-849d7ff58c-ghtgl
Enter number for pod: 1

Enter keywords to search (use ';' to separate): ERROR;timeout
Follow logs? (y/N): n
Enter number of log lines to fetch (default: 10, use -1 for all): 50

Searching logs for pod 'logger-dev-1-7787d59d78-j4m65' in namespace 'dev'...
[ERROR] 2025-09-21T20:00:00.000Z - A timeout occurred.
...

What do you want to do next?
1) Search again in the same pod ('logger-dev-1-7787d59d78-j4m65')
2) Select another pod in the same namespace ('dev')
3) Select another namespace
q) Quit
Enter your choice: q
Exiting.

kenv

Run the script with kenv or kenv <namespace>.

$ kenv dev

Please select a pod from the namespace 'dev':
1) logger-dev-1-7787d59d78-j4m65
2) logger-dev-2-849d7ff58c-ghtgl
Enter number for pod: 1

Enter keywords to filter environment variables (use ';' to separate): API

Searching environment variables for pod 'logger-dev-1-7787d59d78-j4m65' in namespace 'dev'...
API_KEY=s3cr3t-v4lu3
API_URL=https://api.example.com

kdesc

Interactively describe any Kubernetes resource.

$ kdesc
Please select a resource type:
1) pod
2) service
3) deployment
...
Enter number for resource type: 3

Please select a namespace:
1) default
2) dev
...
Enter number for namespace: 2

Please select a resource from dev to describe:
1) my-app-deployment
...
Enter number for resource: 1

Describing deployment/my-app-deployment in namespace dev...
Name:                   my-app-deployment
Namespace:              dev
CreationTimestamp:      ...
...

Pro-Tip: Upgrade with fzf

For an even better experience, you can use fzf (a command-line fuzzy finder) to create a powerful, interactive search menu instead of the numbered list.

1. Install fzf:

# On macOS
brew install fzf

# On other systems, see fzf repository for instructions.

2. Modify the scripts: Replace the for loop and read command for namespace/pod selection with a single fzf line.

Example for namespace selection:

- for i in "${!ns_list[@]}"; do ... done
- read -p "..." selected_ns_index
- namespace="${ns_list[selected_ns_index-1]}"
+ namespace=$(printf "%s\n" "${ns_list[@]}" | fzf)

License

This project is licensed under the MIT License - see the LICENSE.md file for details.

About

๐Ÿš€ Interactive Bash scripts (klog, kenv, kdesc) to supercharge your kubectl workflow. Simplify log searching, env inspection, and resource description on Kubernetes.

Topics

Resources

License

Stars

Watchers

Forks

Languages