当前位置: 首页 > 工具软件 > kubectl-alias > 使用案例 >

使用alias简化kubectl命令时传入参数问题

宗政英才
2023-12-01
现状

使用kubectl管理k8s集群很爽,但是kubectl的命令却很长,如果管理多个集群,需要带上kubeconfig文件的路径,再加上namespace,如果是exec的话,那么命令恐怕一行都装不下了。

思路

那么自然而然的就想到使用alias来缩短命令。希望实现:
alias kclxx=kubectl --kubeconfig=/kubeconfig/path --namespace=
这里希望把ns作为一个参数传入alias,有了这个alias,就可以直接传入ns,使用kclxx ns get po来查看对应集群、对应ns的pod了,其他命令以此类推。

问题

But,凡事都有但是,alias不支持参数,我估计alias就相当于c中的#define,属于直接文本替换,所以自然没办法支持参数了,所以想传入ns的想法破灭了。

解决方案

所以就只能使用函数了:
kcljxq='_a(){kubectl --kubeconfig=/Users/zhenggui/.kube/config-xxx --namespace=38-$*}; _a
说明一下,这里定义了一个alias,内容为一个名为a的函数,在这个函数中直接执行命令,同时将参数用$*的方式拼接到命令最后,大功告成!

 类似资料: