Skip to main content

kubectl wrapper with index-based resource selection

Project description

██╗  ██╗██╗  ██╗
██║ ██╔╝╚██╗██╔╝
█████╔╝  ╚███╔╝ 
██╔═██╗  ██╔██╗ 
██║  ██╗██╔╝ ██╗
╚═╝  ╚═╝╚═╝  ╚═╝

kubectl, indexed.

kx is a kubectl wrapper that adds index-based resource selection. Run kx get <resource> once, then reference any result by number instead of typing full resource names.

Install

pip install kx-cli

Usage

List resources

kx get <resource> [--match|-m <substring>] [kubectl flags...]

Fetches resources and assigns index numbers. Any extra flags (e.g. -n <namespace>, -A) are passed through to kubectl. Use --match/-m to filter results by name (substring, case-insensitive).

$ kx get pods
X  NAME                          READY  STATUS   RESTARTS  AGE
1  api-7d9f4b8c6-xkp2q           1/1    Running  0         2d
2  worker-6c8b5f7d9-mnt4r        1/1    Running  3         5h
3  postgres-0                    1/1    Running  0         12d

All subsequent commands reference resources by their X index from the last kx get.

Commands

Command Description
kx get <resource> [--match|-m <str>] [kubectl flags...] List resources with index numbers; optionally filter by name substring
kx describe <index> [kubectl flags...] Show kubectl describe output for an indexed resource
kx events <index> Show Kubernetes events for the resource
kx logs <index> [kubectl flags...] Stream logs; aggregates across pods for Deployments, StatefulSets, DaemonSets, and Services
kx yaml <index> Print the raw YAML manifest
kx exec <index> [cmd] [kubectl flags...] Open an interactive shell in a pod (bash → sh fallback); pass a custom command with cmd
kx edit <index> [kubectl flags...] Open the resource in your editor via kubectl edit
kx delete <index> [-y] Delete the resource (prompts for confirmation; -y skips it)
kx tree <index> [--index|-i] Show the ownership graph for a resource; --index assigns indexes to tree nodes
kx port-forward <index> <port> [kubectl flags...] Forward a local port to a resource (supports Pod, Deployment, ReplicaSet, StatefulSet, DaemonSet, Service)
kx state Show the current state (namespace and indexed resources from the last kx get)

Example workflow

# list deployments, pick index 2
kx get deployments
kx describe 2

# check events on that deployment
kx events 2

# drill into a pod
kx get pods
kx logs 1
kx exec 1            # opens bash/sh
kx exec 1 -- env     # run a specific command

# forward local port 8080 to port 80 on a service
kx get services
kx port-forward 2 8080:80

# clean up
kx delete 3

State

kx saves the last get result to ~/.kx_state.json. Index-based commands read from this file, so switching namespaces or resource types requires a new kx get.

Development

python -m venv .venv
source .venv/bin/activate
pip install -e ".[dev]"

Run the CLI directly:

python -m kx.main --help

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

kx_cli-0.0.3.tar.gz (21.2 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

kx_cli-0.0.3-py3-none-any.whl (19.7 kB view details)

Uploaded Python 3

File details

Details for the file kx_cli-0.0.3.tar.gz.

File metadata

  • Download URL: kx_cli-0.0.3.tar.gz
  • Upload date:
  • Size: 21.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.13

File hashes

Hashes for kx_cli-0.0.3.tar.gz
Algorithm Hash digest
SHA256 003954d5464bb95472e8008bc4c91f608d432b328b2ec340be8870bfefca5b3e
MD5 7154f2b21db6fc81247a13961623b984
BLAKE2b-256 091576edba9283b3c27d8d797eef7d8d92c5cfd146719ad73a398295dfd8a7bb

See more details on using hashes here.

File details

Details for the file kx_cli-0.0.3-py3-none-any.whl.

File metadata

  • Download URL: kx_cli-0.0.3-py3-none-any.whl
  • Upload date:
  • Size: 19.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.13

File hashes

Hashes for kx_cli-0.0.3-py3-none-any.whl
Algorithm Hash digest
SHA256 adf2325cd49a8ff04b8d0dd690a174e94d41844e64aaca702b01f15f006addcd
MD5 16108b5008b063e253a99ca0f75a73e6
BLAKE2b-256 962add7ba63accbfd585453f7213c32ae85950d1f7b5b37d8b142bc99d6e4d8d

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page