kubeconfig管理工具:kubecm

1,371次阅读

共计 2595 个字符,预计需要花费 7 分钟才能阅读完成。

image-20210106172415062

1、前言

该项目脱胎于 mergeKubeConfig 项目,最早写该项目的目的是在一堆杂乱无章的 kubeconfig 中自由的切换。随着需要操作的 Kubernetes 集群越来越多,在不同的集群之间切换也越来越麻烦,而操作 Kubernetes 集群的本质不过是通过 kubeconfig 访问 Kubernetes 集群的 API Server,以操作 Kubernetes 的各种资源,而 kubeconfig 不过是一个 yaml 文件,用来保存访问集群的密钥,最早的 mergeKubeConfig 不过是一个操作 yaml 文件的 Python 脚本。而随着 golang 学习的深入,也就动了重写这个项目的念头,就这样 kubecm 诞生了。

2、kubecm

kubecm 由 golang 编写,支持 Mac Linuxwindows 平台,delete rename switch 提供比较实用的交互式的操作,目前的功能包括:

  • add :添加新的 kubeconfig$HOME/.kube/config

  • completion :命令行自动补全功能

  • delete:删除已有的 context ,提供交互式和指定删除两种方式

  • merge:将指定目录中的 kubeconfig 合并为一个 kubeconfig 文件

  • rename:重名指定的 context,提供交互式和指定重命名两种方式

  • switch:交互式切换 context

3、安装

kubecm 支持 Mac Linuxwindows 平台,安装方式也比较简单:

3.1 MacOS

使用 brew 或者直接下载二进制可执行文件

brew install sunny0826/tap/kubecm

3.2 Linux

下载二进制可执行文件

# linux x86_64
curl -Lo kubecm.tar.gz https://github.com/sunny0826/kubecm/releases/download/v${VERSION}/kubecm_${VERSION}_Linux_x86_64.tar.gz
tar -zxvf kubecm.tar.gz kubecm
cd kubecm
sudo mv kubecm /usr/local/bin/

3.3 Windows

下载二进制可执行文件,并将文件移动到 $PATH 中即可

4、命令自动补全

kubecm 提供了和 kubectl 一样的 completion 命令行自动补全功能(支持 bash/zsh)

zsh 为例,在 $HOME/.zshrc 中添加

source <(kubecm completion zsh)

然后使用 source 命令,使其生效

source $HOME/.zshrc

之后,在输入 kubecm 后按 tab 键,就可以看到命令行自动补全的内容

image-20210106172818240

5、操作 kubeconfig

5.1 查看

# 查看 $HOME/.kube/config 中所有的 context
kubecm ls
{17:29}~ ➭ kubecm ls
+------------+-----------+-----------------------+--------------------+------------------------------+--------------+
|   CURRENT  |    NAME   |        CLUSTER        |        USER        |            SERVER            |   Namespace  |
+============+===========+=======================+====================+==============================+==============+
|            |    ldf    |   cluster-f2mk9984gk  |   user-f2mk9984gk  |   https://172.20.2.118:6443  |    default   |
+------------+-----------+-----------------------+--------------------+------------------------------+--------------+
|      *     |   zstack  |   cluster-th9975gt2t  |   user-th9975gt2t  |   https://10.234.2.11:6443   |    default   |
+------------+-----------+-----------------------+--------------------+------------------------------+--------------+
​
Cluster check succeeded!
Kubernetes master is running at https://10.234.2.11:6443
Contains components: [scheduler controller-manager etcd-0] 
​

5.2 添加

# 添加 example.yaml 到 $HOME/.kube/config.yaml,该方式不会覆盖源 kubeconfig,只会在当前目录中生成一个 config.yaml 文件
kubecm add -f example.yaml
​
# 功能同上,但是会将 example.yaml 中的 context 命名为 test
kubecm add -f example.yaml -n test
​
# 添加 -c 会覆盖源 kubeconfig
kubecm add -f example.yaml -c

5.3 删除

# 交互式删除
kubecm delete
​
# 删除指定 context
kubecm delete my-context

5.4 合并

# 合并 test 目录中的 kubeconfig,该方式不会覆盖源 kubeconfig,只会在当前目录中生成一个 config.yaml 文件
kubecm merge -f test 
​
# 添加 -c 会覆盖源 kubeconfig
kubecm merge -f test -c

6、演示

7、参考文档

https://www.jianshu.com/p/5d0246dce792?utm_campaign=studygolang.com&utm_medium=studygolang.com&utm_source=studygolang.com

https://kubecm.cloud/#/en-us/README

正文完
 
mervinwang
版权声明:本站原创文章,由 mervinwang 2021-01-06发表,共计2595字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
文章搜索