在容器組中使用配置項
更新時間 2025-05-27 17:21:02
最近更新時間: 2025-05-27 17:21:02
分享文章
本文將介紹如何在Pod中使用配置項。
背景信息
在Pod中使用配置項是一種實現配置管理的常用方式,它可以應用于多種場景,主要包括以下幾個方面:
- 應用程序配置:配置項可以存儲應用程序所需的所有配置信息,例如數據庫連接信息、密鑰、證書等。這可以使得應用程序在部署時更加簡單和靈活,開發人員可以使用配置項來控制應用程序的行為。
- 環境變量:通過配置項創建的環境變量可以直接注入到容器中,例如在容器中設置數據庫的連接信息等環境變量。
- 命令行參數:通過配置項定義命令行參數可以使得容器鏡像更加通用,可以使用不同的參數啟動不同的容器實例。
- 掛載文件:配置項還可以將配置文件存儲在其中,并將其掛載到容器內部。這使得容器可以在運行時動態加載配置文件,以更好地適應不同的部署場景。
使用限制
當您在Pod中使用配置項時,為了確保配置項在Pod內正確加載和使用,需要將它們部署到相同的命名空間中。
創建配置項
本次示例配置項configmap-demo包含DATABASE_URL和LOG_LEVEL兩個鍵值對。具體的YAML示例模板如下所示:
apiVersion: v1
kind: ConfigMap
metadata:
name: configmap-demo
namespace: default
data:
DATABASE_URL: mysql://user:password@hostname/dbname
API_SECRET: big_secret_key
LOG_LEVEL: debug
使用配置項定義Pod環境變量
- 使用配置項的數據定義Pod環境變量。
- 登錄云容器引擎控制臺。
- 在控制臺的左側導航欄中點擊“集群”。
- 在集群列表頁面中,點擊目標集群的名稱進入集群詳情頁面。
- 點擊左側導航欄中的“工作負載 ”,并選擇“無狀態” 。
- 在無狀態頁面中,單擊左上角的“新增YAML”。
- 填寫無狀態應用對應的YAML配置內容,并使用valueFrom引用配置項中的Value值,從而定義Pod的環境變量。
下面是一個編排示例:
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-deployment
labels:
app: nginx
spec:
replicas: 1
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: registry-huadong1.crs-internal.daliqc.cn/open-source/nginx:1.26-alpine-slim
ports:
- containerPort: 80
env:
- name: DATABASE_URL
valueFrom:
configMapKeyRef:
name: configmap-demo
key: DATABASE_URL
- name: LOG_LEVEL
valueFrom:
configMapKeyRef:
name: configmap-demo
key: LOG_LEVEL
- 將配置項的所有Key/Values配置為Pod的環境變量。
- 登錄云容器引擎控制臺。
- 在控制臺的左側導航欄中點擊“集群 ”。
- 在集群列表頁面中,點擊目標集群的名稱進入集群詳情頁面。
- 點擊左側導航欄中的“工作負載” ,并選擇“無狀態”。
- 在無狀態頁面中,單擊左上角的“新增YAML” 。
- 填寫無狀態應用相應的YAML配置內容,并使用envFrom將配置項的所有Key/Values鍵值對配置為Pod的環境變量。
下面是一個編排示例:
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-deployment
labels:
app: nginx
spec:
replicas: 1
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: registry-huadong1.crs-internal.daliqc.cn/open-source/nginx:1.26-alpine-slim
envFrom:
- configMapRef:
name: configmap-demo
-
通過配置項設置命令行參數。
- 登錄云容器引擎控制臺。
- 在控制臺的左側導航欄中點擊“集群 ”。
- 在集群列表頁面中,點擊目標集群的名稱進入集群詳情頁面。
- 點擊左側導航欄中的“工作負載” ,并選擇“無狀態”。
- 在無狀態頁面中,單擊左上角的“新增YAML” 。
- 填寫無狀態應用相應的YAML配置內容,您可以使用環境變量替換語法 $(VAR_NAME),將配置項設置為容器中的命令或參數值。
下面是一個編排示例:
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-deployment
labels:
app: nginx
spec:
replicas: 1
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: registry-huadong1.crs-internal.daliqc.cn/open-source/nginx:1.26-alpine-slim
command: [ "/bin/sh", "-c", "echo $(DATABASE_URL) $(LOG_LEVEL)" ]
envFrom:
- configMapRef:
name: configmap-demo
在數據卷中使用配置項
- 登錄云容器引擎控制臺。
- 在控制臺的左側導航欄中點擊“集群 ”。
- 在集群列表頁面中,點擊目標集群的名稱進入集群詳情頁面。
- 點擊左側導航欄中的“工作負載” ,并選擇“無狀態”。
- 在無狀態頁面中,單擊左上角的“新增YAML”。
- 您可以在數據卷中引用配置項。在 volumes中指定要使用的配置項名稱,并設置掛載路徑 mountPath。配置項中的鍵值對數據將被存儲在指定的掛載路徑下(例如 /etc/config),每個鍵值對作為一個文件,文件名是鍵的名稱,文件內容是該鍵的值。
下面是一個編排示例:
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-deployment
labels:
app: nginx
spec:
replicas: 1
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: registry-huadong1.crs-internal.daliqc.cn/open-source/nginx:1.26-alpine-slim
volumeMounts:
- name: config-volume
mountPath: /etc/config
volumes:
- name: config-volume
configMap:
name: configmap-demo