我想知道使用模板将输入传递到 values.yaml 文件中的最佳方法是什么。
我定义了一个父图表(在此示例中称为 myapp ),该图表具有以下依赖性:
myapp / requirements.yaml
dependencies:
- name: internaldep
condition: internaldep.enabled
repository: file://../internaldep
version: 0.1.0
- name: kafka
condition: kafka.enabled
repository: https://charts.bitnami.com
version: 6.1.6
就我而言, internaldep 图表(可旋转我公司使用的内部应用程序)和 kafka 图表(由Bitnami here维护) )对Zookeeper有依赖性。
因此,两者图表本身通过在各自图表中具有依赖关系来提升Zookeeper,例如:
kafka / requirements.yaml 和 internaldep / requirements.yaml
dependencies:
- name: zookeeper
version: 5.1.X
repository: https://charts.bitnami.com
condition: zookeeper.enabled
为了避免拆分两个Zookeeper安装,我选择仅启动一个Zookeeper,并为两个应用程序使用该实例,例如:
myapp / requirements.yaml
dependencies:
- name: internaldep
condition: internaldep.enabled
repository: file://../internaldep
version: 0.1.0
- name: kafka
condition: kafka.enabled
repository: https://charts.bitnami.com
version: 6.1.6
+ - name: zookeeper
+ version: 5.1.X
+ repository: https://charts.bitnami.com
+ condition: zookeeper.enabled
我遇到了一个问题。 kafka 图表根据以下代码块确定要使用的Zookeeper服务器:
- name: KAFKA_CFG_ZOOKEEPER_CONNECT
{{- if .Values.zookeeper.enabled }}
value: {{ template "kafka.zookeeper.fullname" . }}
{{- else }}
value: {{ .Values.externalZookeeper.servers | quote }}
{{- end }}
由于我将.Values.zookeeper.enabled
设置为false
(因为我只想对两个应用程序都使用一个 Zookeeper安装),所以这意味着我必须输入可以通过.Values.externalZookeeper.servers
找到Zookeeper的DNS名称。
但是,当我尝试在 values.yaml 文件中执行此操作时:
kafka:
externalZookeeper:
servers: {{ .Release.Name }}-kafka-headless
我收到错误:
error converting YAML to JSON: yaml: line 82: did not find expected key
有更聪明的方法吗?