我試圖RAW從運營商 CR 獲取數據,但我得到一個空對象。(所有其他值都按預期工作)我已經為這個問題創建了一個最小的例子,在我試圖讀取infrastructureConfig對象的例子中這里棘手的部分是我的結構引用了另一個具有屬性類型 rawdata 的結構https://github.com/JennyMet/gardner_test這里是簡單的 CRhttps://github.com/JennyMet/gardner_test/blob/main/config/samples/mygroup_v1alpha1_rawtest.yaml#L11在這里我想讀取數據并得到一個空對象,知道嗎?https://github.com/JennyMet/gardner_test/blob/main/controllers/rawtest_controller.go#L70這是我使用的類型的參考 https://github.com/gardener/gardener/blob/5522be0e17ccf38aae36efb9fdb6463c66d6e4f1/pkg/apis/core/v1beta1/types_shoot.go#L1184我認為它與領域有關x-kubernetes-preserve-unknown-fields: true https://book.kubebuilder.io/reference/markers/crd-processing.html 不存在我如何將它添加到此處的架構中?https://github.com/JennyMet/gardner_test/blob/main/api/v1alpha1/rawtest_types.go#L32在它使用的引擎蓋下https://github.com/gardener/gardener/blob/5522be0e17ccf38aae36efb9fdb6463c66d6e4f1/pkg/apis/core/v1beta1/types_shoot.go#L1184我的意思是我試過了,但它不起作用,因為InfrastructureConfigRAW 在type System struct { Type system `json:"type,omitempty"` // +kubebuilder:pruning:PreserveUnknownFields Provider v1beta1.Provider `json:"provider,omitempty"`}但是 rawDataProvider不是我的結構,我只是在使用它。是這樣的,看 InfrastructureConfig類型...type Provider struct { Type string `json:"type" protobuf:"bytes,1,opt,name=type"` ControlPlaneConfig *runtime.RawExtension `json:"controlPlaneConfig,omitempty" protobuf:"bytes,2,opt,name=controlPlaneConfig"` InfrastructureConfig *runtime.RawExtension `json:"infrastructureConfig,omitempty" protobuf:"bytes,3,opt,name=infrastructureConfig"`}
1 回答

繁花不似錦
TA貢獻1851條經驗 獲得超4個贊
目前,您只能將 放在// +kubebuilder:pruning:PreserveUnknownFields
上Provider v1beta1.Provider
,這意味著其中的所有子字段都將允許有額外的未知字段。
好消息是,在https://github.com/kubernetes-sigs/controller-tools/pull/683合并后,你的問題將得到解決。之后,您不必使用// +kubebuilder:pruning:PreserveUnknownFields
控制器工具,它會自動x-kubernetes-preserve-unknown-fields: true
為所有RawExtension
字段添加。
- 1 回答
- 0 關注
- 87 瀏覽
添加回答
舉報
0/150
提交
取消