我正在尝试为自定义的麋鹿堆栈制作一张舵图。我使用stable/elasticsearch-curator图表作为依赖项。
在我的values.yaml文件中,我使用了一些env变量来传递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
但是我不确定这种差异是否可以解释我的问题。所以我的问题是:如何使它起作用?
答案 0 :(得分: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"
}
然后,当广告连播尝试在ES_CLUSTER_NAME
内插ELASTICSEARCH_HOST
的值时,由于尚不知道ES_CLUSTER_NAME
的值,因此它不起作用。
最好对此进行确认(或确认)。