J'ai un fichier de valeurs HELM qui ressemble à ceci:
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"
}
}
}
}
}
}
Et un fichier de modèle correspondant qui saisit cette valeur et l'insère en tant que variable d'environnement dans un conteneur.
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 }}"
Cependant, lorsque j'exécute l'installation de la barre, j'obtiens l'erreur suivante:
Error: YAML parse error on deployment.yaml: error converting YAML to JSON: yaml: line 40: did not find expected key
Qui pointe vers la ligne:
value: "{{ .Values.service.spring_application_json }}"
Je crois que c'est un problème avec la façon dont j'essaie d'analyser une chaîne json en tant que variable d'environnement multiligne? La variable "dev" d'ENVIRONNEMENT fonctionne parfaitement et ce même YAML fonctionne également parfaitement avec docker-compose.
Il y a un exemple un peu comme celui-ci dans les documents pour spring cloud dataflow mais le format dans leur documentation a échappé les guillemets.
J'ai pu recréer l'erreur et la surmonter en modifiant l'entrée du fichier de valeurs en:
service:
spring_application_json:
{
"spring" : {
"boot" : {
"admin" : {
"client" : {
"enabled" : "false",
"url" : "http://website1",
"instance" : {
"service-base-url" : "http://website2",
"management-base-url" : "http://website3"
}
}
}
}
}
}
Et l'entrée de déploiement pour:
- name: SPRING_APPLICATION_JSON
value: {{ .Values.service.spring_application_json | toJson | quote }}
Remarquez pas de guillemets autour de cette partie car cela est géré de toute façon.