跳到主內容

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 容器中

步驟:

  1. 編寫 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
  1. 應用配置:
[root@k8smaster ~]# kubectl apply -f cm.yaml
pod/mypod created
  1. 查看 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 容器中

步驟:

  1. 編寫 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
  1. 應用配置:
[root@k8smaster ~]# kubectl apply -f myconfig.yaml
pod/mypod created
  1. 查看 Pod 狀態並檢查日誌:
[root@k8smaster ~]# kubectl logs mypod
127.0.0.1
6379
123456

小結

  • Volume 挂載:將 ConfigMap 文件直接映射到容器的文件系統中。
  • 環境變量注入:將 ConfigMap 的鍵值對作為環境變量傳遞給容器。