FluxCD CLI能否像kubectl、helm一样从当前集群上下文获取自动补全?
FluxCD CLI 动态资源补全问题解答
问题描述
目前FluxCD可通过
flux completion SHELL命令提供CLI补全能力,但仅支持命令本身的结构补全,实际使用时存在两类补全缺失场景:
- 命名空间补全缺失:执行
flux reconcile hr -n some_namespace_start后按TAB键,无法给出匹配的命名空间补全建议- 资源名称补全缺失:执行
flux reconcile hr BEGIN_SOME_HR_NAME后按TAB键,无法给出flux-system等命名空间下的Helm Release资源补全建议
请问是否可以实现FluxCD CLI从当前上下文的Kubernetes集群中拉取相关信息完成自动补全,达到与kubectl、helm类似的自动补全效果?
解答
可以实现,Flux官方从v2.1.0版本开始已经原生支持基于集群资源的动态补全能力,不需要自行开发额外的补全脚本。
配置步骤
- 首先确认本地安装的Flux CLI版本不低于v2.1.0,可执行
flux --version查看版本号,版本过低的话先升级到最新稳定版。 - 根据你使用的shell执行对应的补全启用命令,以下是常用shell的配置方法:
- Bash
执行以下命令将补全脚本写入bash配置文件:echo 'source <(flux completion bash)' >> ~/.bashrc source ~/.bashrc - Zsh
执行以下命令将补全脚本写入zsh配置文件:
如果之前没开启zsh补全体系,需要先在echo 'source <(flux completion zsh)' >> ~/.zshrc source ~/.zshrc~/.zshrc中加入autoload -Uz compinit && compinit配置。 - Fish
执行以下命令安装补全脚本:flux completion fish > ~/.config/fish/completions/flux.fish
- Bash
生效后效果
配置完成后重启终端即可使用动态补全能力:
- 命名空间补全:输入
flux reconcile hr -n后按TAB,会自动拉取当前kubeconfig上下文对应集群的所有命名空间做匹配补全,输入前缀后也会自动过滤匹配的命名空间。 - 资源名称补全:输入
flux reconcile hr后按TAB,会拉取当前默认命名空间下的所有HelmRelease资源作为补全选项;如果先指定了-n 目标命名空间参数,再按TAB会拉取对应命名空间下的HelmRelease资源,和kubectl、helm的补全逻辑完全一致。
如果因为特殊原因无法升级Flux CLI到v2.1.0及以上版本,也可以自行修改对应shell的补全脚本,在资源、命名空间补全的逻辑中插入调用kubectl拉取集群对应资源的命令即可,但这种自定义修改的兼容性差,后续版本迭代可能失效,更建议直接升级官方版本使用原生支持的动态补全能力。
内容的提问来源于stack exchange,提问作者VV1
相关产品推荐
相关产品推荐

