Kubie
kubie
是 kubectx
、kubens
和 k on
提示修改脚本的替代品。它提供了上下文切换、命名空间切换和提示修改功能,使每个 shell 独立于其他 shell。它还支持拆分配置文件,这意味着它可以从多个文件加载 Kubernetes 上下文。你可以配置 kubie 查找上下文的路径,详见设置部分。
Kubie 还有其他不错的功能,比如 kubie exec
,它允许你在某个上下文和命名空间中执行命令,而无需生成一个 shell;以及 kubie lint
,它可以扫描你的 k8s 配置文件是否存在问题并告知你。
感谢 @ahermant 设计的精美 logo!
安装
二进制文件
你可以在 GitHub 发布页面 下载 Linux 或 OS X 的二进制文件。你可以使用 curl
或 wget
下载。别忘了用 chmod +x
给文件添加可执行权限!
Cargo
你可以使用 cargo
和 crates.io 从源代码构建 kubie
。如果你没有安装 Rust 编译器,请访问 rustup.rs 获取一个。然后你可以运行 cargo install kubie
,kubie 将从 crates.io 下载并构建。
Homebrew
你可以通过运行 brew install kubie
从 Homebrew 安装 kubie
。
MacPorts
你也可以通过运行 sudo port install kubie
从 MacPorts 安装 kubie
。
Nix
有一个由 @illiusdope 维护的 kubie
Nix 包可供安装。
Arch Linux
kubie
可在 extra 仓库 中获得,可以通过运行 pacman -S kubie
安装。
自动补全
Bash
如果你想要 kubie ctx
、kubie ns
和 kubie exec
的自动补全功能,请安装此脚本:
sudo cp ./completion/kubie.bash /etc/bash_completion.d/kubie
然后启动新的 shell 或源引用复制的文件:
. /etc/bash_completion.d/kubie
Fish
通过复制安装补全脚本 kubie.fish,例如:
cp completion/kubie.fish ~/.config/fish/completions/
然后重新打开 fish 或源引用该文件。
使用
使用 kubie ctx
和 kubie ns
时将提供可选择的菜单。
kubie ctx
显示可选择的上下文菜单kubie ctx <context>
将当前 shell 切换到指定的上下文(如果不是 kubie shell,则生成一个 shell)kubie ctx -
切换回上一个上下文kubie ctx <context> -r
在给定的上下文中生成一个递归 shellkubie ctx <context> -n <namespace>
在给定的上下文和命名空间中生成一个 shellkubie ns
显示可选择的命名空间菜单kubie ns <namespace>
将当前 shell 切换到指定的命名空间kubie ns -
切换回上一个命名空间kubie ns <namespace> -r
在给定的命名空间中生成一个递归 shellkubie exec <context> <namespace> <cmd> <args>...
在给定的上下文和命名空间中执行命令kubie exec <wildcard> <namespace> <cmd> <args>...
在通配符匹配的所有上下文和给定的命名空间中执行命令kubie exec <wildcard> <namespace> -e <cmd> <args>...
在通配符匹配的所有上下文和给定的命名空间中执行命令,但如果任何执行的命令返回非零退出代码,则提前失败kubie export <context> <namespace>
打印上下文和命名空间的独立配置文件路径kubie edit
显示可编辑的上下文菜单kubie edit <context>
编辑包含此上下文的文件kubie edit-config
编辑 kubie 自己的配置文件kubie lint
检查 k8s 配置文件是否存在问题kubie info ctx
打印当前上下文的名称kubie info ns
打印当前命名空间的名称kubie info depth
打印递归上下文的深度kubie update
检查最新的 kubie 版本并在需要时更新本地安装
设置
你可以通过 ~/.kube/kubie.yaml
文件自定义 kubie 的行为。以下是可用的设置及其默认值。
# 强制 kubie 使用特定的 shell,如果未设置则检测当前使用的 shell。
# 可能的值:bash、dash、fish、xonsh、zsh
# 默认:未设置
shell: bash
# 配置查找 kubernetes 配置文件的位置。
configs:
# 包含这些通配符。
# 默认:下面列出的值。
include:
- ~/.kube/config
- ~/.kube/*.yml
- ~/.kube/*.yaml
- ~/.kube/configs/*.yml
- ~/.kube/configs/*.yaml
- ~/.kube/kubie/*.yml
- ~/.kube/kubie/*.yaml
# 排除这些通配符。
# 默认:下面列出的值。
# 注意:kubie 自己的配置文件始终被排除。
exclude:
- ~/.kube/kubie.yaml
# 提示设置。
prompt:
# 在 kubie shell 中禁用 kubie 的自定义提示。当你已经有一个显示 kubernetes 信息的提示时,这很有用。
# 默认:false
disable: true
# 使用递归上下文时,当深度大于 1 时显示深度。
# 默认:true
show_depth: true
# 使用 zsh 时,使用 RPS1 在右侧显示上下文和命名空间。
# 默认:false
zsh_use_rps1: false
# 使用 fish 时,在右侧显示上下文和命名空间。
# 默认:false
fish_use_rprompt: false
# 使用 xonsh 时,在右侧显示上下文和命名空间。
# 默认:false
xonsh_use_right_prompt: false
# 行为
behavior:
# 切换命名空间时,使用 `kubectl get namespaces` 确保命名空间存在。
# 如果你没有列出命名空间的权限,请禁用此功能。
# 默认:true
validate_namespaces: true
# 启用或禁用运行 `kubie exec` 时打印 'CONTEXT => ...' 头部。
# 有效值:
# auto: 仅当 stdout 是 TTY 时打印上下文头部。通过管道/重定向 kubie 输出会自动禁用上下文头部。
# always: 始终打印上下文头部,即使 stdout 不是 TTY。
# never: 从不打印上下文头部。
# 默认:auto
print_context_in_exec: auto
# 可选的开始和停止钩子
hooks:
# 启动 CTX 时运行的命令钩子。
# 这个例子重新标记你的终端窗口
# 默认:无
start_ctx: >
echo -en "\033]1; `kubie info ctx`|`kubie info ns` \007"
# 停止 CTX 时运行的命令钩子
# 这个例子将终端设置回 shell 名称
# 默认:无
stop_ctx: >
echo -en "\033]1; $SHELL \007"
对发行版维护者
从 0.19.0
版本开始,自更新功能是作为一个特性提供的。你可以使用 cargo build --release --no-default-features
来生成一个没有自更新功能的二进制文件。对于更新,让用户依赖发行版的包管理器可能会更好。生成的二进制文件也会小很多,因为它的依赖更少。
未来计划
- 与 vault 集成,自动从 vault 服务器下载 k8s 配置
- 导入/编辑配置