头盔:在值YAML文件中使用变量

时间:2019-10-30 14:39:23

标签: kubernetes-helm

我想知道使用模板将输入传递到 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

有更聪明的方法吗?

0 个答案:

没有答案