y-ohgi's blog

TODO: ここになにかかく

kubectl のプラグインマネージャーkrew を使用する

f:id:y-ohgi:20210818113333p:plain

TL;DR

  • krew はkubectl のSIG-CLI でメンテナンスされているプラグインマネージャー
  • krewtree プラグインを使用してみた
  • krew のWeb サイト上で プラグイン一覧 がGitHub スターと一緒に閲覧できるのが良い

使ってみる

Version

  • kubectl
    • v1.21.2
  • krew
    • 0.4.1
  • macOS
    • 11.5

Install

公式の Installing · 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/')" &&
  curl -fsSLO "https://github.com/kubernetes-sigs/krew/releases/latest/download/krew.tar.gz" &&
  tar zxvf krew.tar.gz &&
  KREW=./krew-"${OS}_${ARCH}" &&
  "$KREW" install krew
)

.bashrc なり .bash_profile なりにexport を記載

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

記載したコンフィグを読み込ませ(bash の再起動など)、krew がインストールできているかの確認

$ kubectl krew version
OPTION            VALUE
GitTag            v0.4.1
GitCommit         ffa2933
IndexURI          https://github.com/kubernetes-sigs/krew-index.git
BasePath          /Users/ookiyuusuke/.krew
IndexPath         /Users/ookiyuusuke/.krew/index/default
InstallPath       /Users/ookiyuusuke/.krew/store
BinPath           /Users/ookiyuusuke/.krew/bin
DetectedPlatform  darwin/amd64

krew plugin をインストールする

今回は試しに tree プラグインをインストールしてみる

ahmetb/kubectl-tree: kubectl plugin to browse Kubernetes object hierarchies as a tree 🎄 (star the repo if you are using)

$ kubectl krew install tree
Updated the local copy of plugin index.
Installing plugin: tree
Installed plugin: tree
\
 | Use this plugin:
 |      kubectl tree
 | Documentation:
 |      https://github.com/ahmetb/kubectl-tree
 | Caveats:
 | \
 |  | * For resources that are not in default namespace, currently you must
 |  |   specify -n/--namespace explicitly (the current namespace setting is not
 |  |   yet used).
 | /
/

tree プラグインを試してみる

$ kubectl tree deploy prd-api
NAMESPACE  NAME                              READY  REASON              AGE
prd-api    Deployment/prd-api                -                          30m
prd-api    └─ReplicaSet/prd-api-6df8f48768   -                          30m
prd-api      ├─Pod/prd-api-6df8f48768-6l9hq  False  ContainersNotReady  30m
prd-api      ├─Pod/prd-api-6df8f48768-gnkrq  False  ContainersNotReady  30m
prd-api      └─Pod/prd-api-6df8f48768-kgr9b  False  ContainersNotReady  30m

まとめ

SIG-SLI で作られているため今後に期待ができることと、サクッとインストールできて非常に良い。brew 感覚で使える。
今まで素でインストールしてきた kubectx などもkrew をサポートしており、徐々に移行していきたいなという気持ち。
プラグイン一覧が公式のWeb サイトで見れ、その一覧でプラグインのGitHub スター数も見れるので良さげなプラグインが見つけやすいのも良いですね
Kubectl plugins available · Krew

Ref