Kubernetes配置管理-ConfigMap

Kubernetes配置管理-ConfigMap


K8s 中若要管理配置及機敏文件通常都是透過 configMapSecret ,這邊先不討論其他工具僅定位在這K8s原生服務。

定義:

  • 以鍵值對的形式儲存非敏感的設定資訊。
  • 它將應用程式的配置與容器映像分離,使組態管理更加靈活。

功能:

  • 組態管理: 將環境變數、設定檔、命令列參數等外部化,方便修改與管理。
  • 動態更新: 可以在不重建鏡像或重新部署應用程式的情況下更新配置。
# configfile
feature.enabled=true
welcome.message=Hello, Kubernetes!

假設需要創建配置檔, 可以分為兩種方式

  1. 使用檔案方式
  2. 透過yaml創建

使用檔案方式進行創建

kubectl create configmap my-config --from-file=configfile

透過yaml創建

apiVersion: v1
kind: ConfigMap
metadata:
  name: configfile
data:
  feature.enabled: "true"
  welcome.message: "Hello, Kubernetes!"
kubectl get cm configfile
kubectl delete cm configfile

若要刪除資源 可以透過該方式進行刪除

將cm掛載或者作為環境變量注入

# 將特定key 注入到容器內
env:
  - name: FEATURE_ENABLED
    valueFrom:
      configMapKeyRef:
        name: configfile
        key: feature.enabled
        
# 將整份cm 注入到容器內
envFrom:
  - configMapRef:
      name: configfile

作為環境變量注入

volumeMounts:
  - name: config-volume # 使用下方定義好的volumes
    mountPath: "/etc/config"  # 選擇要掛載到容器的路徑
volumes:
  - name: config-volume # 先定義這個volumes 名字為config-volume
    configMap:
      name: configfile

作為cm掛載