Kubecm: управляйте своим kubeconfig

Kubernetes

封面

предисловие

Проект родился изmergeKubeConfigПроект, который изначально был написан для свободного переключения между кучей запутанных kubeconfigs. Поскольку все больше и больше кластеров Kubernetes необходимо эксплуатировать, становится все труднее переключаться между разными кластерами, и суть эксплуатации кластеров Kubernetes заключается в том, чтобы простоkubeconfigПолучите доступ к API-серверу кластера Kubernetes для работы с различными ресурсами Kubernetes иkubeconfigНо это файл yaml, используемый для сохранения ключа для доступа к кластеру, самый раннийmergeKubeConfigПросто скрипт Python, который манипулирует файлами yaml. А с углубленным изучением голанга подвинулась еще и идея переписать этот проект, и все тутkubecmРодился.

kubecm

kubecmНаписано golang, поддерживаетMac Linuxа такжеwindowsПлатформа,delete rename switchОбеспечивает более практичные интерактивные операции Текущие функции включают в себя:

  • добавить : добавить новыйkubeconfigприбыть$HOME/.kube/configсередина
  • завершение: автодополнение командной строки
  • удалить: удалить существующиеcontext, предоставляя интерактивные и указанные методы удаления
  • объединить: объединить файлы в указанном каталогеkubeconfigсливаться в одинkubeconfigдокумент
  • переименовать: указано с тем же именемcontext, предоставляя интерактивные и указанные методы переименования
  • переключатель: интерактивный переключательcontext

Установить

kubecmслужба поддержкиMac Linuxа такжеwindowsПлатформа, метод установки также относительно прост:

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То же самое автодополнение командной строки (поддерживает 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

Показать результаты

Эпилог

kubecmПервоначальная цель проекта - изучить golang и ознакомиться с использованием client-go.. С углублением использования периодически добавлялось множество функций, и был разработан проект, который кажется нормальным. По большому счету, это все любительские проекты, разработанные в соответствии с их собственными предпочтениями.ISSUEобщаться и обсуждать.