登录
首页 >  Golang >  Go问答

k8s.io 包的Kubectl Apply命令示例

来源:stackoverflow

时间:2024-03-06 15:39:26 261浏览 收藏

一分耕耘,一分收获!既然打开了这篇文章《k8s.io 包的Kubectl Apply命令示例》,就坚持看下去吧!文中内容包含等等知识点...希望你能在阅读本文后,能真真实实学到知识或者帮你解决心中的疑惑,也欢迎大佬或者新人朋友们多留言评论,多给建议!谢谢!

问题内容

我需要向我的应用程序添加 kubectl apply 功能。

我查看了 kubectl go-client,它没有对 apply 命令的规定。

  1. 我可以在我的 go 应用程序中创建 kubectl 的实例吗?
  2. 如果不是 1,我可以使用 k8s.io/kubernetes 软件包来模拟 kubectl apply 命令吗?

如有需要,我们将提出问题和说明。


解决方案


您可以将 kubectl 命令包装在应用程序中,并在新的子进程中启动它,就像通过 shell 脚本执行的操作一样。更多信息请参见go中的exec包:https://golang.org/pkg/os/exec/

这对我们来说非常有用,kubectl 通常具有 -o 参数,可让您控制输出格式,以便您获得机器可读的文本。

已经有一些开源项目使用这种方法:

您在 kubectl 源代码中搜索时找到 https://github.com/kubernetes/kubernetes/blob/master/pkg/kubectl/cmd/apply/apply.go 了吗? 看一下运行函数:

func (o *ApplyOptions) Run() error {
    ...
    r := o.Builder.
        Unstructured().
        Schema(o.Validator).
        ContinueOnError().
        NamespaceParam(o.Namespace).DefaultNamespace().
        FilenameParam(o.EnforceNamespace, &o.DeleteOptions.FilenameOptions).
        LabelSelectorParam(o.Selector).
        IncludeUninitialized(o.ShouldIncludeUninitialized).
        Flatten().
        Do()
    ...
    err = r.Visit(func(info *resource.Info, err error) error {
    ...

它的可读性不是很好,但这就是 kubectl apply 所做的。 也许一种可能的方法是调试代码并查看它的作用。

今天关于《k8s.io 包的Kubectl Apply命令示例》的内容就介绍到这里了,是不是学起来一目了然!想要了解更多关于的内容请关注golang学习网公众号!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>