代码之家  ›  专栏  ›  技术社区  ›  Bartek

Helm值属性中的pass数组

  •  27
  • Bartek  · 技术社区  · 5 年前

    我想在Helm的yaml(values文件)中将数组作为属性传递。我尝试了什么:

    1. 尝试。

      elasticsearch:
        uri: "[\"127.0.0.1:9200\",\"127.0.0.2:9200\"]"
      

      错误:

      ReadString:预期为“或n,但找到了[,在#10字节中发现了错误 …|RCH_URL“:[”127.0.0.1|…,更大的上下文 …|{“apiVersion”:“v1”,“data”:{“ELASTIC_ARCH_URL”:[“127.0.0.1:9200”,“127.0.0.2:9200”],“LOGS_ENV_PREFI|。。。

    2. 尝试。根据 official helm site 如何传递数组

      elasticsearch:
        --set uri={127.0.0.1:9200,127.0.0.2:9200}
      

      有错误:

      将YAML转换为JSON:YAML:第15行时出错:映射值不是 在这种情况下允许

    3. 尝试。

       elasticsearch:
         uri: 
         - 127.0.0.1:9200
         - 127.0.0.2:9200
      

      失败,出现与1相同的异常。

    编辑: 实际上,在我的例子中,helm值当时没有在YAML文件中使用,所以我需要另一种格式,最后的解决方案是将uri作为带单引号的字符串传递:

     elasticsearch:
       uri: '["127.0.0.1:9200","127.0.0.2:9200"]'
    

    尽管如此,@Marcin的回答是正确的。

    2 回复  |  直到 5 年前
        1
  •  27
  •   Marcin Król    9 月前

    您可以使用以下任一流语法传递一个值数组:

    elasticsearch:
      uri: ["127.0.0.1:9200", "127.0.0.2:9200"]
    

    或块语法:

    elasticsearch:
      uri: 
      - 127.0.0.1:9200
      - 127.0.0.2:9200
    

    然后,您可以使用以下命令访问Helm模板中的值 range :

    Uris:{{- range .Values.elasticsearch.uri }}
    {{.}}{{- end }}
    

    决定:

    Uris:
    127.0.0.1:9200
    127.0.0.2:9200
    
        2
  •  26
  •   EugZol Sandeep Jain    3 年前

    Helm渲染从values.yaml到config.yaml的值:

    values.yaml :

    sites:
      - dataprovider: abcd
      - dataprovider: xyzx
    

    config.yaml :

    sites:
      {{ toYaml .Values.sites | indent 10 }}