如何使用Kubernetes的configmap通過環境變數注入到pod裡
在Kubernetes官網裡,有這樣一篇文章,提到了Kubernetes裡的一個最佳實踐就是把應用程式碼同配置資訊分開,一種方式就是使用Kubernetes 1.2裡引入的configmap概念。
https://kubernetes.io/blog/2016/04/configuration-management-with-containers/
configmap實際上就是一系列鍵值對,儲存於etcd裡。etcd的官網有這樣一句話:
etcd is a distributed key-value store designed to reliably and quickly preserve and provide access to critical data.
https://github.com/etcd-io/etcd/blob/master/Documentation/docs.md
etcd是一個高效能的分散式鍵值對儲存庫,用於儲存和訪問關鍵資料。
使用下面的命令列建立一個Kubernetes config map:
kubectl create configmap test-config –from-literal=test.type=unit –from-literal=test.exec=always
建立一個名為test-config的鍵值對,key為test.type,值為unit,key為test.exec, 值為always。
下面我打算建立一個pod,消費這個名為test-config的configmap。
建立一個內容如下的yaml檔案:
apiVersion: v1
kind: Pod
metadata:
name: test-configmap
spec:
containers:
- name: test-container
image: alpine:3.8
command: [ "/bin/sh", "-c", "env" ]
env:
- name: TEST_TYPE
valueFrom:
configMapKeyRef:
name: test-config
key: test.type
- name: TEST_EXEC
valueFrom:
configMapKeyRef:
name: test-config
key: test.exec
restartPolicy: Never
這個yaml檔案定義的pod基於docker映象alpine,執行shell命令/bin/sh -c env檢視環境變數。
在env區域,我給該pod注入一個名為TEST_TYPE的環境變數,值從configMap鍵值對的鍵名稱為test.type的值中取。
kubectl create -f 建立這個pod:
使用命令kubectl logs test-configmap檢視這個pod執行生成的日誌,發現輸出的環境變數列表中,出現了TEST_TYPE=unit,這個TEST_TYPE是我在yaml檔案裡注入的環境變數名稱,而unit就來自configmap裡test-config的值unit。
本文來自雲棲社群合作伙伴“汪子熙”,瞭解相關資訊可以關注微信公眾號”汪子熙”。
相關文章
- kubernetes容器編排之定義環境變數以及通過downwardapi把pod資訊作為環境變數傳入容器內變數API
- Kubernetes裡的ConfigMap的用途
- ConfigMap 使用 | kubernetes 篇
- 使用 SAP Cloud SDK 開發應用時,如何通過環境變數的配置避免硬編碼Cloud變數
- 精讀《如何在 nodejs 使用環境變數》NodeJS變數
- kubernetes實踐之三十五:Pod配置管理ConfigMap
- Mac 修改Java環境變數 pod brew等其他不能用MacJava變數
- 如何檢視Docker容器環境變數,如何向容器傳遞環境變數Docker變數
- win10怎麼配置環境變數_win10的環境變數配置在哪裡Win10變數
- 什麼是環境變數?Python中如何設定環境變數?變數Python
- 如何管理你的 Linux 環境變數Linux變數
- 如何在Java程式碼中使用SAP雲平臺CloudFoundry環境的環境變數JavaCloud變數
- Laravel 和 Lumen 中通過環境變數配置對應的 env 檔案Laravel變數
- win10 如何讓環境變數生效_windows10如何設定環境變數Win10變數Windows
- OpenMP 環境變數使用總結變數
- mac如何配置python環境變數MacPython變數
- GBASEDBTSERVER 環境變數7GBASEDBTSHMBASE 環境變數 (UNIX™)Server變數
- 通過describe命令學習Kubernetes的pod屬性詳解
- 通過一個實際例子理解Kubernetes裡pod的自動scale - 水平自動伸縮
- 簡述SHELL全域性環境變數與局變環境變數變數
- win10如何配置環境變數?Win10變數
- 在Linux中,什麼是環境變數?如何設定和檢視環境變數?Linux變數
- 配置jdk環境變數win10教程_win10jdk環境變數如何配置JDK變數Win10
- 如何為你的App配置多環境變數APP變數
- Java 環境變數Java變數
- jdk環境變數JDK變數
- postman環境變數Postman變數
- DOS環境變數變數
- 配置環境變數變數
- env 環境變數變數
- 環境變數path變數
- docker 修改執行容器環境變數,如何修改容器中的環境變數env使長期有效Docker變數
- java 環境變數的配置Java變數
- 如何在 Kubernetes 環境中搭建 MySQL(四):使用 StMySql
- Mac 設定環境變數的位置、檢視和新增PATH環境變數Mac變數
- 使用 kind 快速搭建 kubernetes 環境
- 在 Kotlin + Spring Boot 中使用環境變數KotlinSpring Boot變數
- Nuxt.js 環境變數配置與使用UXJS變數