Kubernetes -嵌套变量的配置Map

mrfwxfqh  于 2023-01-20  发布在  Kubernetes
关注(0)|答案(2)|浏览(203)

我们在AKS集群中部署了一个映像,需要在部署期间使用configmap更新该映像的配置条目。
配置文件具有以下键,我们正在尝试替换“ChildKey”的值而不替换整个文件-

{
  "ParentKey": {
    "ChildKey": "123"
  }
}

配置Map如下所示-

apiVersion: v1
data:
  ParentKey: |
    ChildKey: 456
kind: ConfigMap
name: cf

在部署中,configmap的用法如下-

apiVersion: extensions/v1beta1
kind: Deployment
spec:
  template:
    metadata:
      creationTimestamp: null
      labels:
        app: abc
    spec:
      containers:
      - env:
        - name: ParentKey
          valueFrom:
            configMapKeyRef:
              key: ParentKey
              name: cf

替换不适用于上面的设置。是否有其他方法来声明嵌套结构的键名?

nhhxz33t

nhhxz33t1#

我们以下列方式处理这个问题:
configmap具有更简单的结构-只有子元素-

apiVersion: v1
data:
  ChildKey: 456
kind: ConfigMap
name: cf

在部署中,环境变量key引用子键,如下所示-

apiVersion: extensions/v1beta1
kind: Deployment
spec:
  template:
    metadata:
      creationTimestamp: null
      labels:
        app: abc
    spec:
      containers:
      - env:
        - name: ParentKey__ChildKey
          valueFrom:
            configMapKeyRef:
              key: ChildKey
              name: cf

把这个贴出来做参考。

bz4sfanl

bz4sfanl2#

对嵌套的环境变量和数组使用双下划线,如下所述
要避免显式环境变量和键入两次名称,可以使用envFrom
configMap.yaml

apiVersion: v1
data:
  ParentKey__ChildKey: 456
kind: ConfigMap
name: cf

deployment.yml

containers:
       - name: $(name)
         image: $(image)
         envFrom:
         - configMapRef:
            name: common-config 
         - configMapRef:
            name: specific-config

相关问题