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 августа.

☝️ Ознакомиться с программой и записаться на поток можно на нашем сайте.

Комментарии (6)


  1. ritorichesky_echpochmak
    25.07.2023 14:49

    А можно немножко подробнее про tree? Я как ни кручу, кроме справки всё выдаёт

    Error: accepts between 1 and 2 arg(s), received 0
    Error: exit status 1


    1. alitenicole Автор
      25.07.2023 14:49

      Давайте я этот момент уточню, спасибо!


  1. JuriM
    25.07.2023 14:49
    +2

    outdated точно соответствует названию - последнее обновление два года назад


  1. chemtech
    25.07.2023 14:49

    А можете подробнее рассказать про "Этот плагин обнаруживает проблемы и потенциальные уязвимости в вашем конфигурационном файле Kubernetes и предлагает рекомендации по исправлению." у kubepug?

    Я не нашел этого у них https://github.com/rikatz/kubepug


    1. Evgenym
      25.07.2023 14:49

      Подробностей вряд ли дождетесь) Это перевод статьи с Медиума. "Мопед не мой", как говорится.


    1. alitenicole Автор
      25.07.2023 14:49
      -1

      Спрошу у наших экспертов, спасибо)