ConfigMap

本頁面說明 Kubernetes 的 ConfigMap 物件及其在 Google Kubernetes Engine 中的用法。

什麼是 ConfigMap?

ConfigMap 會在執行階段將設定檔、指令列引數、環境變數、通訊埠號及其他設定成果繫結到 Pod 的容器和系統元件。ConfigMap 可讓您將設定與 Pod 和元件區隔,這樣有助於保持工作負載的可攜性、更易於變更和管理其設定,並避免將設定資料以硬式編碼方式寫入 Pod 規格。

ConfigMap 很適合用來儲存和共用「非敏感性」的未加密設定資訊。若要在叢集中使用敏感資訊,您必須使用密鑰

建立 ConfigMap

請使用下列指令建立 ConfigMap:

kubectl create configmap [NAME] [DATA]

[DATA] 可以是:

  • 一個或多個設定檔所在目錄的路徑,以 --from-file 標記表示
  • 鍵/值組合,使用 --from-literal 標記指定每個組合

如要進一步瞭解 kubectl create,請參閱參考說明文件

您也可以在 YAML 資訊清單檔案中定義 ConfigMap 物件並使用 kubectl create -f [FILE] 來部署該物件,以建立 ConfigMap。

依據檔案

若要依據一或多個檔案建立 ConfigMap,請使用 --from-file。您可以指定任何純文字格式的檔案,例如 .properties.txt.env,只要檔案含有鍵/值組合即可。

您可以傳入一個或多個檔案:

kubectl create configmap [NAME] --from-file [/PATH/TO/FILE.PROPERTIES] --from-file [/PATH/TO/FILE2.PROPERTIES]

您也可以傳入含有多個檔案的目錄:

kubectl create configmap [NAME] --from-file [/PATH/TO/DIRECTORY]

依據檔案建立 ConfigMap 時,鍵會預設為檔案的 basename,值會預設為檔案的內容。您也可以指定備用鍵

對於依據目錄建立的 ConfigMap,該目錄中 basename 為有效鍵的每個檔案均會封裝至 ConfigMap。kubectl 會忽略符號連結、裝置和管道之類的非一般檔案。子目錄也會一併忽略;kubectl create configmap 不會遞迴到子目錄。

例如,下列指令會依據 game-configs 目錄建立名為 game-data 的 ConfigMap,該目錄含有兩個 properties 檔案:game.propertiesui.properties

kubectl create configmap game-data --from-file game-configs/

執行 kubectl get configmap game-data -o yaml 會傳回下列輸出:

apiVersion: v1
data:
  game.properties: |
    enemies=aliens
    lives=3
    ...
  ui.properties: |
    color.good=purple
    color.bad=yellow
    allow.textmode=true
    ...
kind: ConfigMap
metadata:
  creationTimestamp: ...
  name: game-data
  namespace: default
  resourceVersion: ...
  selfLink: /api/v1/namespaces/default/configmaps/game-data
  uid: ...

依據文字值

若要依據文字值建立 ConfigMap,請使用 --from-literal

例如,下列指令會使用兩個鍵/值組合建立名為 literal-data 的 ConfigMap:

kubectl create configmap literal-data --from-literal key1=value1 --from-literal key2=value2

您必須為每一個鍵/值組合指定 --from-literal

執行 kubectl get configmap literal-data -o yaml 會傳回下列輸出:

apiVersion: v1
data:
  key1: value1
  key2: value2
kind: ConfigMap
metadata:
  creationTimestamp: ...
  name: literal-data
  namespace: default
  resourceVersion: ....
  selfLink: /api/v1/namespaces/default/configmaps/literal-data
  uid: ...

使用 ConfigMap

若要使用 ConfigMap 搭配您的工作負載,您可以指定參照 ConfigMap 值的環境變數,或掛接含有 ConfigMap 的磁碟區。

若要瞭解如何使用 ConfigMap,請參閱設定 Pod 使用 ConfigMap

後續步驟

本頁內容對您是否有任何幫助?請提供意見:

傳送您對下列選項的寶貴意見...

這個網頁
Kubernetes Engine 說明文件