Mac に Krew をインストールする

Nov 16, 2024, 4:58 PM
Krew は Kubernetes クラスタの管理を効率化するためのプラグインマネージャーです。具体的には、kubectl コマンドに新しいサブコマンドを追加するプラグインを簡単に検索、インストール、アップデート、削除することができます。

Krew のメリット

  1. 簡単なプラグイン管理
    Krew を使えば、kubectl の機能を拡張するプラグインをコマンド一つでインストールでき、アップデートやアンインストールも簡単です。
  2. 多種多様なプラグイン
    Krew プラグインレジストリには、多数の便利なプラグインが登録されています。例えば、リソースの可視化、デバッグ支援、ログ収集など、さまざまなユースケースをカバーしています。
  3. クロスプラットフォーム
    Krew は Windows、macOS、Linux で動作するため、どの環境でも一貫したプラグイン管理が可能です。
  4. 公式プラグインレジストリ
    Krew のプラグインは、公式のレジストリに登録されているものを利用するため、安全性が確保されています。

事前準備

Krew は、k8s のコントロールプレーンにインストールしても良いのですが、ローカル環境にインストールしたほうが良いとのことで、まずは、私のMacに kubectl をインストールします。
$ brew install kubectl
==> Auto-updating Homebrew...
Adjust how often this is run with HOMEBREW_AUTO_UPDATE_SECS or disable with
HOMEBREW_NO_AUTO_UPDATE. Hide these hints with HOMEBREW_NO_ENV_HINTS (see `man brew`).
==> Downloading https://ghcr.io/v2/homebrew/portable-ruby/portable-ruby/blobs/sha256:303bed4c7fc431a685db3c3c151d873740114adbdccd23762ea2d1e39ea78f47
######################################################################################################################################################################################################################################################### 100.0%
==> Pouring portable-ruby-3.3.6.arm64_big_sur.bottle.tar.gz
==> Auto-updated Homebrew!
Updated 4 taps (homebrew/services, minio/stable, homebrew/core and homebrew/cask).
==> New Formulae
azqr beautysh bibtex-tidy comtrya dotnet@8 fileql gplugin kanata kuzco libtatsu mkdocs-material onnx tcl-tk@8 typos-lsp
==> New Casks
aide-app ba-connected bobhelper djuced fathom font-parkinsans kimis lunatask mythic neohtop whimsical
==> Deleted Installed Formulae
pkg-config ✘

You have 94 outdated formulae and 3 outdated casks installed.

==> Downloading https://ghcr.io/v2/homebrew/core/kubernetes-cli/manifests/1.31.2
######################################################################################################################################################################################################################################################### 100.0%
==> Fetching kubernetes-cli
==> Downloading https://ghcr.io/v2/homebrew/core/kubernetes-cli/blobs/sha256:bf453d4b33ff0abb80139f94368cef62c476100232d77cadd6a05401ed9bbe69
######################################################################################################################################################################################################################################################### 100.0%
==> Pouring kubernetes-cli--1.31.2.arm64_sonoma.bottle.tar.gz
==> Caveats
zsh completions have been installed to:
/opt/homebrew/share/zsh/site-functions
==> Summary
🍺 /opt/homebrew/Cellar/kubernetes-cli/1.31.2: 237 files, 60.2MB
==> Running `brew cleanup kubernetes-cli`...
Disable this behaviour by setting HOMEBREW_NO_INSTALL_CLEANUP.
Hide these hints with HOMEBREW_NO_ENV_HINTS (see `man brew`).

確認
$ kubectl version --client
Client Version: v1.29.2
Kustomize Version: v5.0.4-0.20230601165947-6ce0bf390ce3
おっと、1.29.2 がインストールされてしまいました。

私のk8sの環境は
root@master-01:~# kubectl get node
NAME STATUS ROLES AGE VERSION
geekom-01 Ready <none> 114d v1.30.3
geekom-02 Ready <none> 114d v1.30.3
jetson-01 Ready <none> 171d v1.30.1
jetson-02 Ready <none> 171d v1.30.1
master-01 Ready control-plane 172d v1.30.1
master-02 Ready control-plane 17d v1.30.6
master-03 Ready control-plane 17d v1.30.6
worker-01 Ready <none> 16h v1.30.6
worker-02 Ready <none> 12d v1.30.1
1.30.x なので、1.30.x にします。

$ brew unlink kubectl
$ brew install [email protected]
$ echo 'export PATH="/opt/homebrew/opt/[email protected]/bin:$PATH"' >> ~/.zshrc
$ source ~/.zshrc
$ which kubectl
$ kubectl version --client
Client Version: v1.30.6
Kustomize Version: v5.0.4-0.20230601165947-6ce0bf390ce3
1.30.6 がインストールできました🍺

インストール

https://krew.sigs.k8s.io/docs/user-guide/setup/install/
の手順に沿って行います。

Macのターミナルに
(
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
)
を貼り付けて実行
+-zsh:554> mktemp -d
+-zsh:554> cd /var/folders/rb/gcc8jshx2_x5z2cpck978t3h0000gp/T/tmp.BOGNWaMFhm
+-zsh:555> OS=+-zsh:555> uname
+-zsh:555> OS=+-zsh:555> tr '[:upper:]' '[:lower:]'
+-zsh:555> OS=darwin
+-zsh:556> ARCH=+-zsh:556> uname -m
+-zsh:556> ARCH=+-zsh:556> sed -e s/x86_64/amd64/ -e 's/\(arm\)\(64\)\?.*/\1\2/' -e 's/aarch64$/arm64/'
+-zsh:556> ARCH=arm64
+-zsh:557> KREW=krew-darwin_arm64
+-zsh:558> curl -fsSLO https://github.com/kubernetes-sigs/krew/releases/latest/download/krew-darwin_arm64.tar.gz
+-zsh:559> tar zxvf krew-darwin_arm64.tar.gz
x ./LICENSE
x ./krew-darwin_arm64
+-zsh:560> ./krew-darwin_arm64 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/.
| /
/

パスを通しておきます。
$ echo 'export PATH="${KREW_ROOT:-$HOME/.krew}/bin:$PATH"' >> ~/.zshrc
$ source ~/.zshrc

インストール確認
$ kubectl krew
krew is the kubectl plugin manager.
You can invoke krew through kubectl: "kubectl krew [command]..."

Usage:
kubectl krew [command]

Available Commands:
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.
うまくインストールすることができました🍺
MinIO のデータをバックアップする
Macにインストールした Krew を使って、Kubernetes に MinIO をデプロイする