您好,登錄后才能下訂單哦!
本篇內容主要講解“kubernetes自動生成ConfigMap中的坑怎么解決”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“kubernetes自動生成ConfigMap中的坑怎么解決”吧!
最近在使用Kubernetes ConfigMap
過程中,由于需要把配置文件復制ConfigMap yaml
編排文件中,在copy
的過程中,容易出錯,于是引入了Kustomize ConfigMapGenerate
,通過引用外部配置文件,自動生成配置,但在使用過程中碰到新問題。
ConfigMap
名稱生成多余
hash
。以下分別對這兩個個問題進行分析、并給出具體解決方式。
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
也有了版本的概念。
當我通過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全部替換空格,會不會直接解決問題呢?按照這個思路,我得到了如下兩種解決方式。
通過編輯器正則表達式把\t
替換為4
個空格,再次上傳日志配置文件,之后通過ConfigMapGenerate生成配置時,發現問題已經解決,如下所示:
使用xmllint --format logback.xml -o logback.xml
進行格式化配置文件,通過這種方式也可以解決如上問題。
另外因為配置文件的編輯可能在windows
操作系統上,而ConfigMap
的生成在linux
,這會導致文件中出現^M
不可見字符,可以使用dos2unix
轉換文件格式,解決該問題。
到此,相信大家對“kubernetes自動生成ConfigMap中的坑怎么解決”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。