ZSH
Начнем с самого часто используемого инструмента — интерпретатора командной строки. Я использую zsh — из‑за плагинов, тем и возможностей автодополнения. Автодополнение из истории сильно сокращает время набора команд, а плагины еще больше расширяют автодополнение, обеспечивают подсветку синтаксиса, добавляют полезные алиасы.
Два наиболее полезных плагина:
- git — отображает ветки/коммиты/репозитории. Наглядно видно, в каком репозитории находишься, инициализирован ли он, какая ветка, коммит, синхронизировано ли с удаленным репозиторием и прочее;
- zsh-syntax-highlighting — подсветка синтаксиса в консоли. Удобно при написании и отладке скриптов.
Также рекомендую установить плагины для каждодневно используемых инструментов: AWS, Docker, brew, knife, node, encode64, kubectl, osx, Python, pip. Практически все добавляют подсказки по табу, что уже очень полезно, некоторые по этому же табу стучатся в API сервисов и предлагают расширенное автодополнение, а не только возможные команды.
Плагины AWS и kubectl делают еще одну важную вещь — всегда показывают контекст/профиль, в котором работаешь, и сильно снижают шансы ошибиться и вкинуть какую‑нибудь опасную команду не в тот терминал. Плюс, к примеру, расширение для амазона умеет считывать назначенные профилям цвета, и, если будешь работать в проде, можно подкрасить профиль ярко‑красным, чтобы точно понимать, где выполняется команда.
Хорошая тема: powerlevel10k, гибкая, красивая, информативная, можно настроить по вкусу очень много вещей. Особенно удобен сквош исполненных команд после выполнения, чтобы не засорять экран.
Плагины, как и темы, установить довольно просто. Если заморачиваться — для этого есть плагин/пакет‑менеджеры для zsh вроде antigen или Zinit. Но в целом установка сводится к git
и запуску скрипта, который сам все настроит. Для поиска плагинов лучше всего использовать подборки на GitHub вроде awesome-zsh-plugins.
Screen и tmux
Screen — это эмулятор (а точнее, мультиплексор) терминальных сессий VT100. Но обычно его используют как способ безопасно выполнить команды через SSH на случай прерывания соединения.
К примеру, ты запускаешь «долгоиграющую» команду вроде apt-get
и в этот момент соединение с сервером обрывается. В итоге дочерний процесс apt-get-сессии SSH умирает и процесс обновления пакетов останавливается. Чтобы этого не произошло, просто запусти screen и уже в нем запускай все нужные команды. Теперь, если соединение оборвется, родительский процесс screen останется жив и не только позволит команде корректно завершиться, но и позволит заново подключиться к существующей сессии, причем неважно, с какого устройства.
У Screen есть более современная альтернатива под названием tmux. Ее разработали парни из OpenBSD, и в целом она отличается более высокой производительностью и наличием различных современных плюшек, вроде поддержки плагинов. Сразу рекомендую установить плагин tmux-resurrect, позволяющий сохранить текущий набор открытых в tmux терминалов в файл и восстановить его, когда понадобится выполнить схожую задачу.
JQ
Взаимодействие с вебом и облачными инфраструктурами по большей части идет в формате JSON. Kubectl и многие другие инструменты также умеют выводить данные в JSON. Поэтому нам нужен JSON-процессор, и лучший из них — это jq. Очень удобный инструмент с развитым синтаксисом и достаточной гибкостью, чтобы писать сложные вложенные запросы и условия.
В man
можно найти полную документацию с хорошими примерами использования, да и в целом инструмент настолько популярен, что примеры есть практически для любой задачи. Далее несколько примеров работы с Kubernetes.
Посмотреть выставленные переменные окружения в контейнерах:
$ kubectl get pods --all-namespaces -o json | jq '.items[].spec.containers[].env[]?'
Поиск поврежденных деплойментов:
$ kubectl get --raw=/apis/apps/v1/deployments | jq '.items[] | {name: .metadata.name, replicas: .status.replicas, available: (.status.availableReplicas // 0), unavailable: (.status.unavailableReplicas // 0)} | select (.unavailable > 0)'
Быстро посмотреть, какие образы доступны на нодах (часто помогает при проблеме с кешированием и скачиванием образов новых версий):
$ kubectl get nodes -o json | jq '.items[] | .status .images[]'`
Схоже с предыдущей, вариант быстрого просмотра доступных ресурсов на нодах, удобно пользоваться в связке со скриптами:
$ kubectl get nodes -o json | jq '.items[] | .status .allocatable'
K9S и K8S Lens
K9s — консольный менеджер для Kubernetes. Легкий, быстрый, поддерживает все способы авторизации в кубере, включая SSO и aws-iam-auth. Позволяет быстро и наглядно перемещаться по кластеру, редактировать манифесты и ресурсы, заходить в контейнеры, смотреть загрузку ресурсов.
Продолжение доступно только участникам
Вариант 1. Присоединись к сообществу «Xakep.ru», чтобы читать все материалы на сайте
Членство в сообществе в течение указанного срока откроет тебе доступ ко ВСЕМ материалам «Хакера», позволит скачивать выпуски в PDF, отключит рекламу на сайте и увеличит личную накопительную скидку! Подробнее
Вариант 2. Открой один материал
Заинтересовала статья, но нет возможности стать членом клуба «Xakep.ru»? Тогда этот вариант для тебя! Обрати внимание: этот способ подходит только для статей, опубликованных более двух месяцев назад.
Я уже участник «Xakep.ru»