我需要為秘密值創建模板。
這是秘密檔案:
apiVersion: v1
kind: Secret
metadata:
name: secret
type: Opaque
stringData:
"user": "user"
"password": "password"
這就是我在 _helpers.tpl 中創建的
{{/*
User
*/}}
{{- define "@@chartName@@.user" -}}
{{- $secret := lookup "v1" "Secret" .Release.Namespace "secret" -}}
{{- if $secret -}}
{{- print $secret.stringData.user}}
{{- else -}}
{{- fail "The secret is absent" -}}
{{- end -}}
{{- end -}}
但它不起作用,我收到錯誤:<$secret.stringData.user>: nil pointer evaluation interface {}.user
我在安裝 helm chart 之前創建了秘密,我不知道這個錯誤的原因是什么。謝謝你的幫助!
uj5u.com熱心網友回復:
如果$secret存在,您將收到該錯誤,但不包含stringData.
在 Helm 級別,您可以通過使用default函式強制它存在來解決此問題(“沒有stringData”和“沒有user”大致相同的錯誤):
{{- $secret := lookup "v1" "Secret" .Release.Namespace "secret" | default dict -}}
{{- $stringData := $secret.stringData | default dict -}}
{{- $stringData.user | required "The secret is absent" -}}
在更高級別上,如果可以讀回 Secret,它可能只有 base64 編碼的data欄位(即使它是使用 創建的stringData)。Helm 提供了一個可以對其進行解碼的b64dec函式。最好在 pod 規范中將秘密作為環境變數參考,或者直接將值傳遞給 Helm。
# in a Pod spec; without using Helm `lookup`
env:
- name: USER
valueFrom:
secretKeyRef:
name: secret
key: user
# or passed directly via Helm
{{- $credentials := .Values.credentials | default dict -}}
{{- $credentials.user | required "missing user.credentials" -}}
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/359013.html
