Kubernetes里的ConfigMap的用途


顧名思義,ConfigMap用於保存配置數據的鍵值對,可以用來保存單個屬性,也可以用來保存配置文件。

ConfigMap同Kubernetes的另一個概念secret類似,區別是ConfigMap主要用於保存不包含敏感信息的明文字符串。

創建方式:

kubectl create configmap special-config --from-literal=i042416=jerry

上述命令行創建了一個名為special-config的鍵值對,

key為i042416, 值為jerry

接下來我希望用這個key為i042416的值"jerry"來定義成pod里的一個環境變量。

下面是我的yaml文件:

apiVersion: v1

2 kind: Pod

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/devguide/deploy-apps/environment-variable.html

  • CF_INSTANCE_ADDR
  • CF_INSTANCE_GUID
  • CF_INSTANCE_INDEX
  • CF_INSTANCE_IP
  • CF_INSTANCE_INTERNAL_IP
  • CF_INSTANCE_PORT
  • CF_INSTANCE_PORTS
  • DATABASE_URL
  • HOME
  • LANG
  • MEMORY_LIMIT
  • PORT
  • PWD
  • TMPDIR
  • USER
  • VCAP_APP_PORT
  • VCAP_APPLICATION
  • VCAP_SERVICES

當使用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的原創文章,請關注公眾號"汪子熙":


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM