如何在yaml文件中使用json变量(Helm)

Gar*_*eth 5 json yaml docker kubernetes kubernetes-helm

我有一个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"
              }
            }
          }
        }
      }
    }
Run Code Online (Sandbox Code Playgroud)

以及一个相应的模板文件,它抓取此值并将其作为环境变量插入到容器中.

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 }}"
Run Code Online (Sandbox Code Playgroud)

但是,当我运行helm安装时,我收到以下错误:

Error: YAML parse error on deployment.yaml: error converting YAML to JSON: yaml: line 40: did not find expected key
Run Code Online (Sandbox Code Playgroud)

哪个指向该行:

value: "{{ .Values.service.spring_application_json }}"
Run Code Online (Sandbox Code Playgroud)

我相信我试图在json字符串中解析为多行环境变量的方式存在问题?环境'dev'变量完美地运行,同样的YAML也与docker-compose完美配合.

Rya*_*son 9

Spring云数据流的文档中有一个这样的例子,但是他们的文档中的格式有引号转义.

我能够通过将值文件条目更改为:重新创建错误并通过它:

service:
  spring_application_json:
    {
      "spring" : {
        "boot" : {
          "admin" : {
            "client" : {
              "enabled" : "false",
              "url" : "http://website1",
              "instance" : {
                "service-base-url" : "http://website2",
                "management-base-url" : "http://website3"
              }
            }
          }
        }
      }
    }
Run Code Online (Sandbox Code Playgroud)

部署条目为:

    - name: SPRING_APPLICATION_JSON
      value: {{ .Values.service.spring_application_json | toJson | quote }}
Run Code Online (Sandbox Code Playgroud)

请注意,此部分没有引号,因为无论如何都要处理.

  • 瑞恩真是太棒了 - 感谢您抽出时间提供帮助。 (3认同)