목적

krew는 kubectl 명령어 도구의 플러그인입니다. 그리고 현재 208개의 플러그인이 배포되어 있어서 필요한 플러그인을 찾아 설치해서 유용하게 사용할 수 있습니다.

krew 명령어를 설치하면 아래 결과처럼 플러그인 확인이 가능합니다.

$ kubectl krew search

NAME                            DESCRIPTION                                         INSTALLED
access-matrix                   Show an RBAC access matrix for server resources     no
accurate                        Manage Accurate, a multi-tenancy controller         no
advise-policy                   Suggests PodSecurityPolicies and OPA Policies f...  no
advise-psp                      Suggests PodSecurityPolicies for cluster.           no
allctx                          Run commands on contexts in your kubeconfig         no
apparmor-manager                Manage AppArmor profiles for cluster.               no
applier                         Apply 'go text/template' files on k8s.              no
assert                          Assert Kubernetes resources                         no
auth-proxy                      Authentication proxy to a pod or service            no
aws-auth                        Manage aws-auth ConfigMap                           no
azad-proxy                      Generate and handle authentication for azad-kub...  no
bd-xray                         Run Black Duck Image Scans                          no
blame                           Show who edited resource fields.                    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
clusternet                      Wrap multiple kubectl calls to Clusternet           no
cm                              Provides commands for OCM/MCE/ACM.                  no
cnpg                            Manage your CloudNativePG clusters                  no
colorize-applied                Colorize results of apply/dry-run                   no
config-cleanup                  Automatically clean up your kubeconfig              no
config-registry                 Switch between registered kubeconfigs               no
confirm                         Dry-run / diff / confirm before running a command   no
cost                            View cluster cost information                       no
count                           Count resources by kind                             no
creyaml                         Generate custom resource YAML manifest              no
ctx                             Switch between contexts in your kubeconfig          yes
...
....

우선 krew를 설치하기 위해서 아래 명령어를 터미널에서 수행합니다.

$ (
>   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
> )

출력 결과

++ mktemp -d
+ cd /tmp/tmp.n40b3Ro4Fm
++ uname
++ tr '[:upper:]' '[:lower:]'
+ OS=linux
++ uname -m
++ sed -e s/x86_64/amd64/ -e 's/\\(arm\\)\\(64\\)\\?.*/\\1\\2/' -e 's/aarch64$/arm64/'
+ ARCH=amd64
+ KREW=krew-linux_amd64
+ curl -fsSLO <https://github.com/kubernetes-sigs/krew/releases/latest/download/krew-linux_amd64.tar.gz>

+ tar zxvf krew-linux_amd64.tar.gz
./LICENSE
./krew-linux_amd64
+ ./krew-linux_amd64 install krew
Adding "default" plugin index from <https://github.com/kubernetes-sigs/krew-index.git>.
Updated the local copy of plugin index.
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/>.
 | /
/

이후 .bashrc 파일에 PATH 설정을 하고 적용합니다.

export PATH="${KREW_ROOT:-$HOME/.krew}/bin:$PATH"

$ source .bashrc
$ kubectl krew

krew is the kubectl plugin manager.
You can invoke krew through kubectl: "kubectl krew [command]..."

Usage:
  kubectl krew [command]

Available Commands:
  completion  generate the autocompletion script for the specified shell
  help        Help about any command
  index       Manage custom plugin indexes
  info        Show information about an available plugin
  install     Install kubectl plugins
  list        List installed kubectl plugins
  search      Discover kubectl plugins
  uninstall   Uninstall plugins
  update      Update the local copy of the plugin index
  upgrade     Upgrade installed plugins to newer versions
  version     Show krew version and diagnostics

Flags:
  -h, --help      help for krew
  -v, --v Level   number for the log level verbosity

Use "kubectl krew [command] --help" for more information about a command.

여기까지 krew를 설치했고 kubectx와 kubens를 설치해 보겠습니다.

$ kubectl krew install ctx

Updated the local copy of plugin index.
Installing plugin: ctx
Installed plugin: ctx
\\
 | Use this plugin:
 |      kubectl ctx
 | Documentation:
 |      <https://github.com/ahmetb/kubectx>
 | Caveats:
 | \\
 |  | If fzf is installed on your machine, you can interactively choose
 |  | between the entries using the arrow keys, or by fuzzy searching
 |  | as you type.
 |  | See <https://github.com/ahmetb/kubectx> for customization and details.
 | /
/
WARNING: You installed plugin "ctx" from the krew-index plugin repository.
   These plugins are not audited for security by the Krew maintainers.
   Run them at your own risk.