Найти в Дзене
Иван Коротков

Oh-My-ZSH и Kubernetes

ZSH, или Z Shell - альтернативный командный интерпретатор для UNIX систем. Одно из его преимуществ перед Bash, по крайней мере - для меня, это его возможности кастомизации, в первую очередь для работы с Git. Второй его важной функциональностью для меня стал автокомплит для kubectl и отображение текущего контекста кластера. Для упрощения кастомизации существует надстройка над ZSH - фреймворк Oh-My-ZSH, который мы и будем ставить. Установка и настройка Первым делом - ставим гит, zsh и если вдруг нет - curl. у меня Ubuntu, поэтому - apt install. sudo apt update && sudo apt upgrade -y
sudo apt install git zsh curl Потом, как указано на сайте проекта, выполняем скрипт установки. sh -c "$(curl -fsSL https://raw.github.com/ohmyzsh/ohmyzsh/master/tools/install.sh)" На вопрос сделать ли ZSH шеллом по умолчанию - соглашаемся, и вводим свой пароль. Готово! В свое время мне самому показали ZSH, и его чудеса, и ткнули носом в тему jnrowe - с тех пор я смотрел на остальные темы, но все казалось не
Оглавление
Стандартный Bash-shell
Стандартный Bash-shell

ZSH, или Z Shell - альтернативный командный интерпретатор для UNIX систем. Одно из его преимуществ перед Bash, по крайней мере - для меня, это его возможности кастомизации, в первую очередь для работы с Git. Второй его важной функциональностью для меня стал автокомплит для kubectl и отображение текущего контекста кластера.

Для упрощения кастомизации существует надстройка над ZSH - фреймворк Oh-My-ZSH, который мы и будем ставить.

Установка и настройка

Первым делом - ставим гит, zsh и если вдруг нет - curl. у меня Ubuntu, поэтому - apt install.

sudo apt update && sudo apt upgrade -y
sudo apt install git zsh curl

Потом, как указано на сайте проекта, выполняем скрипт установки.

sh -c "$(curl -fsSL https://raw.github.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"

На вопрос сделать ли ZSH шеллом по умолчанию - соглашаемся, и вводим свой пароль. Готово!

Добро пожаловать в ZSH!
Добро пожаловать в ZSH!

В свое время мне самому показали ZSH, и его чудеса, и ткнули носом в тему jnrowe - с тех пор я смотрел на остальные темы, но все казалось не тем. Поэтому и вам рекомендую начать с нее, а потом уже обратиться к перечню тем на гитхабе проекта.Или даже написать свою.

Открываем ~/.zshrc и правим название темы:

-3

После - активация плагинов. У меня активны гита, хельма, kubectl и плагина, отвечающего за встраивание контекста в приглашение командной строки.

-4

После этого, ваш шелл будет выглядеть примерно так:

-5

При ошибках выполнения шелла в приглашении будут отображаться коды возврата.

При переходе в гит-репозиторий - будет отображаться текущая ветка, последний символ в приглашении - треугольник - будет реагировать на статус изменений в репозитории.

Так же плагин git активирует алиасы для ускоренного ввода команд, с их полным списком можно ознакомиться здесь.

Контекст Kubernetes

После того, как я отправил тестовое изменение на продакшен-кластер, встал вопрос контроля текущего контекста Kubernetes.

Во-первых, надо чтоб у вас в системе был
kubectl.
Во-вторых, должен быть активирован плагин для ZSH kube-ps1.

После этого, добавляем в ~/.zshrc следующие строки:

KUBE_PS1_PREFIX='('
KUBE_PS1_SYMBOL_ENABLE=false
KUBE_PS1_NS_ENABLE=false
KUBE_PS1_DIVIDER=' # '
KUBE_PS1_SUFFIX=')'
KUBE_PS1_CTX_COLOR=cyan

PROMPT='$(kube_ps1) '$PROMPT

И после перезапуска, ваш шелл будет выглядеть вот так:

-6

При желании, отображение контекста можно кастомизировать.

Но и этого достаточно, чтоб не отправить изменение не на тот кластер :)