1 背景
有時候需將變量傳給容器,作為命令的參數。比如定義一個branch name,然后在initcontainer中clone對應的配置,進行后續操作。這時候我們就可以通過ConfigMap來保存這個值,然后在Deployment里讀取這個ConfigMap,并設置到環境變量中,供容器使用。
當然也可以直接在Deployment定義這個變量,只是抽離出來會方便點,尤其是變量比較多的時候。
2 配置ConfigMap
apiVersion: v1
kind: ConfigMap
metadata:name: git-branch
data:branch: release-q1
3 配置Deployment
然后在deployment中讀取這個configmap,并將值設置到環境變量中,這里尤其需要注意的是,引用環境變量是要使用$(GIT_BRANCH),而不是${GIT_BRANCH}。
apiVersion: apps/v1
kind: Deployment
spec:template:spec:initContainers:- name: gitimage: git:2.40.1command:- '/bin/sh'- '-c'args:- 'git clone https://user:password@git.com/my.git -b $(GIT_BRANCH)'env:- name: GIT_BRANCHvalueFrom:configMapKeyRef:name: git-branchkey: branch
...
參考文檔:
- https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#use-environment-variables-to-define-arguments