Cloud/Kubernetes
Kubernetes krew
퐁스
2021. 4. 29. 14:45
한 달만의 포스팅이다. 이직 준비때문에 바빴는데 현 직장도 어느 정도 정리가 됐고, 또 언제 kube를 사용할 수 있을지 몰라 남은 시간은 하고 싶었던 공부를 하려고 한다.
1. Krew
Krew는 MacOS의 brew와 같은 kubectl plugin의 패키지를 관리해준다. kubectl v1.12 이상에서만 호환되며 krew를 통해서 다양한 플러그인을 설치할 수 있다.
2. 설치
(
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
)
위 명령어를 이용하여 krew를 설치한다.
[root@danika ~]# (
> 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
> )
++ mktemp -d
+ cd /tmp/tmp.M295H78y4c
++ 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
+ curl -fsSLO https://github.com/kubernetes-sigs/krew/releases/latest/download/krew.tar.gz
+ tar zxvf krew.tar.gz
./LICENSE
./krew-darwin_amd64
./krew-darwin_arm64
./krew-linux_amd64
./krew-linux_arm
./krew-linux_arm64
./krew-windows_amd64.exe
+ KREW=./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에 Krew를 추가한다.
[root@danika ~]# vi /root/.bashrc
export PATH="${KREW_ROOT:-$HOME/.krew}/bin:$PATH"
[root@danika ~]# source /root/.bashrc
이제 krew를 사용할 수 있다.
[root@danika ~]# 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.
3. 사용
사용 가능한 플러그인을 검색해본다.
[root@danika ~]# kubectl krew update
Updated the local copy of plugin index.
[root@danika ~]# kubectl krew search
NAME DESCRIPTION INSTALLED
access-matrix Show an RBAC access matrix for server resources 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
assert Assert Kubernetes resources no
auth-proxy Authentication proxy to a pod or service no
azad-proxy Generate and handle authentication for azad-kub... no
bd-xray Run Black Duck Image Scans no
bulk-action Do bulk actions on Kubernetes resources. no
검색어도 지정이 가능하다.
[root@danika ~]# kubectl krew search node
NAME DESCRIPTION INSTALLED
node-admin List nodes and run privileged pod with chroot no
node-restart Restart cluster nodes sequentially and gracefully no
node-shell Spawn a root shell on a node via kubectl no
이제 필요한 플러그인을 다운받고 사용할 수 있다.