摘要:使用很多應用程序的配置需要通過配置文件,命令行參數和環境變量的組合配置來完成。舉個例子,思考以下的我們可以像這樣在一個中來使用這個的鍵當這個運行的時候,它的輸出將包括以下幾行使用案例用設置命令行參數也可以被使用來設置容器中的命令或者參數值。
使用ConfigMap
很多應用程序的配置需要通過配置文件,命令行參數和環境變量的組合配置來完成。這些配置應該從image內容中解耦,以此來保持容器化應用程序的便攜性。ConfigMap API資源提供了將配置數據注入容器的方式,同時保持容器是不知道Kubernetes的。ConfigMap可以被用來保存單個屬性,也可以用來保存整個配置文件或者JSON二進制大對象。
ConfigMap總覽ConfigMap API資源保持鍵-值對配置數據,這個數據可以在pods里使用,或者被用來為像controller一樣的系統組件存儲配置數據。雖然ConfigMap跟Secrets類似,但是configmap可以更方便的處理不包含敏感信息的字符串
讓我們來看看完成的例子吧:
data 一欄包括了配置數據。就如同你們看到的那樣,ConfigMap可以被用來保存單個屬性,也可以用來保存一個配置文件。
配置數據可以通過很多種方式在Pods里被使用。ConfigMaps可以被用來:
設置環境變量的值
在容器里設置命令行參數
在數據卷里面創建config文件
用戶和系統組件兩者都可以在ConfigMap里面存儲配置數據。
創建ConfigMaps你可以使用 kubectl create configmap 命令輕松從文字值、文件或者目錄來創建ConfigMaps。
讓我們來看一看創建ConfigMap的很多不同的方法吧
現在我們已經有一個包含一些文件的目錄,它已經包含了我們想要設置ConfigMaps的數據:
kubectl create configmap命令可以被用來創建ConfigMap來存儲這個目錄里面每個文件的內容:
當--from-file指向目錄的時候,每個在目錄底下的所有文件會被用在ConfigMap里面創建一個鍵值對,鍵的名字就是文件名,值就是文件的內容。
讓我們來看一下這個命令創建的ConfigMap:
你可以看到在映射里面的兩個是從kubectl指定的目錄中創建的文件名。這些鍵的內容可能會很大,所以在kubectl describe的輸出中,你只能夠看到鍵的名字和他們的大小。
如果我們想要看到鍵的值的話,我們可以僅僅只是kubectl get資源:
我們也可以傳遞給--from-file一個特定文件,并且多次傳遞到kubectl。以下命令跟上文例子中的結果是一樣的:
我們也可以用 --from-file 通過傳遞 key=value為個別文件設置鍵來使用:
--from-file=game-special-key=docs/user-guide/configmap/kubectl/game.properties從字面值創建
為ConfigMap使用kubectl create configmap提供字面值。--from-literal選項采用了 語法,這個語法允許字面值被直接運用到命令行:
在pods里面使用ConfigMap使用案例:在環境變量中使用ConfigMap
ConfigMap可以被用來填入環境變量。舉個例子,思考以下的ConfigMap:
我們可以像這樣在一個pod中來使用這個ConfigMap的鍵:
當這個pod運行的時候,它的輸出將包括以下幾行:
使用案例:用ConfigMap設置命令行參數ConfigMap也可以被使用來設置容器中的命令或者參數值。這是一個已經完成的使用Kubernetes$(VAR_NAME)替換的語法。考慮ConfigMap:
為了輸入值到命令行里面,我們必須使用我們想要使用的鍵來作為環境變量,就如在上一個例子中的一樣。然后我們可以參考他們,在容器的命令里使用$(VAR_NAME)語法。
當這個pod正在運行的時候,從test-container容器的輸出將會是:
使用案例:通過數據卷插件使用ConfigMapConfigMap也可以在數據卷里面被使用。再次回到我們的ConfigMap的例子:
在數據卷里面使用這個ConfigMap,我們有不同的選項。最基本的就是將文件填入數據卷,在這個文件中,鍵就是文件名,鍵值就是文件內容:
當這個pod運行的時候,輸出是這樣的:
我們也可以在ConfigMap值被映射的數據卷里控制路徑。
當pod運行的時候,輸出是這樣的:
真實案例:配置Redis讓我們來看一下真實的案例:用Configmap配置redis。我們想要將redis作為一個緩存用推薦配置來輸入redis。Redis 配置應該包括:
docs/user-guide/configmap/redis里面有這樣一個文件;有了它,我們可以使用下面的命令來創建一個ConfigMap實例:
現在,讓我們用這個配置來創建一個pod:
注意,這個pod有一個ConfigMap數據卷,它在一個叫redis.conf的文件里替代了 example-redis-config ConfigMap的 redis-config密鑰。這個數據卷增長到redis容器的 /redis-master目錄里,在/redis-master/redis.conf里替代了我們的配置文件,/redis-master/redis.conf
就是image為master查找的redis配置文件。
如果我們kubectl exec到這個pod,并且運行redis-cli工具,我們可以檢查到我們的配置被正確運用:
限制條件ConfigMaps必須在pod中被使用之前創建。Controllers可以會被寫來容忍某些配置文件數據的缺失。Configmaps屬于namespace。他們只有在相同的namespaces中通過pods被引用。
ConfigMap大小的配額是已經一個設置好的功能。
Kubelet只支持從API服務器的pods使用ConfigMap。這包括了任意的用Kubectl創建的pods,或者間接的通過replication controller創建的pods。它不包括通過Kubelet的 --manifest-url標志創建的pods,也不包括從它的REST API創建的pods(一般不用這些方法創建pods)。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/32464.html
摘要:我們希望能夠讓應用的開發者在里充分使用這樣的模式。盡管允許類似于驗證信息和秘鑰這些信息從應用當中分離,但在過去并沒有為了普通的或者非配置而存在的對象。從數據角度來看,的類型只是鍵值組。 容器的配置管理——把應用的代碼和配置區分開,是一個好的操作。我們希望能夠讓應用的開發者在Kubernetes里充分使用這樣的模式。盡管Secrets API允許類似于驗證信息和秘鑰這些信息從應用當中分離...
摘要:的工作就是為作出的修改查看我們的配置文件,并且運行讀取配置文件的新版本回調函數,使用設置新的。它的目標是使任意額外的成為一個單獨更新的,這樣我們只要執行一次回調函數。 Kubernetes 1.2版本添加了一個叫ConfigMap的新功能。這個功能提供給容器注入應用程序數據的方式。注入配置文件對于大部分應用程序來說很強大,但是新的ConfigMap功能不僅可以在容器開啟時提供初始配置功...
摘要:實際上就是一系列鍵值對,存儲于里。在區域,我給該注入一個名為的環境變量,值從鍵值對的鍵名稱為的值中取。創建這個使用命令查看這個運行生成的日志,發現輸出的環境變量列表中,出現了,這個是我在文件里注入的環境變量名稱,而就來自里的值。 在Kubernetes官網里,有這樣一篇文章,提到了Kubernetes里的一個最佳實踐就是把應用代碼同配置信息分開,一種方式就是使用Kubernetes 1...
摘要:實際上就是一系列鍵值對,存儲于里。在區域,我給該注入一個名為的環境變量,值從鍵值對的鍵名稱為的值中取。創建這個使用命令查看這個運行生成的日志,發現輸出的環境變量列表中,出現了,這個是我在文件里注入的環境變量名稱,而就來自里的值。 在Kubernetes官網里,有這樣一篇文章,提到了Kubernetes里的一個最佳實踐就是把應用代碼同配置信息分開,一種方式就是使用Kubernetes 1...
摘要:實際上就是一系列鍵值對,存儲于里。在區域,我給該注入一個名為的環境變量,值從鍵值對的鍵名稱為的值中取。創建這個使用命令查看這個運行生成的日志,發現輸出的環境變量列表中,出現了,這個是我在文件里注入的環境變量名稱,而就來自里的值。 在Kubernetes官網里,有這樣一篇文章,提到了Kubernetes里的一個最佳實踐就是把應用代碼同配置信息分開,一種方式就是使用Kubernetes 1...
閱讀 3189·2021-11-24 10:30
閱讀 1313·2021-09-30 09:56
閱讀 2385·2021-09-07 10:20
閱讀 2596·2021-08-27 13:10
閱讀 698·2019-08-30 11:11
閱讀 2050·2019-08-29 12:13
閱讀 758·2019-08-26 12:24
閱讀 2897·2019-08-26 12:20