无法通过头盔图在POD内插值稳定/弹性搜索策展人

问题描述 投票:0回答:1

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

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

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

但是该变量未正确插入,如此错误消息所示:

HTTP N/A error: HTTPConnectionPool(host='$(es_cluster_name)-master', port=9200): Max retries exceeded with ...

在我的窗格中,ELASTICSEARCH_HOST = '$(es_cluster_name)-master'-LOWERCASE和“ -master”中我的变量名称的字符串,而不是"elasticsearch-logs-master"

我无法绕着这个头。我对其他依赖项使用了相同的技术-env变量插值-并且它有效。

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

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

            env:
{{- if .Values.env }}
{{- range $key,$value := .Values.env }}
              - name: {{ $key | upper | quote}}
                value: {{ $value | quote}}
{{- end }}
{{- end }}

并且此模板希望将值传递到values.yaml中,如下所示:(文件为here

env:
  MY_ENV_VAR: value1
  MY_OTHER_VAR: value2

而所有其他模板都使用这种方式:(exemple file

        env: {{ toYaml .Values.extraEnvs | nindent 10 }}

具有一个values.yaml,如下所示:(exemple file

extraEnvs: 
  - name: MY_ENVIRONMENT_VAR
    value: the_value_goes_here

但是我不确定这种差异是否可以解释我的问题。所以我的问题是:如何使它起作用?

environment-variables kubernetes-helm elasticsearch-curator
1个回答
0
投票

我像这样用ELASTICSEARCH_HOST替换了ES_HOST

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:对象的键是按字母顺序排序的:

env: {
  ELASTICSEARCH_HOST: $(ES_CLUSTER_NAME)-master
  ES_CLUSTER_NAME: "elasticsearch-logs"
}

然后,当Pod尝试在ES_CLUSTER_NAME中内插ELASTICSEARCH_HOST的值时,由于尚不知道ES_CLUSTER_NAME的值,因此它不起作用。

对此进行确认(或确认)会很好。

© www.soinside.com 2019 - 2024. All rights reserved.