Kubectl插件管理工具krew
文章目录
- 多套Kubernetes集群,如何快速切换?
- 有多个Namespace需要来回切换,除了每次跟上
-n
参数外有没有更快捷的方法? - ……
为了解决上束问题,Kubernetes从1.12
开始推出了Krew,来管理各种kubectl插件,扩展kubectl的功能,在这之前只能自己写实现。
krew
是用来管理kubectl
插件的工具,类似于yum、apt、dnf,使用它可以很方便获取我们想要的插件来扩展kubectl的功能。
安装Krew
Mac 或者 Linux:
-
在终端中执行下边命令安装krew,依赖
git
。1 2 3 4 5 6 7 8
( set -x; cd "$(mktemp -d)" && curl -fsSLO "https://github.com/kubernetes-sigs/krew/releases/download/v0.3.3/krew.{tar.gz,yaml}" && tar zxvf krew.tar.gz && KREW=./krew-"$(uname | tr '[:upper:]' '[:lower:]')_amd64" && "$KREW" install --manifest=krew.yaml --archive=krew.tar.gz && "$KREW" update )
-
添加环境变量。
1
export PATH="${KREW_ROOT:-$HOME/.krew}/bin:$PATH"
将上边命令追加到
.bashrc
或者.zshrc
,然后source
生效 -
验证。
1 2 3 4 5 6 7 8 9 10
➜ ~ kubectl krew version OPTION VALUE GitTag v0.3.2 GitCommit bd754e1 IndexURI https://github.com/kubernetes-sigs/krew-index.git BasePath /Users/xnile/.krew IndexPath /Users/xnile/.krew/index InstallPath /Users/xnile/.krew/store DownloadPath /var/folders/jd/tl7sc7d15qb41s5jm1hwtwtr0000gn/T/krew-downloads BinPath /Users/xnile/.krew/bin
安装插件
-
查看所有可用的插件
1 2 3 4 5 6 7 8 9 10 11 12 13
➜ ~ kubectl krew search NAME DESCRIPTION INSTALLED access-matrix Show an RBAC access matrix for server resources no auth-proxy Authentication proxy to a pod or service no bulk-action Do bulk actions on Kubernetes resources. no ca-cert Print the PEM CA certificate of the current clu... no change-ns View or change the current namespace via kubectl. no config-cleanup Automatically clean up your kubeconfig no cssh SSH into Kubernetes nodes no ctx Switch between contexts in your kubeconfig yes custom-cols A "kubectl get" replacement with customizable c... no debug Attach ephemeral debug container to running pod no ...
-
安装插件
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
➜ ~ kubectl krew install ns Updated the local copy of plugin index. Installing plugin: ns 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. / Installed plugin: ns WARNING: You installed a plugin from the krew-index plugin repository. These plugins are not audited for security by the Krew maintainers. Run them at your own risk.
常用的插件
我常用的插件
|
|
插件开发
kubectl插件开发不限制开发语言,可以使用任意语言,即可以是高级语言编译出来的二进制文件,也可以是shell等脚本文件,只要最终将文件以kubectl-
的方式命名并放到PATH
能找到路径中即可。
如果你会Go语言,官方提供了一个cli-runtime 项目来方便你编写插件。
另外官方还提供了一个Go编写kubectl插件的例子https://github.com/kubernetes/sample-cli-plugin。
参考
https://github.com/kubernetes-sigs/krew/blob/v0.1.0-alpha.1/docs/KREW_ARCHITECTURE.md
文章作者 XniLe
上次更新 2023-10-10