Рубрики
Uncategorized

Облегчение операций Kubernetes с плагинами Kubectl

Kubectl-это мощный инструмент, который позволяет вам выполнять буквально любые и все задачи, связанные с Kubernetes …. Tagged with Kubernetes, DevOps.

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»