Как определить ConfigMap, созданный с использованием файла в yaml? - PullRequest
0 голосов
/ 22 ноября 2018

В настоящее время я создаю карту конфигурации из файла 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, чтобы создать тот же configmap?

--- ОБНОВЛЕНИЕ ---

когда я выполняю пробный запуск установки:

# Source: mychartv2/templates/jks-configmap.yaml
apiVersion: v1
kind: ConfigMap
metadata:
  name: jksconfig
data:
  config.json: |

Примечание : я использую мини-куб какмой кластер kubernetes

Ответы [ 3 ]

0 голосов
/ 22 ноября 2018

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 }}
0 голосов
/ 23 ноября 2018

Ваш 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"                                 
    }     

РЕДАКТИРОВАТЬ:

Но я хочу, чтобы значения в файле config.json были взяты из values.yaml.Это возможно?

configmap.yaml

apiVersion: v1
kind: ConfigMap
metadata:
  name: {{ .Release.Name }}-configmap
data:
  config.json: |-
    {
{{- range $key, $val := .Values.json }}
{{ $key | quote | indent 6}}: {{ $val | quote }}
{{- end}}
    }

values.yaml

json:
  key1: val1
  key2: val2
  key3: val3

helm install --dry-run --debug mychart

# Source: mychart/templates/configmap.yaml
apiVersion: v1
kind: ConfigMap
metadata:
  name: mangy-hare-configmap
data:
  config.json: |-
    {
      "key1": "val1"
      "key2": "val2"
      "key3": "val3"
    }
0 голосов
/ 22 ноября 2018

Вот пример 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
...