Kubernetes 提供了 ConfigMap 的功能,讓環境變數引用 ConfigMap 裡的值,達到集中管理的目的。怎麼建立 ConfigMap 有許多種方法,這裡舉兩個如下:
這是最直覺的方式,透過命令建立一個名為 practicecnfmap 的 ConfigMap,裡面有兩個設定 jasypt_encryptor_password 及 spring_profiles_active,它們的值在這裡故意和前一篇不同,這樣才能觀察是否 ConfigMap 有產生作用。萬一 ConfigMap 裡要設定很多參數怎麼辦? 不可能在命令列這樣的輸入,可以選擇先把這些參數以 key=value 的方式存在一個目錄,檔名是 key, 內容是 value,我建立了一個 conf 的目錄,裡面有兩個檔案如下:
- kubectl create configmap practicecnfmap --from-literal=jasypt_encryptor_password=secondKey --from-literal=spring_profiles_active=uat
檔案裡是值,接著輸入如下指令, 這樣得到的結果和上面的指令是一樣的。
接著要修改 ReplicaSet 的 yaml 檔,如下:
- kubectl create configmap practicecnfmap --from-file=./conf
第 18~20 行指出,環境變數由 practicecnfmap 這個 ConfigMap 取得。建立 ConfigMap 後,如果想要修改內容,不需刪除後重新建立,可以用以下指令編輯。
- apiVersion: apps/v1
- kind: ReplicaSet
- metadata:
- name: practice-rs
- spec:
- replicas: 2
- selector:
- matchLabels:
- app: practice-rs
- template:
- metadata:
- labels:
- app: practice-rs
- spec:
- containers:
- - name: practice-pod
- image: harbor.steven.idv.tw/steven/practice-pod
- envFrom:
- - configMapRef:
- name: practicecnfmap
- imagePullSecrets:
- - name: steven-harbor
- kubectl edit configmap practicecnfmap
沒有留言:
張貼留言