前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >使用Cobra框架完成pod增删改查

使用Cobra框架完成pod增删改查

作者头像
希里安
发布2023-12-13 15:07:23
1730
发布2023-12-13 15:07:23
举报
文章被收录于专栏:希里安

近日见闻

  1. Ant Design 5.12.2 在近日发布,感兴趣的可以去看看更新了那些内容,我这边还只是简单的用了其vue社区版本
  2. Atlassian Confluence Data Center/Server 模板注入漏洞

漏洞

Atlassian Confluence Data Center/Server 模板注入漏洞

漏洞类型

代码注入

发现时间

2023-12-06

影响广度

一般

CVE 编号

CVE-2023-22522

  1. 最近在研究服务网格,lstio、ingress、apisix的东西不少,感兴趣的同学可以一起交流下!

关于cobra框架

Cobra 是一个用 Go 语言编写的命令行界面 (CLI) 应用程序开发框架。它被广泛用于创建具有复杂命令结构的应用程序,例如支持嵌套命令、全局和局部标志、以及自动生成帮助和文档的应用程序。由Go团队成员spf13为hugo创建的,并被很多流行的Go项目广泛采用。比如k8s、helm、docker等等。具体清单可以查看https://github.com/spf13/cobra/blob/main/site/content/projects_using_cobra.md

Cobra 同时也是一个应用程序,可以用来生成应用程序框架、命令和相关的文件。该项目由 Steve Francia 创建,并且有很多贡献者参与。Cobra 框架和应用程序被许多著名的 Go 语言项目使用,包括 Kubernetes、Hugo 以及 Docker 的一些组件。[1]

官网:https://cobra.dev/

Cobra 的主要特点包括:

  • 简单的命令结构:Cobra提供了一个简单的结构来创建命令、子命令以及它们之间的关系。
  • 全局、局部和持久标志:你可以为命令定义全局标志(对所有命令有效)或局部标志(仅对特定命令有效),以及持久标志(对命令和它的所有子命令有效)。
  • 自动生成文档:Cobra可以自动产生和更新命令文档,这样开发者就不需要手动维护帮助文件。
  • 参数解析:Cobra提供参数解析支持,帮助开发者处理命令行输入。
  • 自定义用法:通过自定义模板,你可以对帮助命令和用法提示进行个性化设置。

前两天我分享了用python监控pod状态的实现方法,有朋友在问,使用cobra框架和直接调用k8s-api有什么区别,如果你只是想单次或者简单地实现pod状态监控的功能,而不考虑将其作为一个命令行工具对外提供,那么可能直接使用 Go 调用 Kubernetes API 就足够了。如果你计划构建一个更复杂的 CLI 应用程序,该程序可能会随着时间的推移发展和扩展,并且需要良好的用户交互和文档支持,使用 Cobra 框架将会大大简化这个过程,并提供更专业的用户体验。

使用cobra完成k8s中的增删改查

使用Cobra完成 K8s中Pod的操作,你首先需要安装Cobra并初始化一个新项目,然后编写逻辑来与 Kubernetes API 交互。

步骤 1: 安装 Cobra

安装 Cobra CLI

代码语言:javascript
复制
go get -u github.com/spf13/cobra/cobra
步骤 2: 初始化一个新的 Cobra 应用
代码语言:javascript
复制
cobra init podcli --pkg-name github.com/yourusername/podcli
cd podcli
步骤 3: 添加 Pod 命令

为增删改查的每个操作创建一个子命令

代码语言:javascript
复制
cobra add create
cobra add delete
cobra add update
cobra add get
步骤 4: 实现与 Kubernetes API 交互逻辑

前提是你已经安装了client-go客户端库

代码语言:javascript
复制
go get k8s.io/client-go@latest

然后,在每个子命令文件中,比如 create.go,需要实现创建 Pod 的逻辑。以创建 Pod 命令为例,:

代码语言:javascript
复制
package cmd

import (
 "context"
 "fmt"
 "log"

 metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
 "k8s.io/client-go/kubernetes"
 "k8s.io/client-go/rest"

 "github.com/spf13/cobra"
)

// createCmd represents the create command
var createCmd = &cobra.Command{
 Use:   "create [name]",
 Short: "Create a new pod",
 Long:  `Create a new Kubernetes pod with the specified name.`,
 Run: func(cmd *cobra.Command, args []string) {
  if len(args) != 1 {
   log.Fatal("You must specify a name for the pod.")
  }
  name := args[0]
  createPod(name)
 },
}

func createPod(name string) {
 config, err := rest.InClusterConfig()
 if err != nil {
  log.Fatalf("Failed to get Kubernetes config: %v", err)
 }
 clientset, err := kubernetes.NewForConfig(config)
 if err != nil {
  log.Fatalf("Failed to create Kubernetes clientset: %v", err)
 }

 pod := /* ...构建你的 Pod 对象... */

 result, err := clientset.CoreV1().Pods("default").Create(context.TODO(), pod, metav1.CreateOptions{})
 if err != nil {
  log.Fatalf("Failed to create pod: %v", err)
 }
 fmt.Printf("Created pod %q.\n", result.GetObjectMeta().GetName())
}

func init() {
 rootCmd.AddCommand(createCmd)
}

对于 deleteupdateget 命令,需要在各自的命令文件中实现类似的逻辑,与 Kubernetes API 进行交互,执行相应的操作。

步骤 5: 构建和运行你的命令行应用

构建应用程序:

代码语言:javascript
复制
go build -o podcli .

运行你的命令:

代码语言:javascript
复制
./podcli create my-pod
./podcli get my-pod
./podcli update my-pod --image=nginx:latest
./podcli delete my-pod

这只是一个简单的例子,在实际应用中,需要处理身份验证、配置细节、错误检查、以及与 Kubernetes 交互时的各种问题。

还有为了与 Kubernetes API 交互,需要有适当的权限和认证信息,这些信息可以在集群内部通过 ServiceAccount 获取,或者在集群外部通过 kubeconfig 文件获取。

参考资料

[1]

cobra框架被kubernetes采用: https://cobra.dev/

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

本文分享自 希里安 微信公众号,前往查看

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 近日见闻
  • 关于cobra框架
  • 使用cobra完成k8s中的增删改查
    • 步骤 1: 安装 Cobra
      • 步骤 2: 初始化一个新的 Cobra 应用
        • 步骤 3: 添加 Pod 命令
          • 步骤 4: 实现与 Kubernetes API 交互逻辑
            • 步骤 5: 构建和运行你的命令行应用
              • 参考资料
              相关产品与服务
              命令行工具
              腾讯云命令行工具 TCCLI 是管理腾讯云资源的统一工具。使用腾讯云命令行工具,您可以快速调用腾讯云 API 来管理您的腾讯云资源。此外,您还可以基于腾讯云的命令行工具来做自动化和脚本处理,以更多样的方式进行组合和重用。
              领券
              问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档