Nin*_*ita 8 kubernetes kubernetes-helm kubernetes-secrets
在我的掌舵图上,我有一份工作pre-install
,我需要使用我的秘密中的属性。但是,当我尝试安装 Helm Chart 时,我的pre-install
工作出现以下错误:
错误:未找到机密“SecretsFileName”
在 pods 执行之前没有创建秘密?这里有什么问题?我该如何解决这个问题?
笔记:
"helm.sh/hook": pre-install,post-delete
和"helm.sh/hook-weight": "1"
,"helm.sh/hook-weight": "2"
但问题仍然存在。我的预安装工作:
apiVersion: batch/v1
kind: Job
metadata:
name: "MyPodName"
annotations:
"helm.sh/hook": pre-install
"helm.sh/hook-delete-policy": before-hook-creation,hook-succeeded
#some more code
spec:
template:
#some more code
spec:
dnsPolicy: {{ .Values.specPolicy.dnsPolicy }}
restartPolicy: {{ .Values.specPolicy.restartPolicy }}
volumes:
- name: {{ .Values.volume.name }}
persistentVolumeClaim:
claimName: {{ .Values.volume.claimName }}
securityContext:
{{- toYaml .Values.securityContext | nindent 8 }}
containers:
- name: "MyContainerName"
#some more code
env:
- name: SECRET_TO_USE
valueFrom:
secretKeyRef:
name: SecretsFileName
key: PROP_FROM_SCRETS
#some more code
Run Code Online (Sandbox Code Playgroud)
我的秘密文件:
apiVersion: v1
kind: Secret
metadata:
name: "SecretsFileName"
labels:
app: "MyAppName"
#some more code
type: Opaque
data:
PROP_FROM_SCRETS: eHB0bw==
Run Code Online (Sandbox Code Playgroud)
虽然Helm 钩子通常是 Jobs,但没有要求它们是,并且 Helm 不会对钩子对象的内容进行任何分析以查看它可能依赖的其他内容。如果你通读了那里描述的安装顺序,它是 (7) 安装标记为钩子的东西,(8) 等待那些准备好,然后 (9) 安装其他所有东西;它会等待 Job 完成,然后才会安装它所依赖的 Secret。
那么,第一个答案是,您还需要将您的 Secret 标记为一个钩子,以便在预安装阶段安装它,并修改权重,以便在主作业之前安装(较小的权重数字会更快发生) :
apiVersion: v1
kind: Secret
annotations:
"helm.sh/hook": pre-install
"helm.sh/hook-weight": "-5"
Run Code Online (Sandbox Code Playgroud)
下一个问题是这个 Secret 何时被删除。文档注释是helm uninstall
不会删除挂钩的资源; 您需要添加一个单独的helm.sh/hook-delete-policy
注释,否则它会一直存在,直到下次计划运行钩子。这对我来说是说,如果您修改 Secret(或构成它的值)并升级(而不是删除和重新安装)图表,则该 Secret 将不会更新。
我可能只创建 Secret 的两份副本,一份在预安装时有用,一份对主要图表生命周期有用。您可以创建一个模板来呈现 Secret 正文,然后调用两次:
{{- define "secret.content" -}}
type: Opaque
data:
PROP_FROM_SCRETS: eHB0bw==
{{- end -}}
---
apiVersion: v1
kind: Secret
metadata:
name: "SecretsFileName"
labels:
app: "MyAppName"
{{ include "secret.content" . }}
---
apiVersion: v1
kind: Secret
metadata:
name: "SecretsFileName-preinst"
labels:
app: "MyAppName"
annotations:
"helm.sh/hook": pre-install
"helm.sh/hook-weight": "-5"
"helm.sh/hook-delete-policy": hook-succeeded
{{ include "secret.content" . }}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
2192 次 |
最近记录: |