第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何慣用地用 Kubernetes API 對象的默認(rèn)值填充空字段?

如何慣用地用 Kubernetes API 對象的默認(rèn)值填充空字段?

Go
蕭十郎 2023-06-19 14:08:12
我想比較兩個 Kubernetes API 對象(例如v1.PodSpecs):其中一個是手動創(chuàng)建的(預(yù)期狀態(tài)),另一個是從 Kubernetes API/客戶端接收到的(實(shí)際狀態(tài))。問題是,即使這兩個對象在語義上是相等的,手動創(chuàng)建的結(jié)構(gòu)對于未指定的字段具有零值,而另一個結(jié)構(gòu)具有默認(rèn)值,因此兩者不匹配。這意味著簡單的reflect.DeepEqual()調(diào)用不足以進(jìn)行比較。例如在這之后:expected := &v1.Container{    Name:  "busybox",    Image: "busybox",}actual := getContainerSpecFromApi(...)expected.ImagePullPolicywill be "", while actual.ImagePullPolicywill be "IfNotPresent"(默認(rèn)值),所以比較失敗。是否有一種慣用的方法可以專門用 Kubernetes API 結(jié)構(gòu)中的默認(rèn)值替換零值?或者是一個構(gòu)造函數(shù),它使用在某處可用的默認(rèn)值初始化結(jié)構(gòu)?編輯:目前我正在為每個 K8s API 對象類型使用手寫相等性測試,但這對我來說似乎不可維護(hù)。我正在尋找一個簡單的(一組)函數(shù),它“知道”所有內(nèi)置 Kubernetes API 對象字段的默認(rèn)值(可能在某個地方?k8s.io/api*)。是這樣的:expected = api.ApplyContainerDefaults(expected)if !reflect.DeepEqual(expected, actual) {    reconcile(expected, actual)}
查看完整描述

1 回答

?
一只甜甜圈

TA貢獻(xiàn)1836條經(jīng)驗(yàn) 獲得超5個贊

有一些幫助程序可以填充默認(rèn)值來代替空值/零值。

例如,查看Deployment 的SetObjectDefaults_Deployment 。

看起來調(diào)用它的正確方法是通過(*runtime.Scheme).Default.?下面是展示總體思路的片段:

import (

? ? "reflect"


? ? appsv1 "k8s.io/api/apps/v1"

? ? "k8s.io/client-go/kubernetes/scheme"

)


func compare() {

? ? scheme := scheme.Scheme


? ? // fetch the existing &appsv1.Deployment via API

? ? actual := ...

? ? expected := &appsv1.Deployment{}


? ? // fill in the fields to generate your expected state

? ? // ...


? ? scheme.Default(expected)

? ? // now you should have your empty values filled in

? ? if !reflect.DeepEqual(expected.Spec, actual.Spec) {

? ? ? ? reconcile(expected, actual)

? ? }

}

如果您需要不那么嚴(yán)格的比較,例如,如果您需要容忍一些注入的容器,那么應(yīng)該像這樣使用更寬松的東西。


查看完整回答
反對 回復(fù) 2023-06-19
  • 1 回答
  • 0 關(guān)注
  • 119 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號