[英]helm template to fetch a value from nested yaml doesnt work
crossregion:
us:
public:
us-geo: s3.us.cloud-object-storage.appdomain.cloud
Dallas: s3.dal.us.cloud-object-storage.appdomain.cloud
Washington: s3.wdc.us.cloud-object-storage.appdomain.cloud
San Jose: s3.sjc.us.cloud-object-storage.appdomain.cloud
private:
us-geo: s3.private.us.cloud-object-storage.appdomain.cloud
Dallas: s3.private.dal.us.cloud-object-storage.appdomain.cloud
Washington: s3.private.wdc.us.cloud-object-storage.appdomain.cloud
San Jose: s3.private.sjc.us.cloud-object-storage.appdomain.cloud
direct:
us-geo: s3.direct.us.cloud-object-storage.appdomain.cloud
Dallas: s3.direct.dal.us.cloud-object-storage.appdomain.cloud
Washington: s3.direct.wdc.us.cloud-object-storage.appdomain.cloud
San Jose: s3.direct.sjc.us.cloud-object-storage.appdomain.cloud
eu:
public:
eu-geo: s3.eu.cloud-object-storage.appdomain.cloud
Amsterdam: s3.ams.eu.cloud-object-storage.appdomain.cloud
Frankfurt: s3.fra.eu.cloud-object-storage.appdomain.cloud
Milan: s3.mil.eu.cloud-object-storage.appdomain.cloud
private:
eu-geo: s3.private.eu.cloud-object-storage.appdomain.cloud
Amsterdam: s3.private.ams.eu.cloud-object-storage.appdomain.cloud
Frankfurt: s3.private.fra.eu.cloud-object-storage.appdomain.cloud
Milan: s3.private.mil.eu.cloud-object-storage.appdomain.cloud
direct:
eu-geo: s3.direct.eu.cloud-object-storage.appdomain.cloud
Amsterdam: s3.direct.ams.eu.cloud-object-storage.appdomain.cloud
我需要得到的值實際上是crossregion.us.private.us-geo
對於上述值。yaml 文件,我根據條件分配EndPointType
,在這種情況下,值將是private or direct
regionSubstr 將是us
,因此附加-geo
以獲取最終字符串,如crossregion.us.private.us-geo
ibm.io/object-store-endpoint: "https://{{ index $secondaryValueFile.crossregion $regionSubstr.$EndPointType.$regionSubstr }}-geo"
盡管嘗試了許多組合,但上述模板不起作用。 我在哪里錯了
您需要在此處嵌套模板表達式。 特別是,您需要將index
調用作為字段參數傳遞給index
。
把它分解成更小的部分:
{{- $regionGeo := printf "%s-geo" $regionSubstr -}}
{{- $hostname := index $secondaryValueFile.crossregion $regionSubstr $EndpointType $regionGeo -}}
ibm.io/object-store-endpoint: "https://{{ $hostname }}"
-geo
后綴需要在模板表達式中的某處; 我使用printf
將us-geo
分配給另一個臨時變量來計算它,然后它可以在嵌套index
表達式中使用 go 和上面的各種 map 層。
內聯它也是有效的
https://{{ index $secondaryValueFile ... (printf "%s-geo" $regionSubstr) }}
雖然這可能不太可讀。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.