Kubecm:管理你的 kubeconfig

简介: 介绍一款小工具:kubecm,帮助你管理杂乱无章的 kubeconfig。

封面

前言

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

kubecm

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

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

安装

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

MacOS

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

brew install sunny0826/tap/kubecm

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/

Windows

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

命令行自动补全

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

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

source <(kubecm completion zsh)

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

source $HOME/.zshrc

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

image

操作 kubeconfig

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

查看

# 查看 $HOME/.kube/config 中所有的 context
kubecm

添加

# 添加 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

删除

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

合并

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

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

重命名

# 交互式重命名
kubecm rename
# 将 dev 重命名为 test
kubecm rename -o dev -n test
# 重命名 current-context 为 dev
kubecm rename -n dev -c

效果展示

ezgif.com-optimize.gif

结语

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

相关实践学习
通过Ingress进行灰度发布
本场景您将运行一个简单的应用,部署一个新的应用用于新的发布,并通过Ingress能力实现灰度发布。
容器应用与集群管理
欢迎来到《容器应用与集群管理》课程,本课程是“云原生容器Clouder认证“系列中的第二阶段。课程将向您介绍与容器集群相关的概念和技术,这些概念和技术可以帮助您了解阿里云容器服务ACK/ACK Serverless的使用。同时,本课程也会向您介绍可以采取的工具、方法和可操作步骤,以帮助您了解如何基于容器服务ACK Serverless构建和管理企业级应用。 学习完本课程后,您将能够: 掌握容器集群、容器编排的基本概念 掌握Kubernetes的基础概念及核心思想 掌握阿里云容器服务ACK/ACK Serverless概念及使用方法 基于容器服务ACK Serverless搭建和管理企业级网站应用
目录
相关文章
|
9月前
|
存储 JSON Kubernetes
KubeConfig
KubeConfig 是一个用于存储和管理 Kubernetes 集群配置文件的 JSON 格式文件。它包含了集群的详细信息,如 API 服务器地址、认证信息、命名空间等。KubeConfig 文件的主要作用是让用户能够轻松地在不同的 Kuberne
118 1
|
9月前
|
Kubernetes 搜索推荐 网络协议
使用 kubeadm 部署 Kubernetes 集群(三)kubeadm 初始化 k8s 证书过期解决方案
使用 kubeadm 部署 Kubernetes 集群(三)kubeadm 初始化 k8s 证书过期解决方案
479 8
|
Kubernetes 容器 弹性计算
阿里云kubernetes集群自制kubeconfig
使用kubeconfig文件来组织关于集群,用户,名称空间和身份验证机制的信息。 kubectl命令行工具使用kubeconfig文件来查找选择群集并与群集的API服务器进行通信所需的信息。默认情况下 kubectl使用的配置文件名称是在$HOME/.kube目录下 config文件,可以通过设置环境变量KUBECONFIG或者--kubeconfig指定其他的配置文件 。
3892 0
|
Kubernetes 安全 Linux
使用 kubeadm 创建 kubernetes 1.9 集群
简介 kubeadm是一个kubernetes官方提供的快速安装和初始化拥有最佳实践(best practice)的kubernetes集群的工具,虽然目前还处于 beta 和 alpha 状态,还不能用在生产环境,但是我们可以通过学习这种部署方法来体会一些官方推荐的kubernetes最佳实践的设计和思想。
1952 0
|
Kubernetes 负载均衡 网络协议
Kubernetes 使用kubeadm创建集群
Kubernetes 使用kubeadm创建集群
516 0
|
Kubernetes Shell Linux
使用 kubeadm 创建一个 kubernetes 集群
kubeadm 是一个 kubernetes 官方提供的快速安装和初始化拥有最佳实践(best practice)的 kubernetes 集群的工具,虽然目前还处于 beta 和 alpha 状态,还不能用在生产环境,但是我们可以通过学习这种部署方法来体会一些官方推荐的kubernetes最佳实践的设计和思想。
6806 0
|
Kubernetes 容器 Perl
kubernetes管理集群系列之命令行工具kubectl详解(2.2)
kubernetes管理集群系列之命令行工具kubectl详解
186 0
|
Kubernetes 应用服务中间件 测试技术
kubernetes管理集群系列之命令行工具kubectl详解(2.1)
kubernetes管理集群系列之命令行工具kubectl详解
270 0
|
6月前
|
存储 Kubernetes 数据格式
精通Kubernetes:利用YAML轻松管理资源
精通Kubernetes:利用YAML轻松管理资源

热门文章

最新文章