首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Kubernetes -如何定义在yaml中使用文件构建的ConfigMap?

Kubernetes -如何定义在yaml中使用文件构建的ConfigMap?
EN

Stack Overflow用户
提问于 2018-11-22 11:01:00
回答 3查看 73.3K关注 0票数 38

目前,我正在通过执行以下命令从文件config.json创建一个configmap:

代码语言:javascript
复制
kubectl create configmap jksconfig --from-file=config.json

我希望将ConfigMap创建为部署的一部分,并尝试这样做:

代码语言:javascript
复制
apiVersion: v1
kind: ConfigMap
metadata:
  name: jksconfig
data:
  config.json: |-
    {{ .Files.Get "config.json" | indent 4 }}

但似乎不起作用。为了创建相同的configmap,configmap.yaml中应该包含哪些内容?

-更新

当我做舵机安装时,试运行:

代码语言:javascript
复制
# Source: mychartv2/templates/jks-configmap.yaml
apiVersion: v1
kind: ConfigMap
metadata:
  name: jksconfig
data:
  config.json: |

注意事项:我使用迷你库作为我的kubernetes集群

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2018-11-23 13:07:29

您的config.json文件应该在您的My图表/目录中,而不是在

图表模板指南

configmap.yaml

代码语言:javascript
复制
apiVersion: v1
kind: ConfigMap
metadata:
  name: {{ .Release.Name }}-configmap
data:
  config.json: |-
{{ .Files.Get "config.json" | indent 4}}

config.json

代码语言:javascript
复制
{
    "val": "key"
}

helm install --dry-run --debug mychart

代码语言:javascript
复制
[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

代码语言:javascript
复制
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

代码语言:javascript
复制
json:
  key1: val1
  key2: val2
  key3: val3

helm install --dry-run --debug mychart

代码语言:javascript
复制
# Source: mychart/templates/configmap.yaml
apiVersion: v1
kind: ConfigMap
metadata:
  name: mangy-hare-configmap
data:
  config.json: |-
    {
      "key1": "val1"
      "key2": "val2"
      "key3": "val3"
    }
票数 56
EN

Stack Overflow用户

发布于 2018-11-22 11:56:34

下面是附加在ConfigMap上的Deployment示例

ConfigMap:

代码语言:javascript
复制
---
apiVersion: v1
kind: ConfigMap
metadata:
  name: jksconfig
data:
  config.json: |-
{{ .Files.Get "config.json" | indent 4 }}

部署:

代码语言:javascript
复制
---
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: config #The name(key) value must match pod volumes name(key) value 
              mountPath: /path/to/config.json
      volumes:
        - name: config
          configMap:
            name: jksconfig
票数 9
EN

Stack Overflow用户

发布于 2018-11-22 18:00:52

Soln 01:

  • config.json文件内容插入模板
  • 然后,将此模板应用到针对dataconfig.json
  • 然后运行$ helm install命令

最后,

代码语言:javascript
复制
{{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 }}
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53429486

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档