---
# System prepended metadata

title: ConfigMap
tags: [volume, k8s, ConfigMap, configMapRef, data, Kubernetes, K8s, envFrom]

---

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 %}
