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
2. Установим Krew в терминале с помощью приведенной ниже команды:
(
  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/.
 | /
/
4. Включите $HOME/.krew/bin в среду PATH с помощью следующей команды:
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
2. Посмотрим доступные плагины Krew:
$ 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
......
3. Установим плагин через Krew
$ 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.

....
5. Чтобы обновить плагины, используйте команду:
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.

Он позволяет легко получить упакованные плагины в централизованном месте.

 

 

Поделитесь статьей:

Добавить комментарий