[英]How to override Go environment variables with Helm
如何使用 Helm 覆蓋 Go 的 .env 文件中的環境變量?
使用 C# 我執行以下操作:
在appsettings.json
:
{
"Animals":{
"Pig": "Squeek"
},
}
在values.yaml
:
animals:
pig: "Oink"
在configmap.yaml
中:
apiVersion: v1
kind: ConfigMap
metadata:
name: animal-configmap
pig: {{ .Values.animals.pig }}
最后在deployment.yaml
中。yaml :
spec:
...
template:
...
spec:
...
containers:
...
env:
- name: Animals__Pig
valueFrom:
configMapKeyRef:
name: animal-configmap
key: pig
不是雙__
。 go 如何更新 Go 的環境值?
這是 Go .env
文件示例:
PIG=SQUEEK
如果您的 Go 代碼正在檢索普通環境變量
pig := os.Getenv("PIG")
那么 Kubernetes 清單應該使用該名稱作為環境變量name:
env:
- name: PIG
valueFrom: {...}
雙下划線在 Unix 環境變量或 Kubernetes 清單中沒有任何特殊含義,在您的初始示例中,它看起來就像 C# 框架將組件映射到應用程序變量時的方式。 如果您直接使用環境變量,則不需要做任何特別的事情。
您可以使用"github.com/joho/godotenv"
github.com/joho/godotenv”package 來讀取.env
文件。 由於您不想將現有環境變量與.env
文件中的環境變量混合,您可以創建一個 map 並將變量設置為它。
如果您有這樣的.env
文件:
HELLO=word
你可以這樣讀:
package main
import (
"fmt"
"log"
"github.com/joho/godotenv"
)
func main() {
var envs map[string]string
envs, err := godotenv.Read(".env")
if err != nil {
panic("Error loading .env file")
}
name := envs["HELLO"]
fmt.Println(name)
}
如果你設置了一個 var env,你仍然可以訪問文件中定義的值:
$ HELLO=ping go run main.go
world
然后您從envs
var 訪問文件 vars。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.