Kubie

kubie is an alternative to kubectx, kubens and the k on prompt modification script. It offers context switching, namespace switching and prompt modification in a way that makes each shell independent from others. It also has support for split configuration files, meaning it can load Kubernetes contexts from multiple files. You can configure the paths where kubie will look for contexts, see the settings section.

Kubie also has other nice features such as kubie exec which allows you to execute commands in a context and a namespace without having to spawn a shell and kubie lint which scans your k8s config files for issues and informs you of what they are.

Thanks to @ahermant for the lovely logo!

Installation

Binary

You can download a binary for Linux or OS X on the GitHub releases page. You can use curl or wget to download it. Don't forget to chmod +x the file!

Cargo

You can build kubie from source using cargo and crates.io. If you do not have a Rust compiler installed, go to rustup.rs to get one. Then you can run cargo install kubie and kubie will be downloaded from crates.io and then built.

Homebrew

You can install kubie from Homebrew by running brew install kubie.

Nix

There is a kubie Nix package maintained by @illiusdope that you can install.

Bash autocomplete

If you want autocompletion for kubie ctx, kubie ns and kubie exec, please install this script: bash sudo cp ./completion/kubie.bash /etc/bash_completion.d/kubie

Then spawn new shell or source copied file: bash . /etc/bash_completion.d/kubie

Usage

Note that if you have fzf installed, the experience will be greatly improved. Selectable menus will be available when using kubie ctx and kubie ns.


Settings

You can customize kubie's behavior with the ~/.kube/kubie.yaml file. The settings available and their defaults are available below.

```yaml

Force kubie to use a particular shell, if unset detect shell currently in use.

Possible values: bash, dash, fish, zsh

Default: unset

shell: bash

Configure where to look for kubernetes config files.

configs:

# Include these globs.
# Default: values listed below.
include:
    - ~/.kube/config
    - ~/.kube/*.yml
    - ~/.kube/*.yaml
    - ~/.kube/configs/*.yml
    - ~/.kube/configs/*.yaml
    - ~/.kube/kubie/*.yml
    - ~/.kube/kubie/*.yaml

# Exclude these globs.
# Default: values listed below.
# Note: kubie's own config file is always excluded.
exclude:
    - ~/.kube/kubie.yaml

Prompt settings.

prompt: # Disable kubie's custom prompt inside of a kubie shell. This is useful # when you already have a prompt displaying kubernetes information. # Default: false disable: true

# When using recursive contexts, show depth when larger than 1.
# Default: true
show_depth: true

# When using zsh, show context and namespace on the right-hand side using RPS1.
# Default: false
zsh_use_rps1: false

# When using fish, show context and namespace on the right-hand side.
# Default: false
fish_use_rprompt: false

```

Future plans