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开发工具

Zlib 许可证

93KB
2K SLoC

Kubie

kubiekubectxkubensk on 提示修改脚本的替代品。它通过使每个shell独立于其他shell的方式提供环境切换、命名空间切换和提示修改。它还支持分割配置文件,这意味着它可以从多个文件中加载Kubernetes环境。您可以在设置部分配置kubie查找环境的位置。

Kubie 还具有其他一些不错的功能,如 kubie exec,允许您在不启动shell的情况下在特定环境和命名空间中执行命令,以及 kubie lint,它扫描您的k8s配置文件以查找问题,并通知您它们是什么。

感谢 @ahermant 提供了精美的标志!

安装

二进制文件

您可以在GitHub发布页面上下载适用于Linux或OS X的二进制文件。您可以使用 curlwget 下载它。不要忘记使用 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 ctxkubie nskubie 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 ctxkubie ns中使用时,将可用可选择的菜单。


  • kubie ctx显示可选择的上下文菜单
  • kubie ctx <context>将当前shell切换到指定的上下文(如果不是kubie shell,则启动shell)
  • kubie ctx -切换回上一个上下文
  • kubie ctx <context> -r在指定上下文中启动递归shell
  • kubie ctx <context> -n <namespace>在指定上下文和命名空间中启动shell
  • kubie ns显示可选择的命名空间菜单
  • kubie ns <namespace>将当前shell切换到指定的命名空间
  • kubie ns -切换回上一个命名空间
  • kubie ns <namespace> -r在指定命名空间中启动递归shell
  • kubie 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