我正在寻找一种基于标签选择器安装配置的方法。
我将随着时间的推移创建新的配置图,我将用" intendeedtarget" =" MainApp"标记。 配置是从json文件创建的,文件名为key。
E.g。像这样的yml(但正在工作):
volumeMounts:
- name: appconfigs
mountPath: /appconfigs
volumes:
- name: appconfigs
configMap:
selector:
matchLabels:
intendeedtarget: MainApp
这是新的配置将自动安装在" MainApp"的运行吊舱中。随着时间的推移。
我已经把它作为运行pod中的文件安装个人配置:
containers:
- name: {{Name}}
image: {{Image}}
ports:
- containerPort: 80
volumeMounts:
- name: appconfigs
mountPath: /appconfigs
volumes:
- name: appconfigs
configMap:
name: {{ConfigName}}
这会将应用于configmap的json安装为/ appconfigs文件夹中的单独文件。
我现在的目标是使用标签" intendeedtarget"安装所有配置映射。 =" MainApp"在/ appconfigs。
有什么建议吗?
奖金问题,是否有人知道如何将配置图标记为一个命令,即在创建配置图时?
BR
答案 0 :(得分:1)
所以短版本没有,我们无法指定整个范围的volumeMounts,但有一个可以解决的问题:initContainers:
我相信它会像这样工作:
volume
类型emptyDir
,名为appconfigs
(只是为了让讨论变得简单,名称并不重要)已挂载你想要的地方。它的类型为emptyDir
,因为我们只关心在initContainer
和“main”containers
之间有一些共享磁盘空间,并且当Pod执行时该共享空间应该消失initContainer
要么包含kubectl
二进制文件,要么下载一个,或者使用众多kubernetes api客户端库中的一个,或者只使用curl
的副本在里面
ServiceAccount
令牌,它会查询您选择的ConfigMap
。绝对可以将标签标准放入initContainer
的环境变量中,或者initContainer
甚至可以使用自己的Pod的元数据进行内省,如果您愿意的话appconfigs
的挂载点containers:
将启动,但它会在共享卷装入中找到配置文件,就像您指定的那样