[Day 22] Oops!Helm Template and Value
· 1 min read
Helm的是Template + Value的組合部署檔,去k8s進行部署的
常見 Oops 分享
使用數字會噴錯
template匯入value的錯誤
template:
- name: ITHOME_TEST value: {{ .Values.ithome.test }}
value
ithome: test: 800
helm 會噴錯誤警告
v1.Deployment.Spec: v1.DeploymentSpec.Template: v1.PodTemplateSpec.Spec: v1.PodSpec.Containers: []v1.Container: v1.Container.v1.Container.Env: []v1.EnvVar: v1.EnvVar.Value: ReadString: expects " or n, but found 8, error found in #10 byte of …|,“value”:800
解決辦法 在前後加入雙引號""
template:
- name: ITHOME_TEST value: “{{ .Values.ithome.test }}”
value
ithome: test: 800
yaml輸出:
- name: ITHOME_TEST value: 800
注意事項
1. 數字輸出科學符號格式
template:
- name: ITHOME_TEST value: “{{ .Values.ithome.test }}”
value
ithome: test: 123456789
yaml輸出:
- name: ITHOME_TEST value: “1.23456789e+08”
2. 數字輸出無科學符號格式
template:
- name: ITHOME_TEST value: “{{ int .Values.ithome.test }}”
value
ithome: test: 123456789
yaml輸出:
- name: ITHOME_TEST value: “123456789”
3. 數字輸出溢位
template:
- name: ITHOME_TEST value: “{{ int .Values.ithome.test }}”
value
ithome: test: 10000000000000000000
yaml輸出:
- name: ITHOME_TEST value: “-9223372036854775808”
環境變數
在任何環境都一致的變數(除了本機)。建議不要放在環境變數deployment.yaml上。 建議Server的環境變數讀取方式: 先讀取當前目錄指定的設定檔注入 -> 若環境變數有設定就覆蓋 這樣的在本機開發&部署上k8s ex: .env
ITHOME_REDIS_HOST=127.0.0.1
deployment.yaml
env:
- name: ITHOME_REDIS_HOST
value: "ithome-redis"
而helm是透過樣板匯入value的方式部署至k8s上的工具,當你的環境變數永遠不變時,是不必要抽出來放在env上的
ex: .env
ITHOME_REDIS_HOST=ithome-redis
ex: deployment.yaml
-name: ITHOME_REDIS_PORT
value: “6379”
今日小結
大家可以在本機用---dry-run
試試看,我今日分享的內容,希望大家可以提前知道會發生這些事情,提早避開這些Oops唷