顧名思義,ConfigMap用於保存配置數據的鍵值對,能夠用來保存單個屬性,也能夠用來保存配置文件。html
ConfigMap同Kubernetes的另外一個概念secret相似,區別是ConfigMap主要用於保存不包含敏感信息的明文字符串。api
建立方式:app
kubectl create configmap special-config --from-literal=i042416=jerryide
上述命令行建立了一個名爲special-config的鍵值對,ui
key爲i042416, 值爲jerrygoogle
接下來我但願用這個key爲i042416的值"jerry"來定義成pod裏的一個環境變量。spa
下面是個人yaml文件:命令行
apiVersion: v1rest
2 kind: Podrouter
3 metadata:
4 name: jerry-config-pod
5 spec:
6 containers:
7 - name: test-container
8 image: gcr.io/google_containers/busybox
9 command: [ "/bin/sh", "-c", "env" ]
10 env:
11 - name: JERRY_NAME
12 valueFrom:
13 configMapKeyRef:
14 name: special-config
15 key: i042416
16 restartPolicy: Never
能夠看到第15行引用了個人ConfigMap的key:i042416
下面使用create -f將該yaml文件導入,建立一個新的pod:
建立以後,能在pod的明細頁面看到configMap的key已經做爲環境變量顯示出來了:
由於我yaml文件裏指定pod執行的script爲/bin/sh -c env, 所以最後會將容器裏全部的環境變量都打印出來,咱們定義在ConfigMap裏的i042416的值jerry也被顯示了出來:
這種定義環境變量的作法和SAP雲平臺CloudFoundry環境裏定義環境變量的方式很相似。
CloudFoundry環境變量一覽表:
https://docs.run.pivotal.io/d...
當使用cf push命令將本地應用部署到SAP雲平臺的CloudFoundry環境下時,某些環境變量會自動被系統寫入相應的值,這個行爲同ABAP的sy-sysid自動被設置爲當前系統ID具備同樣的邏輯。
好比app router會把用戶訪問請求重定向到XSUAA實例上。
app router在manifest.yml裏定義的XSUAA實例名稱爲xsuaa-jerry-demo,
在運行時這個XSUAA的id會被SAP雲平臺自動寫入環境變量VCAP_SERVICES裏:
要獲取更多Jerry的原創文章,請關注公衆號"汪子熙":