我對golang比較新,需要一些幫助指向正確的方向。無法爲Kubernetes API類型聲明聲明Kind類型
我試圖申報一個新的Deployment
類型。
我進口的樣子:
import (
"encoding/json"
"fmt"
yaml "gopkg.in/yaml.v2"
"io/ioutil"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/kubernetes/pkg/api/v1"
"k8s.io/kubernetes/pkg/apis/extensions/v1beta1"
)
當我嘗試創建一個部署對象,如:
test := v1beta1.Deployment{
Spec: v1beta1.DeploymentSpec{
Template: v1.PodTemplateSpec{
Spec: v1.PodSpec{
Containers: []v1.Container{{
Name: "test",
Image: "image_url",
},
},
},
},
},
}
它的工作原理,但返回部署對象不具有Kind
這是識別物體所必需的。
根據https://github.com/kubernetes/kubernetes/blob/master/pkg/apis/extensions/types.go#L162
有一個嵌入式metav1.TypeMeta
它具有Kind
對象,我需要的。 (參考:https://github.com/kubernetes/apimachinery/blob/master/pkg/apis/meta/v1/types.go#L38)
我試圖宣佈在結構中的文字像metav1.TypeMeta
:
test := v1beta1.Deployment{
metav1.TypeMeta: metav1.TypeMeta{Kind: "Deployment"}
Spec: v1beta1.DeploymentSpec{
Template: v1.PodTemplateSpec{
Spec: v1.PodSpec{
Containers: []v1.Container{{
Name: "test",
Image: "image_url",
},
},
},
},
},
}
但我得到一個
unknown field '"k8s.io/apimachinery/pkg/apis/meta/v1".TypeMeta' in struct literal of type v1beta1.Deployment
我懷疑這是由於metav1.TypeMeta
聲明Deployment
struct是一個未導出的字段。
我該如何聲明Kind?
我正在使用客戶端去獲取資源,並需要使用「Kind」作爲一些開關決定,但Kind在檢索到的對象中是空的。解決這個問題的最好方法是什麼? –