Krew — менеджер плагинов для kubectl

Быстрые ссылки
Установка Krew
Обновление индекса плагинов
Установка плагинов
Обновление плагинов до новых версий
Поиск плагинов
Использование пользовательских индексов
Публикация собственных плагинов
Заключение
Что такое Krew
Krew — менеджер пакетов для kubectl, официальной CLI для Kubernetes. Он предоставляет единый интерфейс для поиска, установки и обновления плагинов, расширяющих функциональность kubectl. Плагины встраиваются как отдельные исполняемые файлы и доступны через префикс kubectl <плагин>.
Ключевые моменты:
- Плагины можно устанавливать вручную (копируя бинарники в каталог в PATH), но так теряется возможность удобного обновления.
- Krew поддерживает публичный индекс и сторонние (приватные) индексы, что позволяет распространять плагины внутри команды или организации.
Требования и совместимость
Krew совместим с kubectl версии v1.12 и выше. Проверяйте совместимость плагина с вашей версией kubectl в описании плагина.
Важно: храните Krew в каталоге $KREW_ROOT, по умолчанию это $HOME/.krew, а исполняемые файлы плагинов располагаются в подкаталоге bin.
Установка Krew
Krew — проект с открытым исходным кодом, входящий в экосистему Kubernetes, но он не входит в дистрибутив kubectl по умолчанию. Скачайте релиз с GitHub Releases и запустите инсталляционный скрипт для вашей ОС.
Пример ручной установки (Linux amd64):
$ ./krew-linux_amd64 install krewВ официальной документации доступен полный скрипт, который автоматически определяет платформу и загружает нужный архив.
После установки добавьте в PATH каталог bin Krew:
$ export PATH="${KREW_ROOT:-$HOME/.krew}/bin:$PATH"Проверьте, что Krew доступен:
~$ kubectl krewВы увидите краткую справку:
krew is the kubectl plugin manager.
You can invoke krew through kubectl: “kubectl krew [command]…”
Usage:
kubectl krew [command]
…
Важно: при скриптовой установке убедитесь, что вы доверяете источнику релиза и проверяете контрольные суммы при необходимости.
Обновление индекса плагинов
Индекс плагинов Krew — это каталог всех доступных пакетов. Аналогично спискам пакетов в системных менеджерах вроде apt, индекс нужно периодически обновлять, чтобы видеть новые релизы и добавленные плагины.
Обновление локальной копии индекса:
$ kubectl krew updateПосле выполнения вы увидите сообщение об обновлении локального индекса.
Совет: выполняйте обновление индекса перед массовыми установками или обновлениями плагинов, если вы длительное время не запускали krew.
Установка плагинов
Команда install загружает и регистрирует выбранный плагин в kubectl, беря дистрибутив из URL, указанного в манифесте плагина.
Пример установки:
$ kubectl krew install ctxKrew автоматически обновляет индекс перед установкой, поэтому вы получите актуальную версию плагина. После установки в выводе обычно показываются сведения от автора (версия, короткое описание).
Пример использования установленного плагина:
$ kubectl ctx my-contextГде ctx — команда плагина, доступная через kubectl.
Обновление до новых релизов плагинов
Krew умеет обновлять плагины централизованно. Команда upgrade обновляет индекс и затем обновляет все установленные плагины.
$ kubectl krew upgradeЧтобы обновить конкретный плагин, передайте его имя:
$ kubectl krew upgrade ctxЧтобы удалить плагин:
$ kubectl krew uninstall ctxЧтобы просмотреть список установленных плагинов и их версий:
~$ kubectl krew listПример вывода:
PLUGIN VERSION
ctx v0.9.4
krew v0.4.3
ns v0.9.4
Krew сам отображается в списке плагинов и поддерживается системой обновлений: сначала обновляется krew, затем — остальные плагины.
Поиск плагинов
Команда search позволяет просматривать индекс из терминала:
~$ kubectl krew search cert-managerПример вывода:
NAME DESCRIPTION INSTALLED
cert-manager Manage cert-manager resources inside your cluster no
Чтобы получить подробную информацию о плагине, используйте info — это покажет версию, URL архива, SHA256 и описание:
~$ kubectl krew info cert-managerПример информации:
NAME: cert-manager
INDEX: default
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.
Совет: проверяйте поле SHA256 в манифестах, если вам важна целостность загрузок.
Использование пользовательских индексов
Krew поддерживает пользовательские индексы — это обычные Git-репозитории с папкой plugins, содержащей YAML-манифесты плагинов. По структуре они похожи на публичный индекс Krew.
Добавить индекс можно командой index add с указанием URL репозитория:
$ kubectl krew index add custom-index https://example.com/krew/index.gitУстановка плагина из пользовательского индекса:
$ kubectl krew install custom-index/example-pluginЕсли префикс не указан, Krew использует default/. Чтобы перенаправить непрефиксованные имена на свой индекс, установите переменную окружения KREW_DEFAULT_INDEX_URI:
$ export KREW_DEFAULT_INDEX_URI="https://example.com/krew/index.git"Теперь, при отсутствии префикса, установка будет осуществляться из вашего индекса:
$ kubectl krew install example-pluginПрактический совет: храните приватный индекс внутри вашей корпоративной сети или в приватном Git-хранилище с ограниченным доступом.
Публикация собственных плагинов
Процесс распространения собственного плагина через Krew:
- Создайте архив плагина (.tar.gz или .zip) с бинарниками и вспомогательными файлами.
- Загрузите архив в публичное или приватное место (GitHub Releases, ваш сервер хранения артефактов).
- Напишите YAML-манифест Krew, указывающий имя, описание, версию и URL архива.
- Закоммитьте манифест в репозиторий-индекс или создайте Pull Request в публичный индекс Krew.
Пример мини-алгоритма приемки манифеста:
- Манифест отвечает схеме Krew (поля name, version, urls, sha256, files и т.д.).
- Архив доступен по URL и содержит исполняемые файлы для заявленных платформ.
- SHA256 совпадает с указанным в манифесте.
Критерии приёмки
- Манифест валиден по схеме Krew.
- Бинарник запускается и корректно возвращает –help.
- SHA256 проверен и совпадает с объявленным.
- Лицензия и информация об авторе указаны в манифесте или на странице проекта.
Подходы и когда Krew не подходит
Когда Krew — хорошее решение:
- Нужен централизованный способ распространять плагины сотрудникам.
- Требуется удобное обновление плагинов через одну команду.
- Хотите поддерживать приватные наборы утилит внутри организации.
Когда Krew может не подойти:
- Ваша инфраструктура полностью оффлайн и нет возможности хранить архивы и индексы даже локально.
- Требуется тонкий контроль установки (например, установка отдельных версий бинарей в разные окружения без единого менеджера).
Альтернативы:
- Простое управление бинарниками через конфигурационные менеджеры (Ansible/Salt) для специфичных окружений.
- Использование систем пакетирования ОС (deb/rpm) для распространения с более строгой политикой обновлений.
Рекомендации по безопасности
- Храните приватные индексы в приватных Git-репозиториях с доступом по SSH или через правильные ACL.
- Проверяйте SHA256 архива перед установкой в автоматизированных пайплайнах.
- Ограничьте список доверенных плагинов для автоматического развёртывания в production.
Чек-листы по ролям
Чек-лист для DevOps
- Установить Krew на контрольные узлы.
- Добавить приватный индекс в CI/CD.
- Настроить проверку SHA256 в пайплайне.
Чек-лист для SRE
- Отслеживать установленные плагины и их версии через kubectl krew list.
- Автоматически обновлять тестовую среду перед продом.
- Сообщать об обновлениях команды, если плагин влияет на работу кластера.
Чек-лист для разработчика
- Установить полезные плагины (ctx, ns и т.д.) в локальное окружение.
- Чекать совместимость плагина с локальной версией kubectl.
Мини-методология интеграции Krew в команду
- Оцените потребности команды: какие плагины нужны разработчикам и оператору.
- Создайте приватный индекс для внутренних плагинов.
- Настройте CI для сборки и публикации артефактов и экспорта SHA256 в манифест.
- Добавьте шаги установки плагинов в правила развёртывания окружений.
- Определите политику обновлений (частота, тестирование перед применением).
Диаграмма принятия решения
flowchart TD
A[Нужен менеджер плагинов?] -->|Да| B{Есть ли доступ в интернет?}
B -->|Да| C[Используйте публичный индекс Krew]
B -->|Ограничен| D[Создайте приватный индекс 'Git']
B -->|Нет| E[Рассмотрите альтернативы: Ansible/локальные пакеты]
C --> F[Добавьте Krew в CI/CD и настройте обновления]
D --> F
E --> G[Распределяйте бинарники вручную или через системный пакет]Советы по миграции и совместимости
- При переходе на Krew из ручного управления бинарниками, сначала подготовьте приватный индекс с нужными версиями, затем постепенно переключайте пользователей.
- Проверяйте, что установленные вручную плагины не конфликтуют по именам с теми, что устанавливает Krew (Krew регистрирует плагины в kubectl и может перезаписать команды).
- Для CI окружений фиксируйте версии плагинов в манифестах и не разрешайте автоматическое обновление без тестирования.
Примеры распространённых плагинов
Публичный индекс Krew содержит более 180 плагинов, среди популярных:
- cert-manager — управление объектами Cert-Manager в кластере.
- tail — упрощённый просмотр логов.
- score — статический анализ Kubernetes-объектов.
- ctx, ns — быстрый переход между контекстами и неймспейсами.
Выберите плагины, которые реально сокращают время рутинных задач в вашей команде.
Заключение
Krew добавляет удобный уровень управления плагинами для kubectl: поиск, установка, обновление и поддержка приватных индексов. Он особенно полезен в командах, где плагины используются повсеместно и требуется единая стратегия распространения и обновлений.
Ключевые рекомендации:
- Установите Krew один раз и добавьте его bin в PATH.
- Используйте приватные индексы для внутренних инструментов.
- Внедрите проверку контрольных сумм и политику обновлений.
Важно: перед массовым развёртыванием протестируйте обновления плагинов в изолированном окружении.
Похожие материалы
Несколько аккаунтов Skype: Multi Skype Launcher
Журнал для работы: повысить продуктивность
Персональные звуки уведомлений на Android
Скачивание шоу Hulu для офлайн‑просмотра
Microsoft Start: персонализированная новостная лента