iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 22
0
DevOps

遠離 DevOops系列 第 22

[Day 22] Oops!Helm Template and Value

  • 分享至 

  • xImage
  •  

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唷/images/emoticon/emoticon33.gif


上一篇
[Day 21] Oops!Helm - 起手式
下一篇
[Day 23] Oops!Helm - 2 to 3
系列文
遠離 DevOops30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言