README.md 3.23 KB
Newer Older
1
# Kubernetes prompt for zsh
Jon Mosco's avatar
Jon Mosco committed
2

3
A Kubernetes zsh prompt that displays the current cluster cluster
Jon Mosco's avatar
Jon Mosco committed
4
5
6
7
and the namespace.

Inspired by several tools used to simplify usage of kubectl

8
9
NOTE: If you are not using zsh, check out [kube-ps1](https://github.com/jonmosco/kube-ps1)
designed for bash as well as zsh.
Jon Mosco's avatar
Jon Mosco committed
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33

## Requirements

The default prompt assumes you have the kubectl command line utility installed.  It
can be obtained here:

[Install and Set up kubectl](https://kubernetes.io/docs/tasks/tools/install-kubectl/)

If using this with OpenShift, the oc tool needs installed.  It can be obtained from here:

[OC Client Tools](https://www.openshift.org/download.html)

## Helper utilities

There are several great tools that make using kubectl very enjoyable.

[kubectx and kubenx](https://github.com/ahmetb/kubectx) are great for
fast switching between clusters and namespaces.

## Prompt Structure

The prompt layout is:

```
34
(<symbol>|<cluster>:<namespace>)
Jon Mosco's avatar
Jon Mosco committed
35
36
```

37
## Enabling
Jon Mosco's avatar
Jon Mosco committed
38

39
40
41
42
In order to use kube-ps1 with Oh My Zsh, you'll need to enable them in the
.zshrc file. You'll find the zshrc file in your $HOME directory. Open it with
your favorite text editor and you'll see a spot to list all the plugins you
want to load.
Jon Mosco's avatar
Jon Mosco committed
43

44
45
```shell
vim $HOME/.zshrc
Jon Mosco's avatar
Jon Mosco committed
46
```
47

48
Add kube-ps1 to the list of enabled plugins and enable it on the prompt:
49
50
51
52
53
54

```shell
plugins=(
  git
  kube-ps1
)
55

56
# After the "source Oh My Zsh" line
57
PROMPT=$PROMPT'$(kube_ps1) '
58
59
# Or in double quotes, don't forget to escape
PROMPT=$PROMPT"\$(kube_ps1) "
60
61
```

62
Note: The `PROMPT` example above was tested with the theme `robbyrussell`.
63
64
65
66
67
68
69
70
71
72
73
74

## Enabling / Disabling on the current shell

Sometimes the kubernetes information can be anoying, you can easily 
switch it on and off with the following commands:

```shell
kubeon
```

```shell
kubeoff
Jon Mosco's avatar
Jon Mosco committed
75
76
77
78
```

## Colors

79
80
Blue was used as the prefix to match the Kubernetes color as closely as
possible. Red was chosen as the cluster name to stand out, and cyan
81
for the namespace. Check the customization section for changing them.
Jon Mosco's avatar
Jon Mosco committed
82
83
84
85
86
87
88

## Customization

The default settings can be overridden in ~/.zshrc

| Variable | Default | Meaning |
| :------- | :-----: | ------- |
89
| `KUBE_PS1_BINARY` | `kubectl` | Default Kubernetes binary |
Jon Mosco's avatar
Jon Mosco committed
90
| `KUBE_PS1_PREFIX` | `(` | Prompt opening character  |
91
92
93
94
| `KUBE_PS1_SYMBOL_ENABLE` | `true ` | Display the prompt Symbol. If set to `false`, this will also disable `KUBE_PS1_SEPARATOR` |
| `KUBE_PS1_SYMBOL_DEFAULT` | `⎈ ` | Default prompt symbol. Unicode `\u2388` |
| `KUBE_PS1_SYMBOL_USE_IMG` | `false` | ☸️  ,  Unicode `\u2638` as the prompt symbol |
| `KUBE_PS1_NS_ENABLE` | `true` | Display the namespace. If set to `false`, this will also disable `KUBE_PS1_DIVIDER` |
Jon Mosco's avatar
Jon Mosco committed
95
96
97
| `KUBE_PS1_SEPERATOR` | `\|` | Separator between symbol and cluster name |
| `KUBE_PS1_DIVIDER` | `:` | Separator between cluster and namespace |
| `KUBE_PS1_SUFFIX` | `)` | Prompt closing character |
98
99
100
101
| `KUBE_PS1_COLOR_SYMBOL` | `"%F{blue}"` | Custom color for the symbol |
| `KUBE_PS1_COLOR_CONTEXT` | `"%F{red}"` | Custom color for the context |
| `KUBE_PS1_COLOR_NS` | `"%F{cyan}"` | Custom color for the namespace |
| `KUBE_PS1_ENABLED` | `true` | Set to false to start disabled on any new shell, `kubeon`/`kubeoff` will flip this value on the current shell |
Jon Mosco's avatar
Jon Mosco committed
102
103
104

## Contributors

105
- Jared Yanovich
106
- Pedro Moranga