ConfigMap
以下是圖片內容的辨識及繁體中文翻譯,並補充完整 1-4 步驟 的詳細說明:
ConfigMap 操作步驟
1. 創建配置文件
創建一個配置文件,例如 redis.properties
:
[root@k8smaster ~]# vi redis.properties
# 文件內容
redis.host=127.0.0.1
redis.port=6379
redis.password=123456
2. 創建 ConfigMap
將配置文件創建為 ConfigMap:
[root@k8smaster ~]# kubectl create configmap redis-config --from-file=redis.properties
configmap/redis-config created
[root@k8smaster ~]# kubectl get cm
NAME DATA AGE
redis-config 1 10s
檢查 ConfigMap 詳情:
[root@k8smaster ~]# kubectl describe cm redis-config
Name: redis-config
Data:
redis.properties:
redis.host=127.0.0.1
redis.port=6379
redis.password=123456
3. 以 Volume 形式挂載到 Pod 容器中
步驟:
- 編寫 YAML 文件,將 ConfigMap 作為 Volume 注入到 Pod 中:
apiVersion: v1
kind: Pod
metadata:
name: mypod
spec:
containers:
- name: mycontainer
image: busybox
command: ["sh", "-c", "cat /config/redis.properties; sleep 3600"]
volumeMounts:
- name: config-volume
mountPath: /config
volumes:
- name: config-volume
configMap:
name: redis-config
- 應用配置:
[root@k8smaster ~]# kubectl apply -f cm.yaml
pod/mypod created
- 查看 Pod 狀態並檢查配置:
[root@k8smaster ~]# kubectl get pods
NAME READY STATUS RESTARTS AGE
mypod 1/1 Completed 0 41s
[root@k8smaster ~]# kubectl logs mypod
redis.host=127.0.0.1
redis.port=6379
redis.password=123456
4. 以變量形式挂載到 Pod 容器中
步驟:
- 編寫 YAML 文件,將 ConfigMap 值作為環境變量注入:
apiVersion: v1
kind: Pod
metadata:
name: mypod
spec:
containers:
- name: mycontainer
image: busybox
command: ["sh", "-c", "echo $REDIS_HOST; echo $REDIS_PORT; echo $REDIS_PASSWORD; sleep 3600"]
env:
- name: REDIS_HOST
valueFrom:
configMapKeyRef:
name: redis-config
key: redis.host
- name: REDIS_PORT
valueFrom:
configMapKeyRef:
name: redis-config
key: redis.port
- name: REDIS_PASSWORD
valueFrom:
configMapKeyRef:
name: redis-config
key: redis.password
- 應用配置:
[root@k8smaster ~]# kubectl apply -f myconfig.yaml
pod/mypod created
- 查看 Pod 狀態並檢查日誌:
[root@k8smaster ~]# kubectl logs mypod
127.0.0.1
6379
123456
小結
- Volume 挂載:將 ConfigMap 文件直接映射到容器的文件系統中。
- 環境變量注入:將 ConfigMap 的鍵值對作為環境變量傳遞給容器。