您好,登錄后才能下訂單哦!
這篇文章主要介紹Kubernetes 1.2中如何使用ConfigMap,文中介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們一定要看完!
很多應(yīng)用程序的配置需要通過(guò)配置文件,命令行參數(shù)和環(huán)境變量的組合配置來(lái)完成。這些配置應(yīng)該從image內(nèi)容中解耦,以此來(lái)保持容器化應(yīng)用程序的便攜性。ConfigMap API資源提供了將配置數(shù)據(jù)注入容器的方式,同時(shí)保持容器是不知道Kubernetes的。ConfigMap可以被用來(lái)保存單個(gè)屬性,也可以用來(lái)保存整個(gè)配置文件或者JSON二進(jìn)制大對(duì)象。
ConfigMap API資源保持鍵-值對(duì)配置數(shù)據(jù),這個(gè)數(shù)據(jù)可以在pods里使用,或者被用來(lái)為像controller一樣的系統(tǒng)組件存儲(chǔ)配置數(shù)據(jù)。雖然ConfigMap跟Secrets類似,但是configmap可以更方便的處理不包含敏感信息的字符串
讓我們來(lái)看看完成的例子吧:
data 一欄包括了配置數(shù)據(jù)。就如同你們看到的那樣,ConfigMap可以被用來(lái)保存單個(gè)屬性,也可以用來(lái)保存一個(gè)配置文件。
配置數(shù)據(jù)可以通過(guò)很多種方式在Pods里被使用。ConfigMaps可以被用來(lái):
1、 設(shè)置環(huán)境變量的值
2、 在容器里設(shè)置命令行參數(shù)
3、 在數(shù)據(jù)卷里面創(chuàng)建config文件
用戶和系統(tǒng)組件兩者都可以在ConfigMap里面存儲(chǔ)配置數(shù)據(jù)。
你可以使用 kubectl create configmap 命令輕松從文字值、文件或者目錄來(lái)創(chuàng)建ConfigMaps。
讓我們來(lái)看一看創(chuàng)建ConfigMap的很多不同的方法吧:
1、從文件創(chuàng)建
現(xiàn)在我們已經(jīng)有一個(gè)包含一些文件的目錄,它已經(jīng)包含了我們想要設(shè)置ConfigMaps的數(shù)據(jù):
kubectl create configmap命令可以被用來(lái)創(chuàng)建ConfigMap來(lái)存儲(chǔ)這個(gè)目錄里面每個(gè)文件的內(nèi)容:
當(dāng)--from-file指向目錄的時(shí)候,每個(gè)在目錄底下的所有文件會(huì)被用在ConfigMap里面創(chuàng)建一個(gè)鍵值對(duì),鍵的名字就是文件名,值就是文件的內(nèi)容。
讓我們來(lái)看一下這個(gè)命令創(chuàng)建的ConfigMap:
你可以看到在映射里面的兩個(gè)是從kubectl指定的目錄中創(chuàng)建的文件名。這些鍵的內(nèi)容可能會(huì)很大,所以在kubectl describe的輸出中,你只能夠看到鍵的名字和他們的大小。
如果我們想要看到鍵的值的話,我們可以僅僅只是kubectl get資源:
2、從文件創(chuàng)建
我們也可以傳遞給--from-file一個(gè)特定文件,并且多次傳遞到kubectl。以下命令跟上文例子中的結(jié)果是一樣的:
我們也可以用 --from-file 通過(guò)傳遞 key=value為個(gè)別文件設(shè)置鍵來(lái)使用:
--from-file=game-special-key=docs/user-guide/configmap/kubectl/game.properties
3、從字面值創(chuàng)建
為ConfigMap使用kubectl create configmap提供字面值。--from-literal選項(xiàng)采用了 語(yǔ)法,這個(gè)語(yǔ)法允許字面值被直接運(yùn)用到命令行:
使用案例:在環(huán)境變量中使用ConfigMap
ConfigMap可以被用來(lái)填入環(huán)境變量。舉個(gè)例子,思考以下的ConfigMap:
我們可以像這樣在一個(gè)pod中來(lái)使用這個(gè)ConfigMap的鍵:
當(dāng)這個(gè)pod運(yùn)行的時(shí)候,它的輸出將包括以下幾行:
ConfigMap也可以被使用來(lái)設(shè)置容器中的命令或者參數(shù)值。這是一個(gè)已經(jīng)完成的使用Kubernetes$(VAR_NAME)替換的語(yǔ)法??紤]ConfigMap:
為了輸入值到命令行里面,我們必須使用我們想要使用的鍵來(lái)作為環(huán)境變量,就如在上一個(gè)例子中的一樣。然后我們可以參考他們,在容器的命令里使用$(VAR_NAME)語(yǔ)法。
當(dāng)這個(gè)pod正在運(yùn)行的時(shí)候,從test-container容器的輸出將會(huì)是:
ConfigMap也可以在數(shù)據(jù)卷里面被使用。再次回到我們的ConfigMap的例子:
在數(shù)據(jù)卷里面使用這個(gè)ConfigMap,我們有不同的選項(xiàng)。最基本的就是將文件填入數(shù)據(jù)卷,在這個(gè)文件中,鍵就是文件名,鍵值就是文件內(nèi)容:
當(dāng)這個(gè)pod運(yùn)行的時(shí)候,輸出是這樣的:
我們也可以在ConfigMap值被映射的數(shù)據(jù)卷里控制路徑。
當(dāng)pod運(yùn)行的時(shí)候,輸出是這樣的:
讓我們來(lái)看一下真實(shí)的案例:用Configmap配置redis。我們想要將redis作為一個(gè)緩存用推薦配置來(lái)輸入redis。Redis 配置應(yīng)該包括:
docs/user-guide/configmap/redis里面有這樣一個(gè)文件;有了它,我們可以使用下面的命令來(lái)創(chuàng)建一個(gè)ConfigMap實(shí)例:
現(xiàn)在,讓我們用這個(gè)配置來(lái)創(chuàng)建一個(gè)pod:
注意,這個(gè)pod有一個(gè)ConfigMap數(shù)據(jù)卷,它在一個(gè)叫redis.conf的文件里替代了 example-redis-config ConfigMap的 redis-config密鑰。這個(gè)數(shù)據(jù)卷增長(zhǎng)到redis容器的 /redis-master目錄里,在/redis-master/redis.conf里替代了我們的配置文件,/redis-master/redis.conf
就是image為master查找的redis配置文件。
如果我們kubectl exec到這個(gè)pod,并且運(yùn)行redis-cli工具,我們可以檢查到我們的配置被正確運(yùn)用:
ConfigMaps必須在pod中被使用之前創(chuàng)建。Controllers可以會(huì)被寫來(lái)容忍某些配置文件數(shù)據(jù)的缺失。Configmaps屬于namespace。他們只有在相同的namespaces中通過(guò)pods被引用。
ConfigMap大小的配額是已經(jīng)一個(gè)設(shè)置好的功能。
Kubelet只支持從API服務(wù)器的pods使用ConfigMap。這包括了任意的用Kubectl創(chuàng)建的pods,或者間接的通過(guò)replication controller創(chuàng)建的pods。它不包括通過(guò)Kubelet的 --manifest-url標(biāo)志創(chuàng)建的pods,也不包括從它的REST API創(chuàng)建的pods(一般不用這些方法創(chuàng)建pods)。
以上是“Kubernetes 1.2中如何使用ConfigMap”這篇文章的所有內(nèi)容,感謝各位的閱讀!希望分享的內(nèi)容對(duì)大家有幫助,更多相關(guān)知識(shí),歡迎關(guān)注億速云行業(yè)資訊頻道!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。