您可以在 Pod 中使用配置項,有多種使用情境,主要包括:

  • 使用配置項定義 pod 環境變數
  • 通過配置項設定命令列參數
  • 在資料卷中使用配置項

更多關於配置項的資訊,可以參見 Configure a Pod to Use a ConfigMap

使用限制

您在 pod 裡使用配置項時,需要兩者處於同一叢集和命名空間中。

建立配置項

本樣本建立配置項 special_config,包含 SPECIAL_LEVEL: verySPECIAL_TYPE: charm 兩個索引值對。

使用編排模板建立配置項

  1. 登入Container Service管理主控台
  2. 在 Kubernetes 菜單下,單擊左側導覽列中的應用 > 部署,然後單擊右上方的使用模板建立
  3. 選擇所需的叢集和命名空間,選擇範例模板或自訂,然後單擊建立

    您可以使用如下 yaml 樣本模板建立配置項。

    apiVersion: v1
    kind: ConfigMap
    metadata:
       name: special-config
       namespace: default
    data:
       SPECIAL_LEVEL: very
       SPECIAL_TYPE: charm

通過 Web 介面建立配置項

  1. 登入Container Service管理主控台
  2. 在 Kubernetes 菜單下,單擊左側導覽列中的應用 > 配置項,進入配置項列表頁面。
  3. 選擇所需的叢集和命名空間,然後單擊右上方的使用模板建立
  4. 輸入配置項名稱,然後單擊添加,輸入配置項,最後單擊確定


使用配置項定義 pod 環境變數

使用配置項的資料定義 pod 環境變數

  1. 登入Container Service管理主控台
  2. 在 Kubernetes 菜單下,單擊左側導覽列中的應用 > 部署,然後單擊右上方的使用模板建立
  3. 選擇所需的叢集和命名空間,選擇範例模板或自訂,然後單擊建立

    您可以在 pod 中定義環境變數,使用 valueFrom 引用 SPECIAL_LEVEL 的 value 值,從而定義 pod 的環境變數。

    下面是一個編排樣本。

    apiVersion: v1
    kind: Pod
    metadata:
       name: config-pod-1
    spec:
       containers:
         - name: test-container
           image: busybox
           command: [ "/bin/sh", "-c", "env" ]
           env:
             - name: SPECIAL_LEVEL_KEY
               valueFrom:                             ##使用valueFrom來指定env引用配置項的value值
                 configMapKeyRef:
                   name: special-config               ##引用的設定檔名稱
                   key: SPECIAL_LEVEL                 ##引用的配置項key
       restartPolicy: Never

同理,如果您需要將多個配置項的 value 值定義為 pod 的環境變數值,您只需要在 pod 中添加多個 env 參數即可。

將配置項的所有 key/values 配置為 pod 的環境變數

  1. 登入Container Service管理主控台
  2. 在 Kubernetes 菜單下,單擊左側導覽列中的應用 > 部署,然後單擊右上方的使用模板建立
  3. 選擇所需的叢集和命名空間,選擇範例模板或自訂,然後單擊建立

    如果您想在一個 pod 中將配置項的所有 key/values 索引值對配置為 pod 的環境變數,可以使用 envFrom 參數,配置項中的 key 會成為 Pod 中的環境變數名稱。

    下面是一個編排樣本。

    apiVersion: v1
    kind: Pod
    metadata:
       name: config-pod-2
    spec:
       containers:
         - name: test-container
           image: busybox
           command: [ "/bin/sh", "-c", "env" ]
           envFrom:                ##引用 sepcial-config 設定檔的所有 key/values 索引值對
           - configMapRef:
               name: special-config
       restartPolicy: Never

通過配置項設定命令列參數

  1. 登入Container Service管理主控台
  2. 在 Kubernetes 菜單下,單擊左側導覽列中的應用 > 部署,然後單擊右上方的使用模板建立
  3. 選擇所需的叢集和命名空間,選擇範例模板或自訂,然後單擊建立

    您可以使用配置項設定容器中的命令或者參數值,使用環境變數替換文法 $(VAR_NAME)來進行。

    下面是一個編排樣本。

    apiVersion: v1
    kind: Pod
    metadata:
       name: config-pod-3
    spec:
       containers:
         - name: test-container
           image: busybox
           command: [ "/bin/sh", "-c", "echo $(SPECIAL_LEVEL_KEY) $(SPECIAL_TYPE_KEY)" ]
           env:
             - name: SPECIAL_LEVEL_KEY
               valueFrom:
                 configMapKeyRef:
                   name: special-config
                   key: SPECIAL_LEVEL
             - name: SPECIAL_TYPE_KEY
               valueFrom:
                 configMapKeyRef:
                   name: special-config
                   key: SPECIAL_TYPE
       restartPolicy: Never

    運行這個 pod 後,會輸出如下結果。

    very charm

在資料卷中使用配置項

  1. 登入Container Service管理主控台
  2. 在 Kubernetes 菜單下,單擊左側導覽列中的應用 部署,然後單擊右上方的使用模板建立
  3. 選擇所需的叢集和命名空間,選擇範例模板或自訂,然後單擊建立

    您也可以在資料卷裡面使用配置項,在 volumes 下指定配置項名稱,會將 key/values 的資料存放區到 mountPath 路徑下(本例中是 /etc/config)。最終產生以 key 為檔案名稱,values 為檔案內容的設定檔。

    下面是一個編排樣本。

    apiVersion: v1
    kind: Pod
    metadata:
       name: config-pod-4
    spec:
       containers:
         - name: test-container
           image: busybox
           command: [ "/bin/sh", "-c", "ls /etc/config/" ]   ##列出該目錄下的檔案名稱
           volumeMounts:
           - name: config-volume
             mountPath: /etc/config
       volumes:
         - name: config-volume
           configMap:
             name: special-config
       restartPolicy: Never

    運行 pod 後,會輸出配置項的 key。

    SPECIAL_TYPE
    SPECIAL_LEVEL