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