您现在的位置是:首页 > 文章详情

Kustomize ConfigMapGenerate自动生成ConfigMap中的坑

日期:2020-08-03点击:644

背景问题

最近在使用Kubernetes ConfigMap过程中,由于需要把配置文件复制ConfigMap yaml编排文件中,在copy的过程中,容易出错,于是引入了Kustomize ConfigMapGenerate,通过引用外部配置文件,自动生成配置,但在使用过程中碰到新问题。

  • ConfigMap名称生成多余 hash
  • 加载到配置文件中内容格式错乱。

以下分别对这两个个问题进行分析、并给出具体解决方式。

ConfigMapGenerate使用

ConfigMapGeneratorKustomize 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 ConfigMapload过程中发现文件中包含tab,直接转化为\n\t。如果把文本里面的tab全部替换空格,会不会直接解决问题呢?按照这个思路,我得到了如下两种解决方式。

解决方案(1)

通过编辑器正则表达式把\t替换为4个空格,再次上传日志配置文件,之后通过ConfigMapGenerate生成配置时,发现问题已经解决,如下所示:

解决方案(2)

使用xmllint --format logback.xml -o logback.xml进行格式化配置文件,通过这种方式也可以解决如上问题。

另外因为配置文件的编辑可能在windows操作系统上,而ConfigMap的生成在linux,这会导致文件中出现^M不可见字符,可以使用dos2unix转换文件格式,解决该问题。

总结

本文主要介绍了如何使用Kustomize ConfigMapGenerate自动生成Kubernetes ConfigMap资源存储对象,以及生成的配置信息出现格式错乱问题如何解决。希望能够帮助到大家,谢谢。

推荐阅读


深入探究 K8S ConfigMap 和 Secret

Kustomize 轻松解决多环境 yaml 编排文件的管理

完整的Kubernetes Deployment yaml文件应该包含什么?


原创不易,随手关注或者”三连“,诚挚感谢!


本文分享自微信公众号 - 云原生技术爱好者社区(programmer_java)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。

原文链接:https://my.oschina.net/u/1787735/blog/4467780
关注公众号

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。

持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。

转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。

文章评论

共有0条评论来说两句吧...

文章二维码

扫描即可查看该文章

点击排行

推荐阅读

最新文章