Kubectl (Kubernetes Control) — это по сути основной интерфейс для взаимодействия с Kubernetes-кластером. Сторонние разработчики сделали для него много полезных плагинов, которые в той или иной ситуации могут облегчить работу инженера и сэкономить время. В этой статье рассмотрим 11 удобных плагинов для расширения функционала kubectl
.

Krew — инструмент для поиска плагинов
Чтобы быстро добавить новые плагины для kubectl
, можно воспользоваться утилитой krew. Это своего рода магазин плагинов, похожий на менеджеры пакетов типа yum
, apt
, apk
и brew
. С krew вы получите доступ к обширной библиотеке плагинов.
Вот список плагинов, которые мы рассмотрим:
Kubectx
Kubens
Stern
Kubectl-who-can
K9s
Kubepug
Rakkess
Ketall
Kubectl-Score
Kubectl-tree
Outdated
kubectx
kubectx
— это инструмент командной строки, который позволяет пользователям переключаться между контекстами (кластерами) и пространствами имен Kubernetes быстрее и проще, чем с помощью одних только команд kubectl
.
В Kubernetes контекст — это комбинация кластера, пользователя и пространства имен. На вашем компьютере может быть настроено несколько контекстов, каждый из которых представляет отдельный кластер Kubernetes, пользователя и пространство имен. Переключение между контекстами необходимо, когда вы работаете с несколькими кластерами или пространствами имен. Потому что вводить полную команду kubectl
каждый раз, чтобы переключиться, довольно утомительно.
kubectx
упрощает этот процесс и дает простой и интуитивно понятный интерфейс командной строки для переключения между контекстами. С kubectx
вы можете использовать одну команду, чтобы вывести список всех доступных контекстов, переключиться на другой контекст или даже создать новый.
Вот некоторые из ключевых особенностей kubectx
:
Быстрое переключение между контекстами. Введите команду
kubectx
, за ней имя контекста, чтобы быстро переключиться между контекстами.Автодополнение. Имена контекстов в
kubectx
дополняются автоматически. Это упрощает переключение.Список контекстов. Используйте команду
kubectx
без аргументов, чтобы вывести список всех доступных контекстов.
Repo URL: https://github.com/ahmetb/kubectx
kubens
kubens
— это инструмент командной строки, который упрощает переключение между пространствами имен и помогает настроить их для использования с kubectl
. В Kubernetes пространство имен — это виртуальный кластер внутри физического кластера, который используется для разделения и изоляции ресурсов внутри кластера.
С Kubens
вы можете быстро переключаться между пространствами имен в контексте Kubernetes и настраивать активное пространство имен для использования с kubectl. Это может быть особенно полезно при работе с несколькими пространствами имен в одном кластере. Нет необходимости каждый раз вводить полную команду kubectl
.
Repo URL: https://github.com/ahmetb/kubectx
stern

stern
— это инструмент для отслеживания и фильтрации журналов из нескольких модулей Kubernetes одновременно. Он позволяет просматривать журналы из нескольких контейнеров и модулей в одном потоке. Это упрощает отладку.
Repo URL: https://github.com/stern/stern
kubectl-who-can
kubectl-who-can
— это инструмент командной строки, который помогает определить, какие пользователи или учетные записи служб имеют доступ к определенным ресурсам в вашем кластере. Проверяйте кто и какие действия может выполнять, например, создавать, обновлять или удалять ресурсы.
Repo URL: https://github.com/aquasecurity/kubectl-who-can
k9s

k9s
— это инструмент пользовательского интерфейса на основе терминала, который предоставляет удобный интерфейс для управления кластерами Kubernetes. Он позволяет интуитивно просматривать ресурсы Kubernetes: модули, сервисы и развертывания. Так же он позволяет взаимодействовать с ними. Вы можете использовать k9s
для мониторинга работоспособности ваших приложений, просмотра журналов и выполнения таких действий, как масштабирование или удаление ресурсов.
Repo URL: https://github.com/derailed/k9s
kubepug

Этот плагин обнаруживает проблемы и потенциальные уязвимости в вашем конфигурационном файле Kubernetes и предлагает рекомендации по исправлению. Например, он поможет вам найти устаревшие и удаленные API в ваших ресурсах Kubernetes перед переходом на новую версию.
Repo URL: https://github.com/rikatz/kubepug
rakkess

Многие администраторы кластеров Kubernetes реализуют принцип наименьших привилегий (least privilege) для безопасности своих кластеров.
Этот плагин поможет вам понять привилегии, которыми обладает каждый пользователь для всех заданных ресурсов в кластере.
Repo URL: https://github.com/corneliusweig/rakkess
kube-score

В конвейерах CI/CD обычно есть статический анализ для проверки качества кода разработчика, но как насчет манифестов?
kube-score
— плагин, который оценивает качество на основе определенных правил для развернутых ресурсов Kubernetes. Он поможет выявить, как соблюдаются или не соблюдаются некоторые рекомендации и практики.
Repo URL: https://github.com/zegl/kube-score
ketall

Вы когда-нибудь сталкивались с тем, что при выводе kubectl get all
отсутствуют некоторые ресурсы?
Команда kubectl get all
не дает список всех ресурсов. Она возвращает только те, у которых определено значение kind: all
в API-файлах. Поэтому некоторые ресурсы надо искать самостоятельно. Плагин ketall
сэкономит ваше время и выведет список всех ресурсов в кластере, в пространстве имен, по меткам и т. д.
Repo URL: https://github.com/corneliusweig/ketall
kubectl-tree

Иногда сложно понять, как связаны между собой разные объекты в Kubernetes. Из-за этого можно потратить уйму времени при устранении неполадки.
Плагин kubectl-tree
поможет понять отношения между объектами Kubernetes в действующем кластере и сократит время устранения неполадок.
Repo URL: https://github.com/ahmetb/kubectl-tree
outdated

Этот плагин ищет устаревшие версии компонентов Kubernetes, выводит информацию о них и подсказывает, как их можно обновить.
Repo URL : https://github.com/replicatedhq/outdated
Итоги
Мы рассмотрели 11 особенно полезных плагинов, которые, на наш взгляд, заслуживают внимания и облегчают работу с kubectl
. Но на самом деле их гораздо больше. Чтобы найти их, используйте krew. Он может похвастаться впечатляющей библиотекой из 206 различных плагинов.
Если вы хотите научиться работать с Kubernetes на продвинутом уровне, заглянуть под капот и научиться создавать отказоустойчивые кластеры, приходите на наш курс «Kubernetes Мега». Ближайший поток стартует 28 августа.
☝️ Ознакомиться с программой и записаться на поток можно на нашем сайте.