从YAML对象

时间:2017-12-12 08:43:36

标签: go kubernetes kubernetes-go-client

我有一个像这样定义的kubernetes对象列表:

apiVersion: v1
items:
kind: List
- .....

我想用client-go之类的东西解析它并收集一些信息。

所以我搜索并发现了一些像这样的代码:

decode := api.Codecs.UniversalDeserializer().Decode
obj, _, err := decode([]byte(f), nil, nil)

lst, err := meta.ExtractList(obj)
for _, o := range lst {
    doSomeThing(o)
}

所以obj及其每个元素都是runtime.Object种。但我似乎无法找到将其转换为具体的kubernetes对象的方法,如v1.Pod。我怎么能这样做?

1 个答案:

答案 0 :(得分:1)

To convert runtime objects to Kubernetes objects, you can do something like:

switch typed := obj.(type) {
  case *apiv1.Pod:
    log.Info(typed.Name) // type is Pod
  case *apiv1.Namespace:
  // typed is Namespace
}