Как определить ConfigMap, созданный с помощью файла в yaml?
В настоящее время я создаю карту конфигурации из файла config.json, выполнив:
kubectl create configmap jksconfig --from-file=config.json
Я хотел бы, чтобы ConfigMap был создан как часть развертывания и попытался сделать это:
apiVersion: v1
kind: ConfigMap
metadata:
name: jksconfig
data:
config.json: |-
{{ .Files.Get "config.json" | indent 4 }}
Но, похоже, не работает. Что должно быть в файле configmap.yaml, чтобы создать тот же файл конфигурации?
---ОБНОВИТЬ---
когда я делаю руль, устанавливаю пробный запуск:
# Source: mychartv2/templates/jks-configmap.yaml
apiVersion: v1
kind: ConfigMap
metadata:
name: jksconfig
data:
config.json: |
Примечание: я использую миникуб в качестве кластера kubernetes
3 ответа
Ваш config.json
файл должен находиться внутри вашего каталога mychart/, а не внутри mychart/templates
Руководство по шаблону диаграммы
configmap.yaml
apiVersion: v1
kind: ConfigMap
metadata:
name: {{ .Release.Name }}-configmap
data:
config.json: |-
{{ .Files.Get "config.json" | indent 4}}
config.json
{
"val": "key"
}
helm install --dry-run --debug mychart
[debug] Created tunnel using local port: '52091'
[debug] SERVER: "127.0.0.1:52091"
...
NAME: dining-saola
REVISION: 1
RELEASED: Fri Nov 23 15:06:17 2018
CHART: mychart-0.1.0
USER-SUPPLIED VALUES:
{}
...
---
# Source: mychart/templates/configmap.yaml
apiVersion: v1
kind: ConfigMap
metadata:
name: dining-saola-configmap
data:
config.json: |-
{
"val": "key"
}
Вот пример ConfigMap
который прикреплен к Deployment
:
ConfigMap:
---
apiVersion: v1
kind: ConfigMap
metadata:
name: jksconfig
data:
config.json: |-
{{ .Files.Get "config.json" | indent 4 }}
Развертывание:
---
apiVersion: apps/v1beta2
kind: Deployment
metadata:
name: jksapp
labels:
app: jksapp
spec:
selector:
matchLabels:
app: jksapp
template:
metadata:
labels:
app: jksapp
containers:
- name: jksapp
image: jksapp:1.0.0
ports:
- containerPort: 8080
volumeMounts:
- name: jksconfig
mountPath: /path/to/config.json
volumes:
- name: config
configMap:
name: jksconfig
Soln 01:
- вставьте свой
config.json
содержимое файла в шаблон - затем используйте этот шаблон в свой
data
противconfig.json
- затем беги
$ helm install
команда
в конце концов,
{{define "config"}}
{
"a": "A",
"b": {
"b1": 1
}
}
{{end}}
apiVersion: v1
kind: ConfigMap
metadata:
name: jksconfig
labels:
chart: "{{ .Chart.Name }}-{{ .Chart.Version }}"
app: "my-app"
heritage: "{{ .Release.Service }}"
release: "{{ .Release.Name }}"
data:
config.json: {{ (include "config" .) | trim | quote }}