Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/kubernetes/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Go 为什么解码返回结果为空_Go_Kubernetes - Fatal编程技术网

Go 为什么解码返回结果为空

Go 为什么解码返回结果为空,go,kubernetes,Go,Kubernetes,我有下面的代码,我想将yaml转换为客户机go数据结构,并从中获取对象名 package main import ( "fmt" "k8s.io/api/extensions/v1beta1" "k8s.io/client-go/kubernetes/scheme" ) var yml = ` apiVersion: extensions/v1beta1 kind: Deployment metadata: name: testnginx replicas: 1 spec:

我有下面的代码,我想将yaml转换为客户机go数据结构,并从中获取对象名

package main

import (
  "fmt"

  "k8s.io/api/extensions/v1beta1"
  "k8s.io/client-go/kubernetes/scheme"
)

var yml = `
apiVersion: extensions/v1beta1
kind: Deployment
metadata: 
name: testnginx
replicas: 1
spec: 
template:
  metadata:
    labels:
      run: testnginx
  spec:
    containers:
    - image: nginx
      name: testnginx
      ports:
      - containerPort: 8080
`

func main() {
    decode := scheme.Codecs.UniversalDeserializer().Decode

    obj, _, err := decode([]byte(yml), nil, nil)
    if err != nil {
        fmt.Printf("%#v", err)
    }

  //fmt.Printf("%#v\n", obj)
  deployment := obj.(*v1beta1.Deployment)

    fmt.Printf("%#v\n", deployment.ObjectMeta.Name)
}
返回结果假定为testnginx,但为空

$ ./decode-k8s-exercise 
""

不知道为什么。谢谢

问题出在yaml中。名称字段应该是元数据中的一个属性,但它们当前处于同一级别。如果将名称用空格缩进,则其工作原理应与稍后应用于模板的相同。relicas也应符合规范:


问题出在yaml中。名称字段应该是元数据中的一个属性,但它们当前处于同一级别。如果将名称用空格缩进,则其工作原理应与稍后应用于模板的相同。relicas也应符合规范:

var yml = `
apiVersion: extensions/v1beta1
kind: Deployment
metadata: 
  name: testnginx
spec:
  replicas: 1
  template:
    metadata:
      labels:
        run: testnginx
    spec:
      containers:
      - image: nginx
        name: testnginx
        ports:
        - containerPort: 8080
`