kubernetes自动生成ConfigMap中的坑怎么解决
本篇内容主要讲解“kubernetes自动生成ConfigMap中的坑怎么解决”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“kubernetes自动生成ConfigMap中的坑怎么解决”吧!
创新互联主营威海网站建设的网络公司,主营网站建设方案,手机APP定制开发,威海h5小程序定制开发搭建,威海网站营销推广欢迎威海等地区企业咨询
背景问题
最近在使用Kubernetes ConfigMap
过程中,由于需要把配置文件复制ConfigMap yaml
编排文件中,在copy
的过程中,容易出错,于是引入了Kustomize ConfigMapGenerate
,通过引用外部配置文件,自动生成配置,但在使用过程中碰到新问题。
ConfigMap
名称生成多余hash
。加载到配置文件中内容格式错乱。
以下分别对这两个个问题进行分析、并给出具体解决方式。
ConfigMapGenerate使用
ConfigMapGenerator
是Kustomize ConfigMap
自动生成配置插件,使用方式非常简单,如下图所示:
执行kubectl apply -k .
执行完成之后查看ConfigMap
, ConfigMap
倒是生成了,但是后边多了一堆hash
字符串如:test-conf-tmc5f824gt。
。
why?
deployment
里面还需要引用这个ConfigMap
呢?通过测试发现这个hash
后缀,是针对文件内容生成的hash
,如果文件内容没有变化,这个hash
不会变化,否则重新生成。
原来这个hash
类似于ConfigMap
版本的一个概念,但是我在使用过程中对配置文件的版本没有什么要求。
解决方案
通过查看文档可以发现https://github.com/kubernetes-sigs/kustomize/blob/master/examples/generatorOptions.md
,只需要添加参数即可控制版本号变化:
一顿操作之后,就可以通过一个引用把配置自动ConfigMap
资源对象,我们只需要修改我们原来的配置文件,然后重新生成即可完成ConfigMap
的更新,而且不会出现多余字符串,当然如果你使用了helm
等模板工具,可以考虑使用这个版本号,这样的话ConfigMap
也有了版本的概念。
ConfigMap中文本错乱
当我通过kubectl
获取ConfigMap
配置信息之后,日志xml
文本中出现了大量的\n\t
,虽然不影响使用,但是看起来糟心,而且当我们需要临时修改配置的时候,看起来眼花缭乱,影响工作效率。(当然普通的properties
配置文件也可能会出现这种问题,但是KV
对配置文件很少使用tab
缩进功能)
why?
通过idea
编辑器打开隐藏字符(或者通过vim set list
功能,也可以显示隐藏字符),会发现xml
文件中存在tab
缩进字符,而对于Kubernetes yaml
编排文件不允许使用tab
只能使用空格,如下图所示。
原因分析
猜测原因是因为Kubernetes ConfigMap
在load
过程中发现文件中包含tab
,直接转化为\n\t
。如果把文本里面的tab全部替换空格,会不会直接解决问题呢?按照这个思路,我得到了如下两种解决方式。
解决方案(1)
通过编辑器正则表达式把\t
替换为4
个空格,再次上传日志配置文件,之后通过ConfigMapGenerate生成配置时,发现问题已经解决,如下所示:
解决方案(2)
使用xmllint --format logback.xml -o logback.xml
进行格式化配置文件,通过这种方式也可以解决如上问题。
另外因为配置文件的编辑可能在windows
操作系统上,而ConfigMap
的生成在linux
,这会导致文件中出现^M
不可见字符,可以使用dos2unix
转换文件格式,解决该问题。
到此,相信大家对“kubernetes自动生成ConfigMap中的坑怎么解决”有了更深的了解,不妨来实际操作一番吧!这里是创新互联网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!
本文标题:kubernetes自动生成ConfigMap中的坑怎么解决
URL标题:http://scjbc.cn/article/poosjd.html