Kubectl (Kubernetes Control) — это по сути основной интерфейс для взаимодействия с Kubernetes-кластером. Сторонние разработчики сделали для него много полезных плагинов, которые в той или иной ситуации могут облегчить работу инженера и сэкономить время. В этой статье рассмотрим 11 удобных плагинов для расширения функционала kubectl
.
![](https://habrastorage.org/getpro/habr/upload_files/796/2c8/5d1/7962c85d10421f98fa53766825f0a059.png)
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
![](https://habrastorage.org/getpro/habr/upload_files/7c8/da8/3b4/7c8da83b4f535b2491385ca6e2a12798.png)
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
![](https://habrastorage.org/getpro/habr/upload_files/6eb/d56/ae0/6ebd56ae0c6c10691497752f3740857b.png)
k9s
— это инструмент пользовательского интерфейса на основе терминала, который предоставляет удобный интерфейс для управления кластерами Kubernetes. Он позволяет интуитивно просматривать ресурсы Kubernetes: модули, сервисы и развертывания. Так же он позволяет взаимодействовать с ними. Вы можете использовать k9s
для мониторинга работоспособности ваших приложений, просмотра журналов и выполнения таких действий, как масштабирование или удаление ресурсов.
Repo URL: https://github.com/derailed/k9s
kubepug
![](https://habrastorage.org/getpro/habr/upload_files/742/f47/407/742f474071b822cbbd9223c1008efd70.png)
Этот плагин обнаруживает проблемы и потенциальные уязвимости в вашем конфигурационном файле Kubernetes и предлагает рекомендации по исправлению. Например, он поможет вам найти устаревшие и удаленные API в ваших ресурсах Kubernetes перед переходом на новую версию.
Repo URL: https://github.com/rikatz/kubepug
rakkess
![](https://habrastorage.org/getpro/habr/upload_files/25e/f9b/579/25ef9b57992e2d15614a2bde3f78af95.png)
Многие администраторы кластеров Kubernetes реализуют принцип наименьших привилегий (least privilege) для безопасности своих кластеров.
Этот плагин поможет вам понять привилегии, которыми обладает каждый пользователь для всех заданных ресурсов в кластере.
Repo URL: https://github.com/corneliusweig/rakkess
kube-score
![](https://habrastorage.org/getpro/habr/upload_files/c87/7b7/8db/c877b78dbae0f7f047497bfb21d4719a.png)
В конвейерах CI/CD обычно есть статический анализ для проверки качества кода разработчика, но как насчет манифестов?
kube-score
— плагин, который оценивает качество на основе определенных правил для развернутых ресурсов Kubernetes. Он поможет выявить, как соблюдаются или не соблюдаются некоторые рекомендации и практики.
Repo URL: https://github.com/zegl/kube-score
ketall
![](https://habrastorage.org/getpro/habr/upload_files/d04/702/b71/d04702b718c470fc41ba8f9ee7c3ac96.png)
Вы когда-нибудь сталкивались с тем, что при выводе kubectl get all
отсутствуют некоторые ресурсы?
Команда kubectl get all
не дает список всех ресурсов. Она возвращает только те, у которых определено значение kind: all
в API-файлах. Поэтому некоторые ресурсы надо искать самостоятельно. Плагин ketall
сэкономит ваше время и выведет список всех ресурсов в кластере, в пространстве имен, по меткам и т. д.
Repo URL: https://github.com/corneliusweig/ketall
kubectl-tree
![](https://habrastorage.org/getpro/habr/upload_files/7f7/2bb/b88/7f72bbb8886b1592f593af08a2c2c18a.png)
Иногда сложно понять, как связаны между собой разные объекты в Kubernetes. Из-за этого можно потратить уйму времени при устранении неполадки.
Плагин kubectl-tree
поможет понять отношения между объектами Kubernetes в действующем кластере и сократит время устранения неполадок.
Repo URL: https://github.com/ahmetb/kubectl-tree
outdated
![](https://habrastorage.org/getpro/habr/upload_files/0e6/920/d29/0e6920d29a0859e62d7eedba345a357b.png)
Этот плагин ищет устаревшие версии компонентов Kubernetes, выводит информацию о них и подсказывает, как их можно обновить.
Repo URL : https://github.com/replicatedhq/outdated
Итоги
Мы рассмотрели 11 особенно полезных плагинов, которые, на наш взгляд, заслуживают внимания и облегчают работу с kubectl
. Но на самом деле их гораздо больше. Чтобы найти их, используйте krew. Он может похвастаться впечатляющей библиотекой из 206 различных плагинов.
Если вы хотите научиться работать с Kubernetes на продвинутом уровне, заглянуть под капот и научиться создавать отказоустойчивые кластеры, приходите на наш курс «Kubernetes Мега». Ближайший поток стартует 28 августа.
☝️ Ознакомиться с программой и записаться на поток можно на нашем сайте.