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»