iT邦幫忙

2022 iThome 鐵人賽

DAY 27
0
Software Development

被容器束縛住的小宇宙系列 第 27

Day27 管理系統設定 -- ConfigMap

  • 分享至 

  • xImage
  •  

昨天關於 Job 與 CronJob 的教學已經告一段落了,不曉得各位讀者們是不是有成功實做出來呢?

那今天想跟各位介紹的是能夠將系統設定與應用程式分開的工具 -- ConfigMap

ConfigMap 一詞我們可以把它分開看, Config 指的是系統相關設定的內容; Map 則是以 Key:Value 的方式做描述。在 Kubernetes 中,應用程式主要是運作在 Pod 內,而 ConfigMap 可以存放應用程式相關的設定。有些讀者看到這可能會想問,系統設定不是可以直接寫死在應用程式內就好了嗎?這樣說也不是錯,在你的架構規模還沒那麼大時,可能不會出什麼問題,一但規模到一定程度後,相同的設定可能會需一直重複使用或修改,這時候若要維護這些設定的話,將會變成很可觀的工作量。也因為這樣, ConfigMap 在大型系統的架構下,就是一個很方便的工具。

而建立 ConfigMap 可以以兩種方式建造: from-literal 及 from-file,下面我們就一起實作看看這兩種方法吧!

from-literal

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

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 內。

那這邊兩種建立的方式也介紹完了,各位讀者們有空的時候可以自己試試看!

今天就先介紹到這邊,大家掰掰!


上一篇
Day26 Kubernetes的工具人兄弟--CronJob
下一篇
Day28 建立外部儲存空間 -- NFS
系列文
被容器束縛住的小宇宙30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言