其他容器編排排程工具會大談特談“輕應用”、“十二要素應用”,這樣就勢必會對企業級複雜應用做很大的改動。Kubernetes是為了解決“如何合理使用容器支撐企業級複雜應用”這個問題而誕生的,是以它的設計理念是要支援絕大多數應用的原生形态。例如,很多應用程式的配置需要通過配置檔案,指令行參數和環境變量的組合配置來完成(“十二要素應用”等均要求去配置)。這些配置應該從image内容中解耦,以此來保持容器化應用程式的可移植性。ConfigMap API資源提供了将配置資料注入容器的方式,同時保證該機制對容器來說是透明的。ConfigMap可以被用來儲存單個屬性,也可以用來儲存整個配置檔案或者JSON二進制大對象。
ConfigMap API資源存儲鍵/值對配置資料,這些資料可以在pods裡使用。ConfigMap跟Secrets類似,但是ConfigMap可以更友善的處理不包含敏感資訊的字元串。示例如下:
通過示例代碼可以看到:ConfigMap可以包含細粒度的配置項,如:example.property.1;也可以包含粗粒度的配置檔案,如:example.property.file。
建立一個Pod,并将一個已經建立好的ConfigMap作為環境變量,注入到Pod中。
當ConfigMap以資料卷的形式挂載進Pod的時,這時更新ConfigMap(或删掉重建ConfigMap),Pod内挂載的配置資訊會熱更新。這時可以增加一些監測配置檔案變更的腳本,然後reload對應服務。