kubectl
является мощным инструментом, который позволяет вам выполнять буквально любые и все задачи, связанные с Kubernetes. Независимо от того, нужно ли вам просто перечислить стручки, узел отладки, управление RBAC или что -то еще, kubectl
может сделать это. Однако некоторые из этих распространенных задач могут быть довольно неуклюжими или могут включать в себя множество шагов, которые могут занять значительное время для выполнения. В других случаях вывод kubectl
Может быть, не точно читабельно или может включать в себя много шума, что может быть очень раздражающим, особенно если вы, например, пытаетесь что -то отладить, в каком случае имеет значение. Итак, зачем тратить время на повторяющиеся, общие, трудоемкие задачи, когда мы можем избежать этого. Спрашивая, как? Ну, позвольте мне представить вам kubectl
Плагины!
Какие плагины?
kubectl
Корабли с ограниченным набором основных функций, которые не охватывают все задачи, которые, возможно, должны выполнять администраторы Kubernetes или пользователи. Поэтому, чтобы разрешить это ограничение, мы можем расширить kubectl
С плагинами, которые функционируют как подкоманды kubectl
сам. Все эти плагины являются автономными исполняемыми файлами, которые могут быть написаны на любом языке, но, учитывая, что мы говорим об инструментах и экосистеме Kubernetes, большинство из них явно написаны в Go.
Теперь вы можете думать — «Где мне найти все эти плагины? И почему бы просто не использовать отдельные двоичные файлы без kubectl
? » — Ответ на обоих этих вопросов Крю
— менеджер пакетов для kubectl
плагины, а также SIG Kubernetes, направленные на решение проблемы управления пакетами для kubectl
Анкет
Крю
Будучи менеджером пакетов, помогает в обнаружении, установке и обновлении всех наших плагинов, но чтобы использовать его, нам сначала нужно установить его, потому что хорошо … Крю
Сам также является плагином. Вы можете перейти к руководству по установке/сценарию Здесь Чтобы установить его с помощью предпочтительного метода.
Теперь, когда у нас есть Крю
, Давайте найдем и установим несколько плагинов!
~ $ kubectl krew search NAME DESCRIPTION INSTALLED access-matrix Show an RBAC access matrix for server resources no advise-psp Suggests PodSecurityPolicies for cluster. no allctx Run commands on contexts in your kubeconfig no apparmor-manager Manage AppArmor profiles for cluster. no ... ~ $ kubectl krew search rbac-lookup NAME DESCRIPTION INSTALLED rbac-lookup Reverse lookup for RBAC no ~ $ kubectl krew info rbac-lookup NAME: rbac-lookup INDEX: default URI: https://github.com/reactiveops/rbac-lookup/releases/download/v0.6.4/rbac-lookup_0.6.4_Linux_x86_64.tar.gz SHA256: 9f6f63b2ee6f5420530b6aa589b4c8c4a4685bf87447286881d37afdd80a7fb2 VERSION: v0.6.4 HOMEPAGE: https://github.com/reactiveops/rbac-lookup DESCRIPTION: Easily find roles and cluster roles attached to any user, service account, or group name in your Kubernetes cluster.
Приведенный выше код показывает несколько способов поиска и получения информации о конкретных плагинах. Помимо поиска, используя Kubectl Krew
Вы также можете использовать индекс плагинов на Крю
S сайт Здесь Анкет В дополнение к информации, показанной Kubectl Krew
, это также дает вам ссылку на хранилище источника и количество звезд GitHub для каждого плагина. Итак, когда вы найдете то, что вам нужно, вы можете просто запустить Kubectl Krew install
и начните использовать его:
~ $ kubectl krew install rbac-lookup Updated the local copy of plugin index. Installing plugin: rbac-lookup Installed plugin: rbac-lookup \ | Use this plugin: | kubectl rbac-lookup | Documentation: | https://github.com/reactiveops/rbac-lookup / WARNING: You installed plugin "rbac-lookup" from the krew-index plugin repository. These plugins are not audited for security by the Krew maintainers. Run them at your own risk. ~ $ kubectl rbac-lookup version Version:0.6.4 Commit:3c86486a94e56e762b2a46d899e5f7b235c74ca8
Обратите внимание на предупреждение на приведенном выше выходе — хотя эти плагины перечислены в официальном индексе плагинов, это не гарантирует, что они безопасны для использования или что они действительно делают то, что, как они утверждают, делают. Вы должны рассматривать все это как к любому случайному, неверному скрипту, загруженному из Интернета.
Хотя Крю
Содержит много плагинов, это не означает, что это исчерпывающий список каждого доступного плагина. Таким образом, если вы не можете найти плагин, который решает вашу задачу/проблему, вы также можете проверить другие места. Одним из таких мест было бы Awesome-Kubectl-Plugins
Репозиторий , у которого есть пара дополнительных плагинов, или вы также можете просто попробовать Google.
Учитывая, что эти не являются частью Крю
, чтобы установить их, нам нужно будет использовать ручной подход, который выглядит следующим образом:
~ $ kubectl krew search dig # ... nothing relevant ~ $ git clone https://github.com/sysdiglabs/kubectl-dig.git && cd kubectl-dig ~ $ make build ~ $ cp _output/bin/kubectl-dig /home/martin/.krew/bin/kubectl-dig ~ $ kubectl dig Deep kubernetes visibility. Usage: dig dig [command] ...
Как упоминалось ранее, эти плагины — просто сценарии или двоичные файлы, поэтому вы можете загрузить их вручную и просто использовать их. Если хочешь kubectl
Чтобы распознать их как плагины, вам также нужно дать им имя в формате kubectl-plugin-name
и поместите их куда -нибудь на пути. В приведенном выше примере мы установили Dig
плагин, загрузив его источники, построив двоичный файл и перенести его в Крю
каталог, который находится на пути. Чтобы проверить, есть ли kubectl
Нашел недавно установленный плагин, который вы можете запустить Список плагина Kubectl
Анкет
Обязательные к приобретению
В индексе довольно много плагинов (149 на момент написания), и есть еще много за пределами Крю
Индекс, поэтому, чтобы сэкономить вам некоторое время, проходя через все их, я составил список плагинов, которые, на мой взгляд, особенно полезны. Итак, давайте разберем его по категории, начиная с самой заброшенной области — безопасность:
rakkess
— Известно какAccess-Matrix
вКрю
Плагин для демонстрации и просмотра доступа к ресурсам Kubernetes. Это может быть очень полезно при разработке ролей RBAC — вы можете, например, запуститьKubectl Access-Matrix-как другое пользователь-Namespace some-ns
Чтобы убедиться, что пользовательская учетная запись имеет желаемые права доступа в указанном пространстве имен.Kubesec
— Известно какKubesec-Scan
вКрю
Плагин для сканирования ресурсов с https://kubesec.io/ сканер. Когда вы запустите этот плагин против ваших манифестов, он сообщит вам рекомендуемые изменения для повышения безопасности ваших рабочих нагрузок. Чтобы просмотреть все правила, которые использует сканер, посетите приведенный выше веб -сайт.rbac-lookup
— Подобно первому плагину, который мы упомянули, этот плагин также помогает с RBAC в вашем кластере. Это можно использовать для выполнения обратного поиска ролей, предоставляя вам список ролей, которые назначил пользователь, учетная запись или группа. Например, найти роли, связанные с учетной записью службы с именеммой-са
Вы используете следующее —kubectl rbac-lookup my-sa-kind serviceaccount-opput wide
Анкет
При отладке какой -то критической проблемы действительно нет времени, чтобы тратить время, и есть некоторые плагины отладки, которые могут помочь ускорить процесс:
Ksniff
— Известно какSniff
является инструментом для отладки и сбора сетевых данных. Он может прикрепить к стручке и использоватьtcpdump
Перемесить сетевые данные в ваш локальный Wireshark Анкет Этот инструмент также хорошо работает сtshark
— Командная версия Wireshark.Dig
— Этот плагин, созданный Sysdig Предоставляет очень хороший интерфейс терминала для изучения всех видов данных уровня узлов — например, порты, следы, запуск стручков, разломы страниц и т. Д. Чтобы увидеть правильную демонстрацию, зарегистрируйте видео вкопать землю
репозиторий Здесь Анкет Этот плагин, однако, не вКрю
и также может потребоваться дополнительная настройка на ваших узлах кластера (см. Это проблема ).
Есть также полезные плагины, которые могут помочь в повседневном управлении кластером и его ресурсами:
аккуратный
— Возможно, мой любимый из всех плагинов —аккуратный
который удаляет все сгенерированные, избыточные поля из вывода YAML из ресурсов Kubernetes. Если вы устали прокручивать всеManagedFields
И другой мусор, а затем обязательно попробуйте.Kube-Capacity
— Известно какРесурсная способность
вКрю
пытается лучше понять использование и использование ресурсов кластера. Это по сути,Kubectl top
на стероидах. Он может показать вам использование ресурсов и потребление на пространство имен или стручки, позволяет фильтрацию метки узла или стручки, а также сортировку вывода.Kube-Pug
— плагин, известный какОбъяснения
вКрю
. Каждый кластер должен быть обновлен рано или поздно, и в какой -то момент вы столкнетесь с деформациями API и/или удалением. Поиск того, что устарело, может быть долгим и подверженным ошибкам процесса, и этот плагин пытается упростить это. Все, что вам нужно сделать, это запуститьKubectl деформации. Xx.x
И вы получите список всех экземпляров объектов API в кластере, которые будут устарели или удалены в указанной версии.
Последняя, а также самая большая категория — это электроинструменты — есть много задач, которые могут быть сложными, громоздкими или требуют нескольких повторяющихся шагов для выполнения с ванилью Kubectl
, Итак, давайте сделаем некоторые из них проще с этими плагинами:
Дерево
— Создание единого объекта в Kubernetes может вызвать создание многих других зависимых ресурсов, будь то просто Развертывание Создание Replicasets или экземпляр оператора, создающего 20 различных объектов. Эта иерархия может быть трудно ориентироваться иKubectl Tree
может помочь с этим, создав файловую визуализацию дерева, подобные деревьям, зависимых ресурсов.Кубелогин
— Если вы используете поставщика OIDC, такого как Google, KeyCloak или DEX для аутентификации в кластер Kubernetes, то этот плагин, также известный какoidc-login
вКрю
Можно помочь вам избежать необходимости вводить вручную в свой кластер снова и снова. Когда вы настраиваете этот плагин, каждый раз, когда вы пытаетесь запустить любойkubectl
Команда без действительного токена аутентификации,oidc-login
автоматически откроет страницу входа вашего поставщика и после успешной аутентификации захватит токен и войдет в систему в кластер. Чтобы увидеть видео рабочего процесса, проверьте репозиторий Здесь Анкетkubectx
— Известно какctx
вКрю
Наверное, самый популярный из всех плагинов. Это позволяет легко переключаться междуkubectl
Контекст и кластерные пространства имен без необходимости иметь дело сKubectl конфигурация
Анкетketall
— Мы все знаем, чтоkubectl Получите все
На самом деле не дает тебе все Ресурсы. Чтобы действительно перечислить все ресурсы, вы можете использоватьketall
Также известен какGet-All
вКрю
. Этот плагин может просто выбросить все ресурсы в ваш терминал, а также фильтр на основе времени, исключений, селекторов или сферов метки (кластер или пространство имен).
Заключительные мысли
Это всего лишь список вещей, которые я нахожу полезными, поэтому то, что работает для меня, может не работать для вас, и в то же время может много плагинов, которые я пропустил, но они могут быть очень полезны для вас. Итак, посмотрите Крю
Индекс или Awesome-Kubectl-Plugins
Репозиторий для большего. Если вам случится что -то крутое, пожалуйста, поделитесь этим, чтобы другие тоже могли извлечь выгоду из этого.
С учетом сказанного, нет плагина для каждого варианта использования, поэтому, если вы не можете найти плагин, который решает вашу проблему, возможно, вы можете создать один и заполнить этот пробел (больше информации об этом в Docs ). 😉
Есть также другие инструменты, кроме kubectl
плагины, которые могут повысить вашу производительность и упростить операции Kubernetes. Самый выдающийся — K9S
Поэтому, если плагинов недостаточно, и вы хотите взять больший молоток, то это может быть правильным инструментом для вас.
Оригинал: «https://dev.to/martinheinz/making-kubernetes-operations-easy-with-kubectl-plugins-3iok»