簡體   English   中英

helm 模板從嵌套的 yaml 中獲取值不起作用

[英]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后綴需要在模板表達式中的某處; 我使用printfus-geo分配給另一個臨時變量來計算它,然后它可以在嵌套index表達式中使用 go 和上面的各種 map 層。

內聯它也是有效的

https://{{ index $secondaryValueFile ... (printf "%s-geo" $regionSubstr) }}

雖然這可能不太可讀。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM