我正在创建一个工具,它将使用 yaml 文件创建 kubernetes 对象。我是用golang写的。该工具希望实现与kubectl apply -f test.yaml
问问题
847 次
2 回答
1
基本上,最快的方法是使用像官方go client这样的现有库。
本质上,kubectl也使用了 client-go,所以你也可以按照它的源代码作为指导。
您还可以使用k8s,它是另一个 K8s go 客户端。
于 2019-07-30T21:41:58.230 回答
0
kubectl 源代码很难理解,特别是当它涉及到许多非固定对象类型来创建时,如何将 yaml 解析为 go 对象(我得到了这个工作,但需要手动切换大小写才能转换为真正的 go 类型,这是一个单一的类型)。
这是秘密创建代码,是否有一些通用的创建可以传递不同对象的列表?或者更好,只是简单的 yaml 字符串?
secretClient := client.CoreV1().Secrets("default")
result, err := secretClient.Create(secret)
func (o *ApplyOptions) GetObjects() ([]*resource.Info, error) {
var err error = nil
if !o.objectsCached {
// include the uninitialized objects by default if --prune is true
// unless explicitly set --include-uninitialized=false
r := o.Builder.
Unstructured().
Schema(o.Validator).
ContinueOnError().
NamespaceParam(o.Namespace).DefaultNamespace().
FilenameParam(o.EnforceNamespace, &o.DeleteOptions.FilenameOptions).
LabelSelectorParam(o.Selector).
Flatten().
Do()
o.objects, err = r.Infos()
o.objectsCached = true
}
return o.objects, err
}
迷路了r.Infos
,不确定它在哪里定义。
于 2020-06-08T08:05:26.017 回答