配置項使您可以將設定檔與鏡像分離,提高容器應用程式的可移植性。本文介紹如何在Pod中使用配置項。
使用情境
您可以在Pod中使用配置項,主要有以下幾種使用情境:
關於配置項的更多資訊,請參見Configure a Pod to Use a ConfigMap。
使用限制
在Pod中使用配置項時,Pod與配置項需處於同一叢集和命名空間中。
建立配置項
本樣本建立配置項Special_Config,包含SPECIAL_LEVEL: very
和SPECIAL_TYPE: charm
兩個索引值對。
YAML樣本模板如下:
apiVersion: v1
kind: ConfigMap
metadata:
name: special-config
namespace: default
data:
SPECIAL_LEVEL: very
SPECIAL_TYPE: charm
使用配置項定義Pod環境變數
使用配置項的資料定義Pod環境變數
登入Container Service管理主控台,在左側導覽列選擇叢集。
在叢集列表頁面,單擊目的地組群名稱,然後在左側導覽列,選擇 。
在無狀態頁面中,單擊使用YAML建立資源。
選擇樣本模板或自訂,然後單擊建立。
您可以在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
將配置項的所有Key/Values配置為Pod的環境變數
登入Container Service管理主控台,在左側導覽列選擇叢集。
在叢集列表頁面,單擊目的地組群名稱,然後在左側導覽列,選擇 。
在無狀態頁面中,單擊使用YAML建立資源。
選擇樣本模板或自訂,然後單擊建立。
如果您想在一個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: ##引用special-config設定檔的所有key/values索引值對。 - configMapRef: name: special-config restartPolicy: Never
通過配置項設定命令列參數
登入Container Service管理主控台,在左側導覽列選擇叢集。
在叢集列表頁面,單擊目的地組群名稱,然後在左側導覽列,選擇 。
在無狀態頁面中,單擊使用YAML建立資源。
選擇樣本模板或自訂,然後單擊建立。
您可以使用配置項設定容器中的命令或參數值,使用環境變數替換文法
$(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
在資料卷中使用配置項
登入Container Service管理主控台,在左側導覽列選擇叢集。
在叢集列表頁面,單擊目的地組群名稱,然後在左側導覽列,選擇 。
在無狀態頁面中,單擊使用YAML建立資源。
選擇範例模板或自訂,然後單擊建立。
您也可以在資料卷裡面使用配置項,在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