千家信息网

Kubernetes的CLI是使用哪些技术实现的

发表于:2026-11-03 作者:千家信息网编辑
千家信息网最后更新 2026年11月03日,这篇文章主要介绍了Kubernetes的CLI是使用哪些技术实现的,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。cobra介绍Cobr
千家信息网最后更新 2026年11月03日Kubernetes的CLI是使用哪些技术实现的

这篇文章主要介绍了Kubernetes的CLI是使用哪些技术实现的,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。

cobra介绍

Cobra是一个用于创建强大的现代CLI应用程序的库,也是一个用于生成应用程序和命令文件的程序。

Cobra用于许多Go项目,如Kubernetes、Hugo和Github CLI等。此列表包含了使用Cobra的更广泛的项目列表。

概述

Cobra是一个库,提供了一个简单的界面来创建功能强大的现代CLI界面,类似于git&go工具。

Cobra还是一个应用程序,它将生成您的应用程序框架以快速开发基于Cobra的应用程序。

眼镜蛇提供:

  • 简单易用的基于子的CLI:app server,app fetch等。

  • 完全兼容POSIX的标志(包括短版和长版)

  • 嵌套子命令

  • 全局,局部和级联标志

  • 易产生的应用程序和命令与cobra init appname&cobra add cmdname

  • 明智的建议(app srver……是您的意思app server吗?)

  • 自动生成命令和标志的帮助

  • 自动帮助标志识别-h,--help等等。

  • 为您的应用程序自动生成的外壳自动完成功能(bash,zsh,fish,powershell)

  • 自动为您的应用程序生成手册页

  • 命令别名,以便您可以更改内容而不会破坏它们

  • 定义自己的帮助,用法等的灵活性。

  • 可选与viper紧密集成,可用于12因子应用程序

概念

Cobra建立在命令,参数和标志的结构上。

命令代表动作,Args是事物,Flags是这些动作的修饰符。

最好的应用程序在使用时读起来就像句子,结果,用户直观地知道如何与之交互。

遵循的模式是 APPNAME VERB NOUN --ADJECTIVE. 或 APPNAME COMMAND ARG --FLAG

一些真实的例子可以更好地说明这一点。

在以下示例中,"服务器"是命令,"端口"是标志:

hugo server --port=1313

在此命令中,我们告诉Git克隆url的内容。

git clone URL --bare

安装

使用眼镜蛇很容易。首先,使用go get来安装该库的最新版本。此命令将安装cobra生成器可执行文件以及库及其依赖项:

go get -u github.com/spf13/cobra

Next, include Cobra in your application:

import "github.com/spf13/cobra"

入门

欢迎您提供自己的组织,但是通常基于Cobra的应用程序将遵循以下组织结构:

▾ appName/   ▾ cmd/       add.go       your.go       commands.go       here.go     main.go

在Cobra应用程序中,通常main.go文件非常裸露。它有一个目的:初始化眼镜蛇

package main  import (   "{pathToYourApp}/cmd" )  func main() {   cmd.Execute() }

Cobra使用

目录结构

image-20210218100009073

基命令

创建root.go文件,定义一个基命令

package cmd  import (  "github.com/spf13/cobra" )  var RootCmd = &cobra.Command{  Use: "gonne",  Run: func(cmd *cobra.Command, args []string) {   if len(args) == 0 {    cmd.Help()    return   }  }, }

在main函数中使用命令,就是这么简单

main.go文件

package main  import (  "demo-practice/cobra/cmd"  "fmt"  "os" )  func main() {  if err := cmd.RootCmd.Execute(); err != nil {   fmt.Println(err)   os.Exit(1)  } }

在windows环境下编译

go build -o gonne.exe

执行命令查看效果,输出内容如下所示

gonne.exe

  • Usage: gonne [flags] gonne [command]

  • Available Commands: help Help about any command version Print the version number of Gonne

  • Flags: -h, --help help for gonne

  • Use "gonne [command] --help" for more information about a command.

子命令

在基命令上增加子命令也相当简单,根本无需在基命令和main方法中写任何代码,只需新建一个go文件,多个子命令间也是相互独立的,多么优雅的代码,告别各种case

增加一个版本命令用法:

在cmd目录下增加一个version.go文件,内容如下

package cmd  import "github.com/spf13/cobra"  func init() {  RootCmd.AddCommand(versionCmd) }  var versionCmd = &cobra.Command{  Use:   "version",  Short: "Print the version number of Gonne",  Run: func(cmd *cobra.Command, args []string) {   println("gonne version is 0.0.1")  }, }

init()函数将此命令添加到基命令下

编译后执行 gonne version

gonne version is 0.0.1

感谢你能够认真阅读完这篇文章,希望小编分享的"Kubernetes的CLI是使用哪些技术实现的"这篇文章对大家有帮助,同时也希望大家多多支持,关注行业资讯频道,更多相关知识等着你来学习!

命令 程序 应用程序 应用 文件 标志 生成 基命 内容 篇文章 帮助 眼镜 眼镜蛇 结构 技术 强大 下编 代码 函数 功能 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 华服互联网科技靠谱吗 科技互联网产品 中国互联网科技股 猪兼强互联网科技 卓越科技(互联网 ) 兼蜜互联网科技 互联网科技公司有哪些 亿人帮互联网科技 互联网科技英文翻译 四个字互联网科技公司取名 互联网科技创新企业排名 北京市互联网新科技 广州百诚互联网科技有限公司官网 济南小医互联网科技有限公司招聘 普陀区互联网教育科技管理办法 中国新注册互联网科技 万物互联网智能科技 上海万顺科技互联网有限公司招聘 北京互联网科技类企业分布 数字科技和互联网金融哪个好 广州大一互联网络科技有限公司 互联网金融科技创新 苏州大垚互联网科技 郑州华宇互联网科技 互联网金融和金融科技 青岛科技大学互联网大赛研究生 民营互联网公司国防科技 互联网科技的全部知识 工业互联网山东科技大学 东风日产互联网科技公司叫什么
0