Kubernetes CKA課程筆記 57

ConfigMap & Secret — Pass as File as Volume

ZONGRU Li
Nov 18, 2021

考量到要提供給應用程式的內容不是簡單的單一設定值

而可能是一整包檔案方式,例如:

  1. 一包mysql.conf
  2. 一包credentials.conf

至於要怎麼做到就要依靠

前一篇提到ConfigMap & Secret使用的另一種形式:

使用VolumesConfiguration File(設定檔)引入

1.建立ConfigMap元件:

直接開始建立ConfigMapConfiguration檔案:

而傳入ConfigMapdata區塊提供整個檔案內容的方式如下:

目前先完成以下就好:

2.建立Secret元件:

開始建立Secret元件的yaml檔:

先建立以下內容:

所以開另一個putty worker1視窗:

當初有在建置worker時,有寫幾個建置用的sh檔,拿來假裝使用

所以直接把上述這個檔做base64加密!!(記得移除換行)

把上面加密後並省去換行符號的內容貼過去:

完成後儲存!

3.建立deployment元件:

開始建立deployment元件的yaml檔:

基本先定義以下內容:

接著開始嘗試引入file形式的ConfigMap & Secret,透過Volume

最後當然是再把內容印出來,再次改寫為:

所以實際要印出路徑上的檔案,則是要再改為:

儲存!

因為前面還沒把ConfigMap,Secret的file版元件建起來,所以這邊就一個個來:

接著按下deployment元件的建立:

最後講師重點概念補充:

上面完成了ConfigMap & Secret元件的建立後

隨後透過deployment建立的Pod來取用ConfigMap & Secret的內容

但是此時當我們直接地異動ConfigMap & Secret的內容

既有的Pod將還是使用到ConfigMap & Secret的內容

除非將Pod重啟,才會reload到全新ConfigMap & Secret的內容

以下做個實驗:

首先移除my-secret-file.yaml裡面的value內容:

用另一個putty建立一個全新內容:

所以需要重新啟動Pod,簡單做法是Pod一個個delete

deployment元件去重啟

但是假設今天Pod一堆,則有個適合得全部重啟指令可以執行以下:

kubectl rollout restart deployment/{deployment元件名}

並且這邊還有提供rollout狀態查詢指令,執行:

kubectl rollout status deployment/{deployment元件名}

最後當然就是確認Pod log

由於作筆記關係,Pod其實有執行完畢掛掉重啟了...(Pod name會不同)

至此就完成這篇的技術筆記

這邊最後還是把這個deployment給刪了:

參考課程(reference)

--

--

ZONGRU Li
ZONGRU Li

Written by ZONGRU Li

2022/11/17 開源部分個人筆記給LINE "Java程式語言討論區"社群,希望能對社群的技術學習做一點點貢獻.(掩面....記得退訂閱!

No responses yet