helm——设置为选择环境



在一些头盔模板中挣扎…

我试图通过一个单独的yaml文件与springboot参数helm,并有他们的环境拆分…然后我想通过--set env=staging

将环境传递给helm感觉我什么都试过了,但显然我缺乏基本的理解…

我的_helpers.tpl包含以下内容:

{{- define "env" }}
{{- printf "%s" .Values.env }}
{{- end }}
{{ define "configmap.metadata" }}
name: {{ .Values.name }}-config
{{ end }}
{{ define "configmap.properties" }}
{{ index .Values.environment (include "env" .) "properties" | indent 4 }}
{{ end }}

配置映射模板:

apiVersion: v1
kind: ConfigMap
metadata:
{{ include "configmap.metadata" . }}
data:
app.properties: |-
{{ include "configmap.properties" .}}

包含属性的yaml文件看起来像这样:

environment: 
staging:
properties:
spring:
datasource:
url: something
username: something
password: something
app1:
key: something
secret: something
baseUri: something
app2:
bootstrap_server: something
bootstrap_port: something
registry_schema: something
production:
properties:
spring:
etc, etc

然后我想使用set选择环境。我正在测试:

helm template test . -f values.yaml -f properties.yaml --set env=staging

我想我只是尝试了太多的事情,我只是只见树木不见森林!我看到的错误是:

Error: template: microservice/templates/configmap.yaml:7:7: executing "microservice/templates/configmap.yaml" at <include "configmap.properties" .>: error calling include: template: microservice/templates/_helpers.tpl:56:76: executing "configmap.properties" at <4>: wrong type for value; expected string; got map[string]interface {}

编辑:

调整后,我仍然得到一个错误,但我看到的东西在configmap..但我想知道错误是否由于第一行的8个空格…

data:
app.properties: |-
app2:
bootstrap_port: something
bootstrap_server: something
registry_schema: something
app1:
baseUri: something
key: something
secret: something
spring:
datasource:
password: something
url: something
username: something

我认为你的实际错误信息是围绕你使用.Values.environment.production.properties值的方式。它是一个YAML映射,但是indent函数期望它是一个字符串。如果你使用helm template --debug选项,你应该能够看到一些奇怪的缩进,也许是一个奇怪的[map spring [map datasource ...]]字符串。

当你去渲染ConfigMap时,你需要确保做两件事。由于您拥有的数据是结构化属性,因此需要使用文档较少的toYaml函数将其转换回YAML。这将从第一列开始,因此您需要对其应用indent函数,然后您需要确保调用它的标记也位于第一列(indent应该是唯一提供缩进的东西)。

data:
app.properties: |-
{{ include "configmap.properties" . | indent 4}}
{{/*- starts at column 1, but includes the `indent` function */}}
{{ define "configmap.properties" }}
{{- index .Values.environment (.Values.env) "properties" | toYaml }}
{{/*- starts at first column, includes `toYaml`, does not include `indent` */}}
{{- end }}

相关内容

  • 没有找到相关文章

最新更新