将 Kubernetes YAML 文件反序列化为 Go 结构
将 Kubernetes YAML 文件反序列化为 Go 结构允许您以编程方式使用 Kubernetes 清单。但是,遇到诸如“没有为版本“apps/v1beta1”注册任何类型的“部署””之类的错误可能会令人沮丧。
要解决此问题,您需要导入适当的架构包以确保反序列化器已访问特定 Kubernetes 对象的类型信息。在这种情况下,对于使用“apps/v1beta1”版本的部署,您需要导入“_ k8s.io/client-go/pkg/apis/extensions/install”。
<code class="go">import _ "k8s.io/client-go/pkg/apis/extensions/install"</code>
一旦架构导入后,反序列化器将能够识别“部署”类型和版本,并正确反序列化 YAML 文件。更正后的代码:
<code class="go">package main import ( "fmt" "k8s.io/client-go/pkg/api" _ "k8s.io/client-go/pkg/api/install" _ "k8s.io/client-go/pkg/apis/extensions/install" ) var service = ` apiVersion: apps/v1beta1 kind: Deployment metadata: name: my-nginx spec: replicas: 2 template: metadata: labels: run: my-nginx spec: containers: - name: my-nginx image: nginx ports: - containerPort: 80 ` func main() { decode := api.Codecs.UniversalDeserializer().Decode obj, _, err := decode([]byte(service), nil, nil) if err != nil { panic(err) } fmt.Printf("%#v\n", obj) }</code>
此解决方案也适用于其他资源类型。例如,如果服务遇到类似错误,您可以导入“_ k8s.io/client-go/pkg/apis/core/install”。
导入适当的架构包对于成功反序列化至关重要Kubernetes YAML 文件。通过这样做,您可以确保您有权访问将 YAML 清单转换为 Go 结构所需的类型信息。
以上是在 Go 中反序列化 Kubernetes YAML 文件时如何解决'no kind \'Deployment\' is Registered for version \'apps/v1beta1\'\”错误?的详细内容。更多信息请关注PHP中文网其他相关文章!