使用alias简化kubectl命令时传入参数问题
使用kubectl管理k8s集群很爽,但是kubectl的命令却很长,如果管理多个集群,需要带上kubeconfig文件的路径,再加上namespace,如果是exec的话,那么命令恐怕一行都装不下了。那么自然而然的就想到使用alias来缩短命令。希望实现:alias kclxx=kubectl --kubeconfig=/kubeconfig/path --namespace=这里希望把ns作为
现状
使用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的函数,在这个函数中直接执行命令,同时将参数用$*
的方式拼接到命令最后,大功告成!
更多推荐
所有评论(0)