共計 2681 個字符,預計需要花費 7 分鐘才能閱讀完成。
這篇文章主要介紹 Kubernetes 1.2 中如何使用 ConfigMap,文中介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們一定要看完!
使用 ConfigMap
很多應用程序的配置需要通過配置文件,命令行參數和環境變量的組合配置來完成。這些配置應該從 image 內容中解耦,以此來保持容器化應用程序的便攜性。ConfigMap API 資源提供了將配置數據注入容器的方式,同時保持容器是不知道 Kubernetes 的。ConfigMap 可以被用來保存單個屬性,也可以用來保存整個配置文件或者 JSON 二進制大對象。
ConfigMap 總覽
ConfigMap API 資源保持鍵-值對配置數據,這個數據可以在 pods 里使用,或者被用來為像 controller 一樣的系統組件存儲配置數據。雖然 ConfigMap 跟 Secrets 類似,但是 configmap 可以更方便的處理不包含敏感信息的字符串
讓我們來看看完成的例子吧:
data 一欄包括了配置數據。就如同你們看到的那樣,ConfigMap 可以被用來保存單個屬性,也可以用來保存一個配置文件。
配置數據可以通過很多種方式在 Pods 里被使用。ConfigMaps 可以被用來:
1、 設置環境變量的值
2、 在容器里設置命令行參數
3、 在數據卷里面創建 config 文件
用戶和系統組件兩者都可以在 ConfigMap 里面存儲配置數據。
創建 ConfigMaps
你可以使用 kubectl create configmap 命令輕松從文字值、文件或者目錄來創建 ConfigMaps。
讓我們來看一看創建 ConfigMap 的很多不同的方法吧:
1、從文件創建
現在我們已經有一個包含一些文件的目錄,它已經包含了我們想要設置 ConfigMaps 的數據:
kubectl create configmap 命令可以被用來創建 ConfigMap 來存儲這個目錄里面每個文件的內容:
當 –from-file 指向目錄的時候,每個在目錄底下的所有文件會被用在 ConfigMap 里面創建一個鍵值對,鍵的名字就是文件名,值就是文件的內容。
讓我們來看一下這個命令創建的 ConfigMap:
你可以看到在映射里面的兩個是從 kubectl 指定的目錄中創建的文件名。這些鍵的內容可能會很大,所以在 kubectl describe 的輸出中,你只能夠看到鍵的名字和他們的大小。
如果我們想要看到鍵的值的話,我們可以僅僅只是 kubectl get 資源:
2、從文件創建
我們也可以傳遞給 –from-file 一個特定文件,并且多次傳遞到 kubectl。以下命令跟上文例子中的結果是一樣的:
我們也可以用 –from-file 通過傳遞 key=value 為個別文件設置鍵來使用:
–from-file=game-special-key=docs/user-guide/configmap/kubectl/game.properties
3、從字面值創建
為 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 容器的輸出將會是:
使用案例:通過數據卷插件使用 ConfigMap
ConfigMap 也可以在數據卷里面被使用。再次回到我們的 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)。
以上是“Kubernetes 1.2 中如何使用 ConfigMap”這篇文章的所有內容,感謝各位的閱讀!希望分享的內容對大家有幫助,更多相關知識,歡迎關注丸趣 TV 行業資訊頻道!