kubectl-krew插件离线安装方案(保你成功)
# 简介
Krew 本身是一个 kubectl 的插件,同时也是一个 kubectl 的插件包管理器。
借助 Krew,可以轻松地使用 kubectl plugin:发现插件、安装和管理插件。使用类似 apt、dnf 或者 brew。
截至今日,社区已有 242 个插件 (opens new window),借助这些插件,能够实现很多个性的需求。
# 链接
- 官网: https://krew.sigs.k8s.io/ (opens new window)
- 插件列表: https://krew.sigs.k8s.io/plugins/ (opens new window)
- 用户使用指南: https://krew.sigs.k8s.io/docs/user-guide/ (opens new window)
- 开发者使用指南: https://krew.sigs.k8s.io/docs/developer-guide/ (opens new window)
# 离线安装 krew
krew 是个好东西,它之所以在国内不够盛行,应该与受限于网络环境导致安装比较费劲儿有很大关系。因为 krew 自身以及插件的安装都是从 github 下载资源,大多数国内的 k8s 集群可能访问 github 都是比较费劲儿的,所以本文就来介绍一下如何离线安装 krew 及其插件。
# 准备离线资源
很多文章介绍的离线资源,仍旧是通过 github 下载之后获取到,然后再传到服务器进行安装,而有一些朋友可能本地连 github 也是有一些困难的,考虑到这一层原因,我特地把当前 krew 最新版本的包封装到镜像内,便于你直接拿到。
$ docker run -itd --name krew registry.cn-hangzhou.aliyuncs.com/eryajf/pack:krew
可以看下我在包里准备的文件:
$ docker exec -it krew tree
.
├── Dockerfile
├── krew-darwin_amd64.tar.gz
├── krew-darwin_arm64.tar.gz
├── krew-linux_amd64.tar.gz
├── krew-linux_arm.tar.gz
├── krew-linux_arm64.tar.gz
├── krew.yaml
├── ns.yaml
└── v0.9.5.tar.gz
2
3
4
5
6
7
8
9
10
11
准备了几个常见平台的安装包,这里不多赘述,你选择符合你的平台的包即可。最后的两个文件是插件 ns 对应的配置文件及安装包。
我这里以 linux_amd64
为例,将所需资源拷贝到本地:
$ docker cp krew:/app/krew.yaml ./
$ docker cp krew:/app/krew-linux_amd64.tar.gz ./
$ tar xf krew-linux_amd64.tar.gz
2
3
# 执行安装
$ ./krew-linux_amd64 install --manifest=krew.yaml --archive=krew-linux_amd64.tar.gz
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/.
| /
/
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
# 添加 krew 到环境变量
将如上输出中的变量写入到环境变量中,我一般写入到 /etc/profile
$ tail -n1 /etc/profile
export PATH="${KREW_ROOT:-$HOME/.krew}/bin:$PATH"
# 加载变量
$ source /etc/profile
2
3
4
5
# 验证是否生效
$ kubectl krew -h
krew is the kubectl plugin manager.
You can invoke krew through kubectl: "kubectl krew [command]..."
Usage:
kubectl krew [command]
2
3
4
5
6
有这个输出则说明生效了。
# 离线安装插件
先介绍一下插件安装的思路,在 plugins (opens new window) 目录下是所有插件的安装信息,拿 ns 插件举例,我们下载他的 yaml,然后可以过滤出安装包的地址:
$ cat ns.yaml | grep uri
uri: https://github.com/ahmetb/kubectx/archive/v0.9.5.tar.gz
2
通过这个地址下载对应的安装包,然后执行如下命令即可离线安装该插件:
$ kubectl krew install --manifest=ns.yaml --archive=v0.9.5.tar.gz
那上边我提供的安装包里也准备了这个插件,你可以直接拷贝并安装:
$ docker cp krew:/app/ns.yaml ./
$ docker cp krew:/app/v0.9.5.tar.gz ./
# 执行安装
$ kubectl krew install --manifest=ns.yaml --archive=v0.9.5.tar.gz
2
3
4
5
执行安装:
$ kubectl krew install --manifest=ns.yaml --archive=v0.9.5.tar.gz
Installing plugin: ns
Installed plugin: ns
\
| Use this plugin:
| kubectl ns
| 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.
| /
/
2
3
4
5
6
7
8
9
10
11
12
13
14
15
然后执行如下命令可以验证安装情况:
$ kubectl ns
app
cattle-system
crane-system
default
kube-node-lease
kube-public
kube-system
tcr-assistant-system
2
3
4
5
6
7
8
9
ns 插件就是提供列出命名空间功能的一个插件。
好啦,现在就成功安装了 krew 并演示了一个插件的安装,后续你遇到其他优秀的插件,就可以通过这个思路进行安装啦。