Как начать работу с Krew, менеджером плагинов Kubectl
Krew — менеджер пакетов для Kubectl, официального интерфейса командной строки Kubernetes. Используя Krew, вы можете находить, устанавливать и обновлять плагины Kubectl, которые расширяют интерфейс командной строки дополнительными функциями.
Механизм плагинов Kubectl поддерживает несколько методов установки плагинов. Самый простой способ — поместить плагины прямо в каталог, который находится в вашем PATH
. Это ручной процесс, который не дает возможности обновлять плагин по мере публикации новых выпусков.
Krew предоставляет общие функции управления пакетами для экосистемы плагинов Kubectl. Он поддерживает общедоступный индекс известных пакетов, а также поддерживает сторонние индексы. Последний позволяет публиковать плагины в частном порядке внутри организации или команды.
Установка Крю
Krew — это инструмент с открытым исходным кодом, который является частью проекта Kubernetes. Однако он не поставляется в комплекте с Kubectl. Чтобы начать работу с Krew, вы должны вручную загрузить и установить последнюю версию. Текущие дистрибутивы Krew работают с Kubectl версии 1.12 и выше.
Загрузки доступны на странице релизов проекта GitHub. В tar-архивах дистрибутива содержится бинарный файл Krew. Запустите его установочный скрипт, чтобы завершить добавление Krew в вашу систему:
$ ./krew-linux_amd64 install krew
Полный скрипт, который автоматически загружает и устанавливает правильный дистрибутив Krew для вашей системы, доступен в документации.
Затем вы должны обновить свой PATH
, включив в него каталог bin
Krew. Он находится в $KREW_ROOT
, обычно это $HOME/.krew
. Исполняемые файлы установленных вами плагинов Kubectl будут храниться в подкаталоге bin
.
$ export PATH="${KREW_ROOT:-$HOME/.krew}/bin:$PATH"
Теперь вы сможете использовать Krew с помощью команды kubectl krew
:
~$ kubectl krew krew is the kubectl plugin manager. You can invoke krew through kubectl: "kubectl krew [command]..." Usage: kubectl krew [command] ...
Обновление индекса плагина
Указатель плагинов Krew содержит все доступные в настоящее время плагины, которые вы можете установить. Он работает аналогично спискам пакетов, используемым менеджерами пакетов уровня ОС, такими как apt
.
Периодически обновляйте индекс, чтобы ваша установка Krew имела доступ к последним версиям всех доступных плагинов:
$ kubectl krew update Updated the local copy of plugin index.
Установка плагинов
Команда install
добавляет в Kubectl новые плагины. Он может установить любой из плагинов, перечисленных в индексе Krew. Krew позаботится о загрузке плагина и его регистрации в Kubectl.
$ kubectl krew install ctx Updated the local copy of plugin index. Installing plugin: ctx Installed plugin: ctx ...
Krew автоматически обновляет индекс своего плагина перед установкой, гарантируя, что вы получите последнюю версию нового плагина. После завершения установки вы увидите основную информацию от автора плагина в нижней части вывода команды.
Теперь вы можете использовать команды плагина через интерфейс командной строки kubectl
:
$ kubectl ctx my-context
Обновление до новых выпусков плагинов
Одним из самых больших преимуществ Krew является встроенная система обновления плагинов. Выполнение команды upgrade
обновит индекс пакетов и обновит все установленные плагины до их последней версии. Этот процесс полностью автоматизирован.
$ kubectl krew upgrade Updated the local copy of plugin index. ...
Вы можете обновить плагины по отдельности, передав их имена команде upgrade
:
$ kubectl krew upgrade ctx
Если вы когда-нибудь захотите удалить плагин, укажите его имя в команде uninstall
:
$ kubectl krew uninstall ctx
Krew позаботится о том, чтобы плагин был полностью удален из вашей системы.
Команда list
показывает все ваши плагины и их установленные версии:
~$ kubectl krew list PLUGIN VERSION ctx v0.9.4 krew v0.4.3 ns v0.9.4
Сам Krew появляется в списке плагинов и поддерживается системой обновлений. Запуск upgrade
или upgrade krew
приведет к получению и установке последней версии Krew до того, как ваши плагины будут обновлены.
Поиск плагинов
Команда search
позволяет просматривать индекс пакетов Krew с вашего терминала.
~$ kubectl krew search cert-manager NAME DESCRIPTION INSTALLED cert-manager Manage cert-manager resources inside your cluster no
Найдя интересующий вас плагин, запустите команду info
, чтобы узнать о нем больше. Это показывает номер текущей версии плагина, ссылку на его веб-сайт и краткое описание, предоставленное автором.
~$ kubectl krew info cert-manager NAME: cert-manager INDEX: default URI: https://github.com/jetstack/cert-manager/releases/download/v1.7.0/kubectl-cert_manager-linux-amd64.tar.gz SHA256: 73618617b9ec42994c3ea77bbc8be743e382501d42ad2ee7aeca0d32c15655c0 VERSION: v1.7.0 HOMEPAGE: https://github.com/jetstack/cert-manager DESCRIPTION: The official plugin accompanying cert-manger, a Kubernetes add-on to automate the management and issuance of TLS certificates. Allows for direct interaction with cert-manager resources e.g. manual renewal of Certificate resources.
Использование пользовательских индексов
Krew поддерживает пользовательские индексы, облегчающие установку плагинов из ваших собственных источников. Индексы — это просто репозитории Git с папкой plugins
, содержащей манифесты YAML. Эти файлы определяют подключаемые модули, доступные для установки. Структура индекса Krew по умолчанию — полезная модель, когда вы настраиваете свой собственный.
Чтобы добавить индекс, передайте URL его репозитория команде index add
:
$ kubectl krew index add custom-index https://example.com/krew/index.git
Чтобы ссылаться на плагины в вашем индексе, добавьте к их именам префикс выбранного вами имени индекса:
$ kubectl krew install custom-index/example-plugin
Если префикс не указан, Krew вместо этого использует префикс default/
. Это всегда относится к встроенному индексу плагинов Krew. Если вы предпочитаете направлять имена плагинов без префикса в свой собственный индекс, установите переменную среды KREW_DEFAULT_INDEX_URI
на URL вашего репозитория:
$ export KREW_DEFAULT_INDEX_URI="https://example.com/krew/index.git" # Automatically resolved to the custom index $ kubectl krew install example-plugin
Публикация собственных плагинов
Довольно просто распространять свои собственные плагины среди пользователей через Krew. Сначала вам нужно создать архив содержимого вашего плагина Kubectl в виде файла .tar.gz
или .zip
. Загрузите это в общедоступное место — веб-сайт вашего проекта или страница релизов GitHub — хороший выбор.
Затем напишите манифест плагина Krew. Это простой файл YAML, который предоставляет основную информацию о вашем плагине, такую как его имя, описание и текущая версия. Манифест также включает общедоступный URL-адрес архива вашего плагина. Когда пользователь устанавливает ваш плагин, Krew загружает его архив по URL-адресу, указанному в манифесте.
После того, как вы написали свой манифест, вы можете зафиксировать его в репозитории Git. Добавьте этот репозиторий в качестве пользовательского индекса Krew, чтобы добавить свой плагин в вашу установку Kubectl. Отправка в общедоступный индекс Krew принимается путем создания запроса на включение в его репозиторий, который добавляет ваш манифест в каталог plugins
.
Заключение
Krew упрощает обнаружение, установку и управление плагинами Kubernetes. Это удобный удобный инструмент для всех, кто использует плагины Kubectl. Krew предлагает полный опыт управления пакетами, включая настраиваемые частные индексы для ваших внутренних инструментов.
Публичный индекс содержит более 180 плагинов, охватывающих все аспекты управления Kubernetes. Некоторые популярные варианты включают cert-manager для работы с объектами Cert-Manager в вашем кластере, tail, предлагающий упрощенную потоковую передачу журналов, score для статического анализа ваших объектов, а также ctx и ns для упрощения переключения между контекстами и пространствами имен.