apisix~為自定義插(cha)件設計一個configmap腳本(ben)
configMap
Kubernetes 中(zhong)的 ConfigMap 是(shi)一種(zhong)(zhong)用來存儲配(pei)(pei)置數據的 API 資源,它允許您將配(pei)(pei)置信(xin)息(xi)以(yi)鍵(jian)值對(dui)的形式保存,并(bing)在容器中(zhong)使用這些配(pei)(pei)置信(xin)息(xi)。ConfigMap 提供了一種(zhong)(zhong)將配(pei)(pei)置數據與應用程序解耦的方(fang)式,使得應用程序可(ke)以(yi)動態地獲取配(pei)(pei)置而無需(xu)重新構建鏡像(xiang)。
以(yi)下是 ConfigMap 的一(yi)些(xie)特(te)點(dian)和用途:
-
存儲配置數據:ConfigMap 可以存儲應用程序所(suo)需的(de)配置(zhi)數據,如(ru)環(huan)境(jing)變量、命令行參數、配置(zhi)文件等(deng)。
-
解耦配置:通(tong)過使用 ConfigMap,可(ke)以將(jiang)配置數據從應(ying)用程序中分離(li)出來,使得應(ying)用程序更易于管理和維護。
-
動態更新配置:您(nin)可以在不重啟應(ying)用(yong)(yong)程序的(de)(de)情況下更新(xin) ConfigMap 中的(de)(de)配置(zhi)數據,應(ying)用(yong)(yong)程序會自動(dong)獲(huo)取最(zui)新(xin)的(de)(de)配置(zhi)。
-
掛載到 Pod 中:您可以(yi)將(jiang) ConfigMap 中的配置數(shu)據掛(gua)載(zai)為 Volume,然后將(jiang)其傳遞(di)給 Pod 中的容器,使容器能夠讀取這些配置數(shu)據。
-
跨 Namespace 共享:ConfigMap 可以在同一集群內(nei)的不同 Namespace 之間(jian)共(gong)享和(he)復(fu)用(yong)。
-
與 Secret 對比:與 Secret 不(bu)同,ConfigMap 存(cun)(cun)儲(chu)(chu)(chu)的是(shi)明文數據,適(shi)合存(cun)(cun)儲(chu)(chu)(chu)非敏(min)感(gan)性數據;而 Secret 存(cun)(cun)儲(chu)(chu)(chu)的是(shi)加密數據,適(shi)合存(cun)(cun)儲(chu)(chu)(chu)敏(min)感(gan)性數據。
在 Kubernetes 中,您可以使用 kubectl create configmap 命令創建 ConfigMap,也(ye)可以通過(guo) YAML 文件定(ding)義(yi) ConfigMap 的(de)配置。隨后,您可以在 Pod 的(de)定(ding)義(yi)中(zhong)引用這些 ConfigMap,并將其配置數據注入到容器中(zhong)。
總的(de)來說(shuo),ConfigMap 是 Kubernetes 中一(yi)個非常(chang)有用(yong)的(de)資(zi)源(yuan),可以幫助(zhu)您管理和提(ti)供應用(yong)程序所需的(de)配(pei)置(zhi)信息(xi)。如果您有任何關(guan)于 ConfigMap 的(de)具體問題或者需要進一(yi)步了解,請(qing)隨(sui)時告訴我。
今日需求
這塊使用apisix的自(zi)定義插件(jian)為例,來說明一下這個功能,執行(xing)后,configmap由3個鍵(jian)組件(jian),每(mei)個鍵(jian)對應一個文件(jian)。
#!/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表示沒有服務就建立,有就升級
如圖所示
