Krew – это инструмент командной строки kubectl, используемый для обнаружения, управления и установки плагинов kubectl.
Он работает так же, как yum, brew и apt.
Krew поддерживает более 100 плагинов kubectl.
Для разработчиков вы можете использовать Krew для упаковки и распространения ваших плагинов на разных платформах и сделать их доступными для пользователей через централизованный репозиторий.
В этом руководстве мы расскажем, как установить и использовать Krew для установки плагинов kubectl для вашего кластера Kubernetes.
Но сначала вам нужно иметь работающий кластер Kubernetes с установленным kubectl.
Krew может работать на разных платформах, то есть в Windows, Linux и Mac, и поддерживает kubectl v1.12 и выше.
Мы рассмотрим установку на Linux, Mac и Windows.
Установка Krew
В этом разделе мы обсудим шаги установки Krew в системах Linux, macOS и Windows.
Установим krew на Linux / Mac
Установим Git
## Mac
$ brew install git
## Debian/Ubuntu
$ sudo apt install git-all
## RHEL/CentOS
$ sudo dnf install git-all
(
set -x; cd "$(mktemp -d)" &&
curl -fsSLO "https://github.com/kubernetes-sigs/krew/releases/latest/download/krew.tar.gz" &&
tar zxvf krew.tar.gz &&
KREW=./krew-"$(uname | tr '[:upper:]' '[:lower:]')_$(uname -m | sed -e 's/x86_64/amd64/' -e 's/arm.*$/arm/')" &&
"$KREW" install krew
)
3. После успешной установки вы увидите результат, аналогичный приведенному ниже примеру:
......
Installing plugin: krew
Installed plugin: krew
\
| Use this plugin:
| kubectl krew
| Documentation:
| https://krew.sigs.k8s.io/
| Caveats:
| \
| | krew is now installed! To start using kubectl plugins, you need to add
| | krew's installation directory to your PATH:
| |
| | * macOS/Linux:
| | - Add the following to your ~/.bashrc or ~/.zshrc:
| | export PATH="${KREW_ROOT:-$HOME/.krew}/bin:$PATH"
| | - Restart your shell.
| |
| | * Windows: Add %USERPROFILE%\.krew\bin to your PATH environment variable
| |
| | To list krew commands and to get help, run:
| | $ kubectl krew
| | For a full list of available plugins, run:
| | $ kubectl krew search
| |
| | You can find documentation at
| | https://krew.sigs.k8s.io/docs/user-guide/quickstart/.
| /
/
export PATH="${KREW_ROOT:-$HOME/.krew}/bin:$PATH"
Установка krew на Windows
Установим Git
Скачайте git отсюда и установите его:
https://git-scm.com/download/win
2. Загрузите и установите krew.exe в каталог
3. Запустите cmd от имени администратора и перейдите в каталог, в который вы скачали krew.exe.
4. Установите Krew, используя команду:
krew install krew
5. Включите каталог %USERPROFILE%\.krew\bin в переменную среды PATH, используя метод по этой ссылке:
https://java.com/en/download/help/path.html
Как использовать Krew
Теперь, когда мы установили Krew, давайте рассмотрим, как его использовать.
Ниже приведены некоторые команды, которые мы будем использовать для начала работы с Krew.
Чтобы загрузить список плагинов Krew, который можно сравнить с обновлением кеша репо с помощью apt или yum:
$ kubectl krew update
$ kubectl krew search
NAME DESCRIPTION INSTALLED
access-matrix Show an RBAC access matrix for server resources yes
advise-psp Suggests PodSecurityPolicies for cluster. no
allctx Run commands on contexts in your kubeconfig no
apparmor-manager Manage AppArmor profiles for cluster. no
auth-proxy Authentication proxy to a pod or service no
bd-xray Run Black Duck Image Scans no
bulk-action Do bulk actions on Kubernetes resources. no
ca-cert Print the PEM CA certificate of the current clu... no
capture Triggers a Sysdig capture to troubleshoot the r... no
cert-manager Manage cert-manager resources inside your cluster no
change-ns View or change the current namespace via kubectl. no
cilium Easily interact with Cilium agents. no
cluster-group Exec commands across a group of contexts. no
config-cleanup Automatically clean up your kubeconfig no
config-registry Switch between registered kubeconfigs no
creyaml Generate custom resource YAML manifest no
......
$ kubectl krew install pod-logs
Updated the local copy of plugin index.
Installing plugin: pod-logs
Installed plugin: pod-logs
\
| Use this plugin:
| kubectl pod-logs
| Documentation:
| https://github.com/danisla/kubefunc
/
WARNING: You installed plugin "pod-logs" from the krew-index plugin repository.
These plugins are not audited for security by the Krew maintainers.
Run them at your own risk.
4. Используйте установленный плагин – теперь вы можете запустить плагин с помощью kubectl.
$ kubectl pod-logs
1) nginx-ingress-1605802027-controller-ch6ct default Running
2) dashboard-metrics-scraper-79c5968bdc-6p4fv kubernetes-dashboard Running
3) kubernetes-dashboard-665f4c5ff-bgrm2 kubernetes-dashboard Running
4) faas-idler-674fd4544c-tz72x openfaas Running
5) gateway-689746ff97-jqrst openfaas Running
6) nats-cdc589ff7-z8zf2 openfaas Running
Select a Pod: 1
I1119 16:09:26.542094 6 flags.go:205] Watching for Ingress class: nginx
-------------------------------------------------------------------------------
NGINX Ingress controller
Release: v0.34.1
Build: v20200715-ingress-nginx-2.11.0-8-gda5fa45e2
Repository: https://github.com/kubernetes/ingress-nginx
nginx version: nginx/1.19.1
-------------------------------------------------------------------------------
W1119 16:09:26.544149 6 flags.go:250] SSL certificate chain completion is disabled (--enable-ssl-chain-completion=false)
W1119 16:09:26.544237 6 client_config.go:552] Neither --kubeconfig nor --master was specified. Using the inClusterConfig. This might not work.
I1119 16:09:26.544553 6 main.go:231] Creating API client for https://10.96.0.1:443
I1119 16:09:26.554426 6 main.go:275] Running in Kubernetes cluster version v1.19 (v1.19.4) - git (clean) commit d360454c9bcd1634cf4cc52d1867af5491dc9c5f - platform linux/amd64
I1119 16:09:26.609756 6 main.go:87] Validated default/nginx-ingress-1605802027-default-backend as the default backend.
....
root@master:~# kubectl krew upgrade
Updated the local copy of plugin index.
Upgrading plugin: access-matrix
Skipping plugin access-matrix, it is already on the newest version
Upgrading plugin: krew
Skipping plugin krew, it is already on the newest version
Upgrading plugin: ns
Skipping plugin ns, it is already on the newest version
Upgrading plugin: pod-logs
Skipping plugin pod-logs, it is already on the newest version
6. Список установленных плагинов.
$ kubectl krew list
PLUGIN VERSION
access-matrix v0.4.5
krew v0.4.0
ns v0.9.1
pod-logs v1.0.1
7. Чтобы удалить плагин с помощью Krew:
$ kubectl krew remove pod-logs
Uninstalled plugin pod-logs
Заключение
Krew может быть очень полезен для управления кластерами Kubernetes с помощью kubectl.
Он позволяет легко получить упакованные плагины в централизованном месте.