krew — это пакетный менеджер плагинов для kubectl, официальный проект Kubernetes SIG CLI. Делает с плагинами kubectl примерно то же, что apt/brew делают с программами в системе: ищет, ставит, обновляет и удаляет. После установки плагин становится подкомандой — kubectl <plugin>.

На момент написания в официальном индексе krew-index ~359 плагинов: для отладки, сети, безопасности, multi-cluster, работы с секретами, логами, манифестами и т. д. Без krew пришлось бы вручную собирать бинарники, класть их в $PATH и следить за обновлениями.

Установка

Требование: kubectl версии 1.12 или выше.

Linux / macOS (bash, zsh)

BASH
(
  set -x; cd "$(mktemp -d)" &&
  OS="$(uname | tr '[:upper:]' '[:lower:]')" &&
  ARCH="$(uname -m | sed -e 's/x86_64/amd64/' -e 's/\(arm\)\(64\)\?.*/\1\2/' -e 's/aarch64$/arm64/')" &&
  KREW="krew-${OS}_${ARCH}" &&
  curl -fsSLO "https://github.com/kubernetes-sigs/krew/releases/latest/download/${KREW}.tar.gz" &&
  tar zxvf "${KREW}.tar.gz" &&
  ./"${KREW}" install krew
)
Нажмите, чтобы развернуть и увидеть больше

Добавляем ~/.krew/bin в PATH~/.bashrc или ~/.zshrc):

BASH
export PATH="${KREW_ROOT:-$HOME/.krew}/bin:$PATH"
Нажмите, чтобы развернуть и увидеть больше

После рестарта шелла проверяем:

BASH
kubectl krew
Нажмите, чтобы развернуть и увидеть больше

Fish

FISH
begin
  set -x; set temp_dir (mktemp -d); cd "$temp_dir" &&
  set OS (uname | tr '[:upper:]' '[:lower:]') &&
  set ARCH (uname -m | sed -e 's/x86_64/amd64/' -e 's/\(arm\)\(64\)\?.*/\1\2/' -e 's/aarch64$/arm64/') &&
  set KREW krew-$OS"_"$ARCH &&
  curl -fsSLO "https://github.com/kubernetes-sigs/krew/releases/latest/download/$KREW.tar.gz" &&
  tar zxvf $KREW.tar.gz &&
  ./$KREW install krew &&
  set -e KREW temp_dir &&
  cd -
end
Нажмите, чтобы развернуть и увидеть больше

В ~/.config/fish/config.fish:

FISH
set -gx PATH $PATH $HOME/.krew/bin
Нажмите, чтобы развернуть и увидеть больше

Windows

  1. Скачать krew.exe со страницы релизов .
  2. В cmd.exe с правами администратора:
    CMD
    .\krew install krew
    Нажмите, чтобы развернуть и увидеть больше
  3. Добавить %USERPROFILE%\.krew\bin в PATH, открыть новый терминал и проверить kubectl krew.

Базовые команды

BASH
# Список доступных плагинов в индексе
kubectl krew search

# Поиск по подстроке
kubectl krew search secret

# Установка плагина
kubectl krew install ctx ns view-secret

# Список установленных
kubectl krew list

# Информация о плагине
kubectl krew info ctx

# Обновление индекса и всех плагинов
kubectl krew update
kubectl krew upgrade

# Удаление
kubectl krew uninstall ctx
Нажмите, чтобы развернуть и увидеть больше

После установки плагин вызывается через kubectl <plugin>, например kubectl ctx или kubectl view-secret cluster-example-app.

Кастомные индексы

krew умеет работать с приватными или сторонними индексами плагинов — для внутренних корпоративных утилит. Подробности — в официальной доке .

BASH
kubectl krew index add my-corp https://github.com/my-corp/krew-index.git
kubectl krew install my-corp/internal-tool
Нажмите, чтобы развернуть и увидеть больше

Подборка полезных плагинов

Полный список — kubectl krew search или krew.sigs.k8s.io/plugins . Ниже — то, что регулярно пригождается на практике, сгруппированное по задачам.

Навигация по контекстам и namespace’ам

Просмотр ресурсов

Логи и события

Отладка подов и нод

Секреты и сертификаты

Сеть

Безопасность и аудит

Storage / PV / PVC

Multi-cluster

Конкретные операторы / стек

Производительность и наблюдаемость

Работа с YAML / манифестами

Прочее интересное


С чего начать новичку

Минимальный must-have, который ставится первым делом:

BASH
kubectl krew install ctx ns view-secret view-cert stern neat get-all node-shell
Нажмите, чтобы развернуть и увидеть больше

Дальше — по необходимости: cnpg, popeye, kubescape, kor, tree/lineage, df-pv.

Полезные ссылки

Авторские права

Автор: Vasiliy Fakunin

Ссылка: https://notes.melancholic.tech/posts/krew-%D0%BF%D0%B0%D0%BA%D0%B5%D1%82%D0%BD%D1%8B%D0%B9-%D0%BC%D0%B5%D0%BD%D0%B5%D0%B4%D0%B6%D0%B5%D1%80-%D0%BF%D0%BB%D0%B0%D0%B3%D0%B8%D0%BD%D0%BE%D0%B2-%D0%B4%D0%BB%D1%8F-kubectl-%D0%B8-%D0%BE%D0%B1%D0%B7%D0%BE%D1%80-%D0%BF%D0%BE%D0%BB%D0%B5%D0%B7%D0%BD%D1%8B%D1%85-%D0%BF%D0%BB%D0%B0%D0%B3%D0%B8%D0%BD%D0%BE%D0%B2/

Лицензия: CC BY-NC-SA 4.0

Использование материалов блога разрешается при условии: указания авторства/источника, некоммерческого использования и сохранения лицензии.

Начать поиск

Введите ключевые слова для поиска статей

↑↓
ESC
⌘K Горячая клавиша