首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >用于从嵌套yaml中获取值的helm模板不起作用

用于从嵌套yaml中获取值的helm模板不起作用
EN

Stack Overflow用户
提问于 2021-04-27 01:06:26
回答 1查看 29关注 0票数 0
代码语言:javascript
运行
复制
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

对于上面的values.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"

尽管尝试了许多组合,上面的模板仍然不起作用。我到底哪里错了?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-04-27 10:16:30

你需要在这里嵌套模板表达式。特别是,您需要将index调用作为字段参数传递给index

将其分解为更小的部分:

代码语言:javascript
运行
复制
{{- $regionGeo := printf "%s-geo" $regionSubstr -}}
{{- $hostname := index $secondaryValueFile.crossregion $regionSubstr $EndpointType $regionGeo -}}
ibm.io/object-store-endpoint: "https://{{ $hostname }}"

-geo后缀需要在模板表达式中的某个位置;我使用printfus-geo赋给另一个临时变量来计算它,然后它就可以进入嵌套的index表达式,在它上面有各种地图图层。

内联它也是有效的

代码语言:javascript
运行
复制
https://{{ index $secondaryValueFile ... (printf "%s-geo" $regionSubstr) }}

尽管这可能不太可读性。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67270898

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档