我创建了一个包含2个podPresets和2个部署的新图表,当我运行helm时,首先创建了deployment(pod)对象,然后创建podPresets,因此我从podPreset中获得的值不会应用于该pod,但是当我手动进行时首先创建podPreset,然后正确部署预置,是否可以通过一种方式指定应该首先创建哪个对象。
答案 0 :(得分:1)
既然您正在使用Helm图表并拥有对该零件的完全控制权,为什么不在Helm图表中制作一些可以用外部值激活的可选零件呢?
这将是更多“ Helm本机”方式:
{{- if eq .Values.prodSecret "enabled"}}
- name: prod_db_password
valueFrom:
secretKeyRef:
name: prod_db_password
key: password
{{- end}}
然后,您只需在执行Helm图表时添加-set prodSecret = enabled 。
答案 1 :(得分:0)
将其发布为社区Wiki以获得更好的可见性,因为@Rastko的另一个答案下方的评论中提供了答案。
PodPresents
Pod预设是用于注入额外运行时的API资源 需求在创建时放入Pod。使用Pod预设可以 pod模板作者不必明确提供所有信息 每个豆荚。这样,pod模板的作者就可以使用特定的 服务不需要知道有关该服务的所有详细信息。
有关更多信息,请检查official docs。
在Helm中部署对象的顺序
部署的顺序硬编码在Helm
中。可以找到列表here。
此外,如果资源不在列表中,它将作为最后一个资源执行。
从评论中提问*
回答您的问题-要获得与默认顺序不同的订单,您可以创建两个头盔图表,其中一个带有部署的头盔随后将通过
preinstall hook
执行,以确保存在预设。
Pre-install hook批注允许在渲染模板之后但在创建任何资源之前执行。
在Github线程中提到了此替代方法。服务示例:
apiVersion: v1
kind: Service
metadata:
name: foo
annotations:
"helm.sh/hook": "pre-install"
作为附加信息,可以为挂钩定义权重,这将有助于建立确定的执行顺序。
annotations: "helm.sh/hook-weight": "5"
有关此注释的更多详细信息,请检查此Stackoverflow qustion。