首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法通过稳定/elasticsearch-curator的舵表在POD内插入环境变量

无法通过稳定/elasticsearch-curator的舵表在POD内插入环境变量
EN

Stack Overflow用户
提问于 2019-11-27 18:22:44
回答 1查看 759关注 0票数 1

我正在尝试为我的自定义麋鹿堆栈制作一个舵图。我使用stable/elasticsearch-curator图表作为依赖项。

在我的values.yaml文件中,我使用一些环境变量来传递elasticsearch主机:

代码语言:javascript
复制
esClusterName: &esClusterName "elasticsearch-logs"

...

elasticsearch-curator:

  env:
    ES_CLUSTER_NAME: *esClusterName
    ELASTICSEARCH_HOST: $(ES_CLUSTER_NAME)-master

  configMaps:

    config_yml: |-
      ---
      client:
        hosts:
          - ${ELASTICSEARCH_HOST}
        port: 9200

但变量的插值不正确,如以下错误消息所示:

代码语言:javascript
复制
HTTP N/A error: HTTPConnectionPool(host='$(es_cluster_name)-master', port=9200): Max retries exceeded with ...

在我的pod中,ELASTICSEARCH_HOST = '$(es_cluster_name)-master' --我的变量名的小写字符串和"-master"--而不是"elasticsearch-logs-master"

我不能理解这件事。我对其他依赖项使用了相同的技术--环境变量插值--并且它是有效的。

我看到的唯一区别是elasticsearch-curator的helm图表传递环境变量的方式与其他图表不同:

# stable/elasticsearch-curator/templates/cronjob.yaml (文件为here)

代码语言:javascript
复制
            env:
{{- if .Values.env }}
{{- range $key,$value := .Values.env }}
              - name: {{ $key | upper | quote}}
                value: {{ $value | quote}}
{{- end }}
{{- end }}

这个模板要求值像这样在values.yaml中传递:(文件是here)

代码语言:javascript
复制
env:
  MY_ENV_VAR: value1
  MY_OTHER_VAR: value2

而所有其他模板都是这样使用的:( exemple file)

代码语言:javascript
复制
        env: {{ toYaml .Values.extraEnvs | nindent 10 }}

使用这样的values.yaml:( exemple file)

代码语言:javascript
复制
extraEnvs: 
  - name: MY_ENVIRONMENT_VAR
    value: the_value_goes_here

但我不确定这种差异是否能解释我的问题。所以我的问题是:我如何让它工作?

EN

回答 1

Stack Overflow用户

发布于 2019-11-27 21:07:27

我用ES_HOST替换了ELASTICSEARCH_HOST,如下所示:

代码语言:javascript
复制
elasticsearch-curator:

  env:
    ES_CLUSTER_NAME: *esClusterName
    ES_HOST: $(ES_CLUSTER_NAME)-master

  configMaps:

    config_yml: |-
      ---
      client:
        hosts:
          - ${ES_HOST}
        port: 9200

而且它就是起作用了!

我认为这是因为当解析values.yaml时,env:对象中的键是按字母顺序排序的:

代码语言:javascript
复制
env: {
  ELASTICSEARCH_HOST: $(ES_CLUSTER_NAME)-master
  ES_CLUSTER_NAME: "elasticsearch-logs"
}

然后,当pod尝试在ELASTICSEARCH_HOST中插入ES_CLUSTER_NAME的值时,它无法工作,因为它还不知道ES_CLUSTER_NAME的值。

这将是很好的确认(或信息)这一点。

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

https://stackoverflow.com/questions/59067941

复制
相关文章

相似问题

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