我正在尝试为我的自定义麋鹿堆栈制作掌舵图。我使用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 ...
在我的 pod 中,ELASTICSEARCH_HOST = --a '$(es_cluster_name)-master'
string of my variable in LOWERCASE and "-master"-- 而不是"elasticsearch-logs-master"
.
我不能把头绕在这上面。我对其他依赖项使用了相同的技术——环境变量插值——并且它有效。
我看到的唯一区别是 elasticsearch-curator 的掌舵图传递环境变量的方式与其他图表不同:
# stable/elasticsearch-curator/templates/cronjob.yaml
(文件在这里)
env:
{{- if .Values.env }}
{{- range $key,$value := .Values.env }}
- name: {{ $key | upper | quote}}
value: {{ $value | quote}}
{{- end }}
{{- end }}
这个模板期望值像这样在 values.yaml 中传递:(文件在这里)
env:
MY_ENV_VAR: value1
MY_OTHER_VAR: value2
而所有其他模板都使用这种方式:(示例文件)
env: {{ toYaml .Values.extraEnvs | nindent 10 }}
使用 values.yaml 像这样:(示例文件)
extraEnvs:
- name: MY_ENVIRONMENT_VAR
value: the_value_goes_here
但我不确定这种差异是否能解释我的问题。所以我的问题是:我如何使它工作?