昨天關於 Job 與 CronJob 的教學已經告一段落了,不曉得各位讀者們是不是有成功實做出來呢?
那今天想跟各位介紹的是能夠將系統設定與應用程式分開的工具 -- ConfigMap
ConfigMap 一詞我們可以把它分開看, Config 指的是系統相關設定的內容; Map 則是以 Key:Value 的方式做描述。在 Kubernetes 中,應用程式主要是運作在 Pod 內,而 ConfigMap 可以存放應用程式相關的設定。有些讀者看到這可能會想問,系統設定不是可以直接寫死在應用程式內就好了嗎?這樣說也不是錯,在你的架構規模還沒那麼大時,可能不會出什麼問題,一但規模到一定程度後,相同的設定可能會需一直重複使用或修改,這時候若要維護這些設定的話,將會變成很可觀的工作量。也因為這樣, ConfigMap 在大型系統的架構下,就是一個很方便的工具。
而建立 ConfigMap 可以以兩種方式建造: from-literal 及 from-file,下面我們就一起實作看看這兩種方法吧!
from-literal 的方式就跟字面上的解釋一樣,就是以文字的方式去指定參數,以下是創建的指令:
kubectl create configmap [ConfigMap_Name] --from-literal=k1=v1
創建完之後,我們可以來看看建立的 ConfigMap 的內容:
ubuntu@ubuntu-pve:~$ kubectl get configmaps [ConfigMap_Name] -o yaml
apiVersion: v1
data:
k1: v1 # 剛剛指定的 Key: Value
kind: ConfigMap
metadata:
creationTimestamp: "2022-09-15T07:48:51Z"
managedFields:
- apiVersion: v1
fieldsType: FieldsV1
fieldsV1:
f:data:
.: {}
f:k1: {}
manager: kubectl
operation: Update
time: "2022-09-15T07:48:51Z"
name: literal-test
namespace: default
resourceVersion: "1091014"
selfLink: /api/v1/namespaces/default/configmaps/literal-test
uid: 0b61a5a6-4b85-4c9b-987f-0d9ad6a69d2e
裡面就可以觀察到我們剛剛指定的 Key 及 Value。
from-file 的話,我們必須先創建一個檔案,在裡面定義需要的 key: value,以下讓我來為各位示範:
# ConfigFile
key1=value1
key2=value2
key3=value3
將這檔案創建起來後,就可以將 ConfigMap創建起來:
kubectl create configmap [ConfigMap_Name] --from-file=[file path]
建起來之後,跟上面 Literal 一樣,再來觀察看看是否將檔案內的設定部署進去:
ubuntu@ubuntu-pve:~$ kubectl get configmap file-test -o yaml
apiVersion: v1
data:
ConfigFile: |
key1=value1 # 檔案內設定的 Key: Value
key2=value2
key3=value3
kind: ConfigMap
metadata:
creationTimestamp: "2022-09-15T09:16:38Z"
managedFields:
- apiVersion: v1
fieldsType: FieldsV1
fieldsV1:
f:data:
.: {}
f:ConfigFile: {}
manager: kubectl
operation: Update
time: "2022-09-15T09:16:38Z"
name: file-test
namespace: default
resourceVersion: "1103472"
selfLink: /api/v1/namespaces/default/configmaps/file-test
uid: 498d67bc-815d-4628-9e34-533e2aae6ed6
從這邊可以看出來,原本寫在檔案內設定已成功設定進 ConfigMap 內。
那這邊兩種建立的方式也介紹完了,各位讀者們有空的時候可以自己試試看!
今天就先介紹到這邊,大家掰掰!