35个版本
0.23.1 | 2024年7月1日 |
---|---|
0.23.0 | 2023年12月12日 |
0.22.0 | 2023年8月23日 |
0.21.0 | 2023年7月29日 |
0.9.1 | 2020年5月7日 |
#33 在 开发工具 中
93KB
2K SLoC
Kubie
kubie
是 kubectx
、kubens
和 k on
提示修改脚本的替代品。它通过使每个shell独立于其他shell的方式提供环境切换、命名空间切换和提示修改。它还支持分割配置文件,这意味着它可以从多个文件中加载Kubernetes环境。您可以在设置部分配置kubie查找环境的位置。
Kubie 还具有其他一些不错的功能,如 kubie exec
,允许您在不启动shell的情况下在特定环境和命名空间中执行命令,以及 kubie lint
,它扫描您的k8s配置文件以查找问题,并通知您它们是什么。
感谢 @ahermant 提供了精美的标志!
安装
二进制文件
您可以在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
可在额外仓库中找到,并且可以通过运行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 的行为。以下列出了可用的设置及其默认值。
# Force kubie to use a particular shell, if unset detect shell currently in use.
# Possible values: bash, dash, fish, xonsh, zsh
# Default: unset
shell: bash
# Configure where to look for kubernetes config files.
configs:
# Include these globs.
# Default: values listed below.
include:
- ~/.kube/config
- ~/.kube/*.yml
- ~/.kube/*.yaml
- ~/.kube/configs/*.yml
- ~/.kube/configs/*.yaml
- ~/.kube/kubie/*.yml
- ~/.kube/kubie/*.yaml
# Exclude these globs.
# Default: values listed below.
# Note: kubie's own config file is always excluded.
exclude:
- ~/.kube/kubie.yaml
# Prompt settings.
prompt:
# Disable kubie's custom prompt inside of a kubie shell. This is useful
# when you already have a prompt displaying kubernetes information.
# Default: false
disable: true
# When using recursive contexts, show depth when larger than 1.
# Default: true
show_depth: true
# When using zsh, show context and namespace on the right-hand side using RPS1.
# Default: false
zsh_use_rps1: false
# When using fish, show context and namespace on the right-hand side.
# Default: false
fish_use_rprompt: false
# When using xonsh, show context and namespace on the right-hand side.
# Default: false
xonsh_use_right_prompt: false
# Behavior
behavior:
# Make sure the namespace exists with `kubectl get namespaces` when switching
# namespaces. If you do not have the right to list namespaces, disable this.
# Default: true
validate_namespaces: true
# Enable or disable the printing of the 'CONTEXT => ...' headers when running
# `kubie exec`.
# Valid values:
# auto: Prints context headers only if stdout is a TTY. Piping/redirecting
# kubie output will auto-disable context headers.
# always: Always prints context headers, even if stdout is not a TTY.
# never: Never prints context headers.
# Default: auto
print_context_in_exec: auto
# Optional start and stop hooks
hooks:
# A command hook to run when a CTX is started.
# This example re-labels your terminal window
# Default: none
start_ctx: >
echo -en "\033]1; `kubie info ctx`|`kubie info ns` \007"
# A command hook to run when a CTX is stopped
# This example sets the terminal back to the shell name
# Default: none
stop_ctx: >
echo -en "\033]1; $SHELL \007"
针对发行版维护者
从 0.19.0
版本开始,自动更新功能被放在了一个特性之下。您可以使用 cargo build --release --no-default-features
来生成一个不带自动更新功能的二进制文件。可能更好的做法是让人们依赖于发行版的包管理器来更新此功能。生成的二进制文件也相当小,因为它具有更少的依赖项。
未来计划
- 与 vault 集成以自动从 vault 服务器下载 k8s 配置
- 导入/编辑配置
依赖项
~14–29MB
~409K SLoC