mirror of
https://github.com/ahmetb/kubectx.git
synced 2025-07-18 09:11:16 +00:00
Make Completions Installable with Antibody (#263)
This commit is contained in:
parent
a509657288
commit
bdb1ea9e9d
155
README.md
155
README.md
@ -98,22 +98,23 @@ Active namespace is "default".
|
|||||||
|
|
||||||
There are several installation options:
|
There are several installation options:
|
||||||
|
|
||||||
- As kubectl plugins (macOS/Linux)
|
- [as kubectl plugins (macOS & Linux)](#kubectl-plugins-macos-and-linux)
|
||||||
- macOS
|
- [with Homebrew (macOS & Linux)](#homebrew-macos-and-linux)
|
||||||
- Homebrew (recommended)
|
- [with MacPorts (macOS)](#macports-macos)
|
||||||
- MacPorts
|
- [with apt (Debian)](#apt-debian)
|
||||||
- Linux
|
- [with pacman (Arch Linux)](#pacman-arch-linux)
|
||||||
- Debian
|
- [manually (macOS & Linux)](#manual-installation-macos-and-linux)
|
||||||
- Arch Linux
|
|
||||||
- Homebrew
|
If you like to add context/namespace information to your shell prompt (`$PS1`), you can try out [kube-ps1](https://github.com/jonmosco/kube-ps1).
|
||||||
- Manual installation
|
|
||||||
|
|
||||||
### Kubectl Plugins (macOS and Linux)
|
### Kubectl Plugins (macOS and Linux)
|
||||||
|
|
||||||
You can install and use [Krew](https://github.com/kubernetes-sigs/krew/) kubectl
|
You can install and use the [Krew](https://github.com/kubernetes-sigs/krew/) kubectl
|
||||||
plugin manager to get `kubectx` and `kubens`. **NOTE:** This will not install
|
plugin manager to get `kubectx` and `kubens`.
|
||||||
shell completion scripts, if you want those, choose another installation method
|
|
||||||
below.
|
**NOTE:** This will not install the shell completion scripts. If you want them, choose another installation method
|
||||||
|
or install the scripts [manually](#manual-installation-macos-and-linux).
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
kubectl krew install ctx
|
kubectl krew install ctx
|
||||||
@ -122,33 +123,30 @@ kubectl krew install ns
|
|||||||
|
|
||||||
After installing, the tools will be available as `kubectl ctx` and `kubectl ns`.
|
After installing, the tools will be available as `kubectl ctx` and `kubectl ns`.
|
||||||
|
|
||||||
### macOS
|
### Homebrew (macOS and Linux)
|
||||||
|
|
||||||
#### Homebrew
|
If you use [Homebrew](https://brew.sh/) you can install like this:
|
||||||
|
|
||||||
:confetti_ball: If you use [Homebrew](https://brew.sh/) you can install like this:
|
```sh
|
||||||
|
brew install kubectx
|
||||||
brew install kubectx
|
```
|
||||||
|
|
||||||
This command will set up bash/zsh/fish completion scripts automatically.
|
This command will set up bash/zsh/fish completion scripts automatically.
|
||||||
|
|
||||||
- If you like to add context/namespace info to your shell prompt (`$PS1`),
|
|
||||||
I recommend trying out [kube-ps1](https://github.com/jonmosco/kube-ps1).
|
|
||||||
|
|
||||||
#### MacPorts
|
### MacPorts (macOS)
|
||||||
|
|
||||||
If you use [MacPorts](https://www.macports.org) you can install like this:
|
If you use [MacPorts](https://www.macports.org) you can install like this:
|
||||||
|
|
||||||
sudo port install kubectx
|
```sh
|
||||||
|
sudo port install kubectx
|
||||||
|
```
|
||||||
|
|
||||||
### Linux
|
### apt (Debian)
|
||||||
|
|
||||||
#### Debian
|
|
||||||
|
|
||||||
``` bash
|
``` bash
|
||||||
sudo apt install kubectx
|
sudo apt install kubectx
|
||||||
```
|
```
|
||||||
|
|
||||||
Newer versions might be available on repos like
|
Newer versions might be available on repos like
|
||||||
[Debian Buster (testing)](https://packages.debian.org/buster/kubectx),
|
[Debian Buster (testing)](https://packages.debian.org/buster/kubectx),
|
||||||
[Sid (unstable)](https://packages.debian.org/sid/kubectx)
|
[Sid (unstable)](https://packages.debian.org/sid/kubectx)
|
||||||
@ -156,7 +154,8 @@ Newer versions might be available on repos like
|
|||||||
testing/unstable repos, check out the
|
testing/unstable repos, check out the
|
||||||
[Debian Wiki](https://wiki.debian.org/DebianReleases)_):
|
[Debian Wiki](https://wiki.debian.org/DebianReleases)_):
|
||||||
|
|
||||||
#### Arch Linux
|
|
||||||
|
### pacman (Arch Linux)
|
||||||
|
|
||||||
Available as official Arch Linux package. Install it via:
|
Available as official Arch Linux package. Install it via:
|
||||||
|
|
||||||
@ -164,20 +163,10 @@ Available as official Arch Linux package. Install it via:
|
|||||||
sudo pacman -S kubectx
|
sudo pacman -S kubectx
|
||||||
```
|
```
|
||||||
|
|
||||||
#### Homebrew
|
|
||||||
|
|
||||||
:confetti_ball: If you use [Homebrew](https://brew.sh/) you can install like this:
|
### Manual Installation (macOS and Linux)
|
||||||
|
|
||||||
brew install kubectx
|
Since `kubectx` and `kubens` are written in Bash, you should be able to install
|
||||||
|
|
||||||
This command will set up bash/zsh/fish completion scripts automatically.
|
|
||||||
|
|
||||||
- If you like to add context/namespace info to your shell prompt (`$PS1`),
|
|
||||||
I recommend trying out [kube-ps1](https://github.com/jonmosco/kube-ps1).
|
|
||||||
|
|
||||||
#### Manual
|
|
||||||
|
|
||||||
Since `kubectx`/`kubens` are written in Bash, you should be able to install
|
|
||||||
them to any POSIX environment that has Bash installed.
|
them to any POSIX environment that has Bash installed.
|
||||||
|
|
||||||
- Download the `kubectx`, and `kubens` scripts.
|
- Download the `kubectx`, and `kubens` scripts.
|
||||||
@ -186,38 +175,6 @@ them to any POSIX environment that has Bash installed.
|
|||||||
- or save them to a directory, then create symlinks to `kubectx`/`kubens` from
|
- or save them to a directory, then create symlinks to `kubectx`/`kubens` from
|
||||||
somewhere in your `PATH`, like `/usr/local/bin`
|
somewhere in your `PATH`, like `/usr/local/bin`
|
||||||
- Make `kubectx` and `kubens` executable (`chmod +x ...`)
|
- Make `kubectx` and `kubens` executable (`chmod +x ...`)
|
||||||
- Install bash/zsh/fish [completion scripts](completion/).
|
|
||||||
- For zsh:
|
|
||||||
The completion scripts have to be in a path that belongs to `$fpath`. Either link or copy them to an existing folder.
|
|
||||||
If using oh-my-zsh you can do as follows:
|
|
||||||
```bash
|
|
||||||
mkdir -p ~/.oh-my-zsh/completions
|
|
||||||
chmod -R 755 ~/.oh-my-zsh/completions
|
|
||||||
ln -s /opt/kubectx/completion/kubectx.zsh ~/.oh-my-zsh/completions/_kubectx.zsh
|
|
||||||
ln -s /opt/kubectx/completion/kubens.zsh ~/.oh-my-zsh/completions/_kubens.zsh
|
|
||||||
```
|
|
||||||
Note that the leading underscore seems to be a convention. If completion doesn't work, add `autoload -U compinit && compinit` to your `.zshrc` (similar to [`zsh-completions`](https://github.com/zsh-users/zsh-completions/blob/master/README.md#oh-my-zsh)).
|
|
||||||
If not using oh-my-zsh, you could link to `/usr/share/zsh/functions/Completion` (might require sudo), depending on the `$fpath` of your zsh installation.
|
|
||||||
In case of error, calling `compaudit` might help.
|
|
||||||
- For bash:
|
|
||||||
```bash
|
|
||||||
git clone https://github.com/ahmetb/kubectx.git ~/.kubectx
|
|
||||||
COMPDIR=$(pkg-config --variable=completionsdir bash-completion)
|
|
||||||
ln -sf ~/.kubectx/completion/kubens.bash $COMPDIR/kubens
|
|
||||||
ln -sf ~/.kubectx/completion/kubectx.bash $COMPDIR/kubectx
|
|
||||||
cat << FOE >> ~/.bashrc
|
|
||||||
|
|
||||||
|
|
||||||
#kubectx and kubens
|
|
||||||
export PATH=~/.kubectx:\$PATH
|
|
||||||
FOE
|
|
||||||
```
|
|
||||||
- For fish:
|
|
||||||
```fish
|
|
||||||
mkdir -p ~/.config/fish/completions
|
|
||||||
ln -s /opt/kubectx/completion/kubectx.fish ~/.config/fish/completions/
|
|
||||||
ln -s /opt/kubectx/completion/kubens.fish ~/.config/fish/completions/
|
|
||||||
```
|
|
||||||
|
|
||||||
Example installation steps:
|
Example installation steps:
|
||||||
|
|
||||||
@ -227,13 +184,65 @@ sudo ln -s /opt/kubectx/kubectx /usr/local/bin/kubectx
|
|||||||
sudo ln -s /opt/kubectx/kubens /usr/local/bin/kubens
|
sudo ln -s /opt/kubectx/kubens /usr/local/bin/kubens
|
||||||
```
|
```
|
||||||
|
|
||||||
|
If you also want to have shell completions, pick an installation method for the [completion scripts](completion/) that fits your system best: [`zsh` with `antibody`](#completion-scripts-for-zsh-with-antibody), [plain `zsh`](#completion-scripts-for-plain-zsh), [`bash`](#completion-scripts-for-bash) or [`fish`](#completion-scripts-for-fish).
|
||||||
|
|
||||||
|
#### Completion scripts for `zsh` with [antibody](https://getantibody.github.io)
|
||||||
|
|
||||||
|
Add this line to your [Plugins File](https://getantibody.github.io/usage/) (e.g. `~/.zsh_plugins.txt`):
|
||||||
|
|
||||||
|
```
|
||||||
|
ahmetb/kubectx path:completion kind:fpath
|
||||||
|
```
|
||||||
|
|
||||||
|
Depending on your setup, you might or might not need to call `compinit` or `autoload -U compinit && compinit` in your `~/.zshrc` after you load the Plugins file. If you use [oh-my-zsh](https://github.com/ohmyzsh/ohmyzsh), load the completions before you load `oh-my-zsh` because `oh-my-zsh` will call `compinit`.
|
||||||
|
|
||||||
|
#### Completion scripts for plain `zsh`
|
||||||
|
The completion scripts have to be in a path that belongs to `$fpath`. Either link or copy them to an existing folder.
|
||||||
|
|
||||||
|
Example with [`oh-my-zsh`](https://github.com/ohmyzsh/ohmyzsh):
|
||||||
|
|
||||||
|
```bash
|
||||||
|
mkdir -p ~/.oh-my-zsh/completions
|
||||||
|
chmod -R 755 ~/.oh-my-zsh/completions
|
||||||
|
ln -s /opt/kubectx/completion/_kubectx.zsh ~/.oh-my-zsh/completions/_kubectx.zsh
|
||||||
|
ln -s /opt/kubectx/completion/_kubens.zsh ~/.oh-my-zsh/completions/_kubens.zsh
|
||||||
|
```
|
||||||
|
|
||||||
|
If completion doesn't work, add `autoload -U compinit && compinit` to your `.zshrc` (similar to [`zsh-completions`](https://github.com/zsh-users/zsh-completions/blob/master/README.md#oh-my-zsh)).
|
||||||
|
|
||||||
|
If you are not using [`oh-my-zsh`](https://github.com/ohmyzsh/ohmyzsh), you could link to `/usr/share/zsh/functions/Completion` (might require sudo), depending on the `$fpath` of your zsh installation.
|
||||||
|
|
||||||
|
In case of errors, calling `compaudit` might help.
|
||||||
|
|
||||||
|
#### Completion scripts for `bash`
|
||||||
|
|
||||||
|
```bash
|
||||||
|
git clone https://github.com/ahmetb/kubectx.git ~/.kubectx
|
||||||
|
COMPDIR=$(pkg-config --variable=completionsdir bash-completion)
|
||||||
|
ln -sf ~/.kubectx/completion/kubens.bash $COMPDIR/kubens
|
||||||
|
ln -sf ~/.kubectx/completion/kubectx.bash $COMPDIR/kubectx
|
||||||
|
cat << EOF >> ~/.bashrc
|
||||||
|
|
||||||
|
|
||||||
|
#kubectx and kubens
|
||||||
|
export PATH=~/.kubectx:\$PATH
|
||||||
|
EOF
|
||||||
|
```
|
||||||
|
|
||||||
|
#### Completion scripts for `fish`
|
||||||
|
|
||||||
|
```fish
|
||||||
|
mkdir -p ~/.config/fish/completions
|
||||||
|
ln -s /opt/kubectx/completion/kubectx.fish ~/.config/fish/completions/
|
||||||
|
ln -s /opt/kubectx/completion/kubens.fish ~/.config/fish/completions/
|
||||||
|
```
|
||||||
|
|
||||||
-----
|
-----
|
||||||
|
|
||||||
### Interactive mode
|
### Interactive mode
|
||||||
|
|
||||||
If you want `kubectx` and `kubens` commands to present you an interactive menu
|
If you want `kubectx` and `kubens` commands to present you an interactive menu
|
||||||
with fuzzy searching, you just need to [install
|
with fuzzy searching, you just need to [install `fzf`](https://github.com/junegunn/fzf) in your `$PATH`.
|
||||||
`fzf`](https://github.com/junegunn/fzf) in your PATH.
|
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user