configMap
Kubernetes 中的 ConfigMap 是一種用來儲存配置資料的 API 資源,它允許您將配置資訊以鍵值對的形式儲存,並在容器中使用這些配置資訊。ConfigMap 提供了一種將配置資料與應用程式解耦的方式,使得應用程式可以動態地獲取配置而無需重新構建映象。
以下是 ConfigMap 的一些特點和用途:
-
儲存配置資料:ConfigMap 可以儲存應用程式所需的配置資料,如環境變數、命令列引數、配置檔案等。
-
解耦配置:透過使用 ConfigMap,可以將配置資料從應用程式中分離出來,使得應用程式更易於管理和維護。
-
動態更新配置:您可以在不重啟應用程式的情況下更新 ConfigMap 中的配置資料,應用程式會自動獲取最新的配置。
-
掛載到 Pod 中:您可以將 ConfigMap 中的配置資料掛載為 Volume,然後將其傳遞給 Pod 中的容器,使容器能夠讀取這些配置資料。
-
跨 Namespace 共享:ConfigMap 可以在同一叢集內的不同 Namespace 之間共享和複用。
-
與 Secret 對比:與 Secret 不同,ConfigMap 儲存的是明文資料,適合儲存非敏感性資料;而 Secret 儲存的是加密資料,適合儲存敏感性資料。
在 Kubernetes 中,您可以使用 kubectl create configmap
命令建立 ConfigMap,也可以透過 YAML 檔案定義 ConfigMap 的配置。隨後,您可以在 Pod 的定義中引用這些 ConfigMap,並將其配置資料注入到容器中。
總的來說,ConfigMap 是 Kubernetes 中一個非常有用的資源,可以幫助您管理和提供應用程式所需的配置資訊。如果您有任何關於 ConfigMap 的具體問題或者需要進一步瞭解,請隨時告訴我。
今日需求
這塊使用apisix的自定義外掛為例,來說明一下這個功能,執行後,configmap由3個鍵元件,每個鍵對應一個檔案。
#!/bin/sh
# 配置檔案configmap
files=""
for file in "$(pwd)"/plugins/*.lua; do
files="$files --from-file=$file"
done
kubectl create configmap apisix-plugins-config -n apisix $files --dry-run=true -o yaml > apisix-plugins-config.yaml
kubectl apply -f apisix-plugins-config.yaml -n apisix
# 生成helm
first_param="values.override.yaml"
if [ -z "$1" ]; then
echo "沒有傳遞第一個引數,將使用預設值"
else
first_param="$1"
fi
helm -n apisix upgrade -i apisix -f "./apisix/${first_param}" ./apisix #引數-i表示沒有服務就建立,有就升級
如圖所示