[英]passing json string in environment variable in Kubernetes deployment yaml
我正在尋找與 Docker 的 SPRING_APPLICATION_JSON 環境變量等效的東西,在 Kubernetes 部署 yaml 中編寫。
我知道我們可以將單個配置作為名稱-值對傳遞。 但是必須有一些東西可以通過 json 或 Kubernetes 格式的 yaml 格式傳遞所有 env 變量。
您可以使用以下命令:
kubectl create cm env --from-file=SPRING_APPLICATION_JSON=./<your-json>.json
您可以使用ConfigMap來做到這一點。 例如,創建一個 configmap:
kind: ConfigMap
apiVersion: v1
metadata:
name: appconfig
data:
ENV_KEY1: val1
ENV_KEY2: val2
然后在您的部署容器中,使用
spec:
containers:
- image: <image>
name: <name>
envFrom:
- configMapRef:
name: appconfig
您可以通過配置映射來完成,如上所示,或者您可以將環境變量值作為字符串讀取並解組。 為此,您必須使用|
-- 一個 yaml 運算符,它允許您嵌入更多“復雜”的結構。
例如在您的 K8s 部署中。yaml:
...
env:
- name: FOO
value: |
{"foo":"bar"}
然后在你的代碼中
type v struct {
Key string `json:"foo"`
}
func main() {
foo := os.Getenv("FOO")
var t v
if err := json.Unmarshal([]bytes(foo), &t); err != nil {
// log error
}
fmt.Println("Foo %s", t.Foo) // should print out "bar"
}
如果您嘗試使用 yaml 執行此操作,我不確定它看起來有多好,但是 json 對象絕對可以通過 k8s 中的環境變量 API 以這種方式傳遞。 我會留給你來決定它的利弊。 :)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.