Поиск по сайту:

Как начать работу с 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 для упрощения переключения между контекстами и пространствами имен.