Kubernetes CKA課程筆記 56

ConfigMap & Secret — Environment Variables

ZONGRU Li
Nov 18, 2021

簡單考量到一般後端應用程式Pod

要連接到另一個DB Service元件直到背後的DB Pod

DB資訊在安全考量下,應用程式內並不留存DB的資訊如下:

DB連接的必要資訊與my-app分離

所以延伸到K8s環境下,最好的建立與提供這些外部設定檔方式是?

就要使用到以下兩個元件

ConfigMap & Secret 元件

而要讓Pod內的Container內的應用程式(my-app)

取得儲存在ConfigMap & Secret的資料,有兩招:

  1. 使用Environment Variables(環境變數)個別值引入
  2. 使用VolumesConfiguration File(設定檔)引入

這篇筆記就寫完1.Environment Variables的部分如下

ConfigMap & Secret — Environment Variables:

接著範例將講解如下步驟:

  1. 建立ConfigMap元件
  2. 建立Secret元件
  3. 將上述儲存的資料透過Environment Variables(環境變數)傳給Pod

1.建立ConfigMap元件:

下面將以目錄來存放ConfigMap & Secret yaml檔

所以首先建立一個目錄(external-config),並進到裡面

接著開始建立ConfigMap的yaml檔:

接著我直接把講師的結果貼來,直接圖上解說如下:

2.建立Secret元件:

開始建立Secret元件的yaml檔:

內容需要設定這個Secret類別(type),可以先查找官網找到:

link

先寫出以下內容:

也就是我們隨意定義了keyusernamepassword

但是值則需要透過base64加密後才能放入,所以在起另一個putty

執行以下指令拿到要放的值的base64加密後結果:

echo -n "{值}"|base64

其中-n表示捨去換行符號!

隨意定個帳密:

做好加密後貼回去!!

完成如下儲存:

接著在當前目錄只有剛剛建立的ConfigMapSecretyaml檔情況下

執行apply指令到點,可以將該目錄所有Configuration yaml檔建出對應元件:

kubectl apply -f .

3.將上述儲存的資料透過Environment Variables(環境變數)傳給Pod:

開始建立deployment元件的yaml檔:

並先定義基本的Deployment元件內容如下:

再來就是填入引用ConfigMapSecret元件裡面的值,並使用

同理也把密碼引用,當然另外還要從ConfigMapdb_host這個key寫上去:

記得這些設定檔有些名稱,大小寫,yaml階層等等要求基本不可能背!!

所以比較重要的部分是要知道有這些元件使用方式

至於如何寫出對應Configuration File,當然是知道關鍵字去官網找範例就好!

不用背!

此時該container內就能有這個環境變數了,再來當然是使用看看:

嘗試讓該container內印出這些環境變數訊息出來,最終完成如下:

完成的Deployment Configuration file

接著當然就是apply建出來

但是記得:

有引用ConfigMap或Secret的Deployment的建立

必定是要在ConfigMap或Secret建立之後才建!

不然就等著ERROR...!

所以建完要在20秒內拿到log,整個確認動作如下:

這邊字打錯....:

實在會眼花!!

重來:

參考課程(reference)

這邊課結束先移除這個deployment元件,不然Pod會一直重建:

--

--

ZONGRU Li
ZONGRU Li

Written by ZONGRU Li

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

No responses yet