我想将我的~/.kube/config文件解组为一个go结构。
我正在使用以下方法
func ListContexts(pathToKubeConfig string) ([]string, error) {
type Contexts struct {
Ctx []string `yaml:"contexts"`
//ApiVersion string `yaml:"apiVersion"`
}
var ctx []string
var c Contexts
file, err := ioutil.ReadFile(pathToKubeConfig)
if err != nil {
return nil, err
}
err = yaml.Unmarshal(file, &c)
fmt.Printf("%#v\n", c.Ctx)
return ctx, nil
}
}
众所周知,kubeconfig 文件具有以下结构:
apiVersion: v1
. . .
contexts:
- context:
cluster: cluster1
user: user1
name: context1
- context:
cluster: cluster2
user: user2
name: context2
我的方法是打印:
[]string(nil)
既然context是 yaml 数组,为什么我映射到字符串数组时不起作用?
当我取消注释ApiVersion我的结构字段并尝试打印它时,它可以工作。
慕无忌1623718
相关分类