我有一个HELM值文件,如下所示:
service: environment: dev spring_application_json: >- { "spring" : { "boot" : { "admin" : { "client" : { "enabled" : "false", "url" : "http://website1", "instance" : { "service-base-url" : "http://website2", "management-base-url" : "http://website3" } } } } } }
还有一个相应的模板文件,它将获取此值并将其作为环境变量插入到容器中。
spec: replicas: {{ .Values.replicaCount }} template: spec: imagePullSecrets: - name: {{ .Values.image.pullSecret }} containers: - name: {{ .Chart.Name }} image: "{{ .Values.image.repository }}:{{ .Values.image.tag }}" imagePullPolicy: {{ .Values.image.pullPolicy }} env: - name: ENVIRONMENT value: "{{ .Values.service.environment }}" - name: SPRING_APPLICATION_JSON value: "{{ .Values.service.spring_application_json }}"
但是,当我运行头盔安装时,出现以下错误:
Error: YAML parse error on deployment.yaml: error converting YAML to JSON: yaml: line 40: did not find expected key
指向该行:
value: "{{ .Values.service.spring_application_json }}"
我相信我尝试将json字符串解析为多行环境变量的方式存在问题吗?ENVIRONMENT’dev’变量可以完美工作,而同一个YAML也可以与docker- compose完美工作。
spring云数据流的文档中有一个类似于此示例的示例,但是其文档中的格式已将引号转义。
通过将values文件条目更改为以下内容,我能够重新创建错误并克服错误:
service: spring_application_json: { "spring" : { "boot" : { "admin" : { "client" : { "enabled" : "false", "url" : "http://website1", "instance" : { "service-base-url" : "http://website2", "management-base-url" : "http://website3" } } } } } }
并将部署条目添加到:
- name: SPRING_APPLICATION_JSON value: {{ .Values.service.spring_application_json | toJson | quote }}
请注意,此部分周围没有引号,因为无论如何都会处理该引号。