apisix~為自定義外掛設計一個configmap指令碼

张占岭發表於2024-06-21

configMap

Kubernetes 中的 ConfigMap 是一種用來儲存配置資料的 API 資源,它允許您將配置資訊以鍵值對的形式儲存,並在容器中使用這些配置資訊。ConfigMap 提供了一種將配置資料與應用程式解耦的方式,使得應用程式可以動態地獲取配置而無需重新構建映象。

以下是 ConfigMap 的一些特點和用途:

  1. 儲存配置資料:ConfigMap 可以儲存應用程式所需的配置資料,如環境變數、命令列引數、配置檔案等。

  2. 解耦配置:透過使用 ConfigMap,可以將配置資料從應用程式中分離出來,使得應用程式更易於管理和維護。

  3. 動態更新配置:您可以在不重啟應用程式的情況下更新 ConfigMap 中的配置資料,應用程式會自動獲取最新的配置。

  4. 掛載到 Pod 中:您可以將 ConfigMap 中的配置資料掛載為 Volume,然後將其傳遞給 Pod 中的容器,使容器能夠讀取這些配置資料。

  5. 跨 Namespace 共享:ConfigMap 可以在同一叢集內的不同 Namespace 之間共享和複用。

  6. 與 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表示沒有服務就建立,有就升級

如圖所示

相關文章