ConfigMap === ###### tags: `K8s` ###### tags: `Kubernetes`, `k8s`, `ConfigMap`, `data`, `envFrom`, `configMapRef`, `volume` <br> [TOC] <br> ## 討論 ### K8s 的 ConfigMap 要如何使用,能舉簡單的例子? - ### gpt-o3-mini-high > K8s 的 ConfigMap 使用範例 以下提供一個簡單的例子,說明如何建立 ConfigMap 並在 Pod 中使用它: ### 1. 建立 ConfigMap 假設我們要儲存一組設定,例如應用程式的環境設定,可以建立一個 YAML 檔案 `my-configmap.yaml` 如下: ```yaml= apiVersion: v1 kind: ConfigMap metadata: name: my-config data: APP_MODE: "production" APP_DEBUG: "false" ``` 這份檔案定義了一個名為 `my-config` 的 ConfigMap,其中包含兩個鍵值對:`APP_MODE` 與 `APP_DEBUG`。 建立方式: ```bash kubectl apply -f my-configmap.yaml ``` ### 2. 在 Pod 中使用 ConfigMap #### (a) 作為環境變數引用 你可以在 Pod 的 YAML 中,透過 `envFrom` 或 `env` 的方式,將 ConfigMap 中的值注入到容器內的環境變數中。例如,建立一個 Pod 使用 ConfigMap: ```yaml= apiVersion: v1 kind: Pod metadata: name: configmap-pod spec: containers: - name: my-container image: nginx envFrom: - configMapRef: name: my-config ``` 在這個例子中,容器會自動獲得 `APP_MODE` 與 `APP_DEBUG` 兩個環境變數,其值分別為 `production` 與 `false`。 #### (b) 作為檔案掛載(Volume) 你也可以將 ConfigMap 當作檔案掛載到 Pod 中,讓容器讀取檔案內容。修改 Pod YAML 如下: ```yaml= apiVersion: v1 kind: Pod metadata: name: configmap-volume-pod spec: containers: - name: my-container image: nginx volumeMounts: - name: config-volume mountPath: /etc/config # 掛載到容器內的目錄 volumes: - name: config-volume configMap: name: my-config ``` 在這個例子中,ConfigMap 中的每個鍵都會在 `/etc/config` 目錄下以檔案的形式出現,檔案名稱即為鍵名,檔案內容即為對應的值。 --- 這兩種方式分別適用於不同的使用情境: - 若是需要環境變數設定,可採用 **環境變數方式**; - 若是需要檔案內容或設定檔,則可採用 **Volume 掛載方式**。 以上就是一個簡單的 ConfigMap 使用例子,希望能幫助你理解在 Kubernetes 中如何應用 ConfigMap. <br> {%hackmd vaaMgNRPS4KGJDSFG0ZE0w %}