我目前正在使用 golang 開發一個小型 API,它將連接到 sql 資料庫。下面是我靜態傳遞資料庫連接字串詳細資訊的片段(在代碼中硬編碼)。
const (
DB_USER = "username"
DB_PASSWORD = "password"
DB_NAME = "db_name"
DB_HOST = "db_server_name"
DB_PORT = db_port )
現在我想使用 ENV 變數使這個靜態硬編碼值變成動態的,所以任何人都可以使用 ENV vars 設定這些細節。有人可以幫助我如何實作這一目標。如何從代碼中以這種方式設定它們,以便它可以在 k8 的部署中作為 ENV vars 動態傳遞?
我當前的 deployment.yaml 檔案如下
apiVersion: apps/v1
kind: Deployment
metadata:
name: go-demo-app
spec:
replicas: 1
selector:
matchLabels:
app: go-demo-app
template:
metadata:
labels:
app: go-demo-app
spec:
containers:
- name: go-demo-app
image: dockerhub/go-api:latest
resources: {}
ports:
- containerPort: 8001
以上作業正常,因為資料庫服務器名稱在代碼中是硬編碼的,現在我可以通過代碼使用 ENV vars 動態傳遞它,我可以在 k8 的部署中參考它
uj5u.com熱心網友回復:
將 .yaml 更改為
apiVersion: apps/v1
kind: Deployment
metadata:
name: go-demo-app
spec:
replicas: 1
selector:
matchLabels:
app: go-demo-app
template:
metadata:
labels:
app: go-demo-app
spec:
containers:
- name: go-demo-app
image: dockerhub/go-api:latest
resources: {}
ports:
- containerPort: 8001
env:
- name: DB_USER
value: username
- name: DB_PASSWORD
value: password
- name: DB_NAME
value: db_name
- name: DB_HOST
value: db_server_name
- name: DB_PORT
value: "3306"
kubectl apply -f /path/to/file
在您的代碼上,將初始化更改為
var (
DB_USER = os.Getenv("DB_USER")
DB_PASSWORD = os.Getenv("DB_PASSWORD")
DB_NAME = os.Getenv("DB_NAME")
DB_HOST = os.Getenv("DB_HOST")
DB_PORT = os.Getenv("DB_PORT")
)
我將 const 更改為 var 因為它是不允許的
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/412260.html
標籤:
