前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Kubecm:管理你的 kubeconfig

Kubecm:管理你的 kubeconfig

作者头像
郭旭东
发布2020-12-30 12:31:51
9180
发布2020-12-30 12:31:51
举报
文章被收录于专栏:云原生工具箱云原生工具箱

前言

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

kubecm

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

•add :添加新的 kubeconfig$HOME/.kube/config 中•completion :命令行自动补全功能•delete:删除已有的 context ,提供交互式和指定删除两种方式•merge:将指定目录中的 kubeconfig 合并为一个 kubeconfig 文件•rename:重名指定的 context,提供交互式和指定重命名两种方式•switch:交互式切换 context

安装

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

MacOS

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

代码语言:javascript
复制
brew install sunny0826/tap/kubecm

Linux

下载二进制可执行文件

代码语言:javascript
复制
# 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/

Windows

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

命令行自动补全

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

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

代码语言:javascript
复制
source <(kubecm completion zsh)

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

代码语言:javascript
复制
source $HOME/.zshrc

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

操作 kubeconfig

kubecm[2] 可以实现 kubeconfig 的查看、添加、删除、合并、重命名和切换

查看

代码语言:javascript
复制
# 查看 $HOME/.kube/config 中所有的 context
kubecm

添加

代码语言:javascript
复制
# 添加 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

删除

代码语言:javascript
复制
# 交互式删除
kubecm delete
# 删除指定 context
kubecm delete my-context

合并

代码语言:javascript
复制
# 合并 test 目录中的 kubeconfig,该方式不会覆盖源 kubeconfig,只会在当前目录中生成一个 config.yaml 文件
kubecm merge -f test

# 添加 -c 会覆盖源 kubeconfig
kubecm merge -f test -c

重命名

代码语言:javascript
复制
# 交互式重命名
kubecm rename
# 将 dev 重命名为 test
kubecm rename -o dev -n test
# 重命名 current-context 为 dev
kubecm rename -n dev -c

效果展示

结语

kubecm[2] 项目的初衷为学习 golang 并熟悉 client-go 的使用,随着使用的深入,断断续续增加了不少功能,开发出了一个看上去还算正规的项目。总的来说都是根据自己的喜好来开发的业余项目,欢迎各位通过 ISSUE[4] 来进行交流和讨论。

References

[1] mergeKubeConfig: https://github.com/sunny0826/mergeKubeConfig [2] kubecm: https://github.com/sunny0826/kubecm [3] kubectl: https://github.com/kubernetes/kubectl [4] ISSUE: https://github.com/sunny0826/kubecm/issues/new

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-12-10,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 云原生之路 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • kubecm
  • 安装
    • MacOS
      • Linux
        • Windows
        • 命令行自动补全
        • 操作 kubeconfig
          • 查看
            • 添加
              • 删除
                • 合并
                  • 重命名
                  • 效果展示
                  • 结语
                    • References
                    相关产品与服务
                    容器服务
                    腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
                    领券
                    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档