舵图部署顺序

时间:2019-11-23 21:30:27

标签: kubernetes kubernetes-helm kubernetes-pod

我创建了一个包含2个podPresets和2个部署的新图表,当我运行helm时,首先创建了deployment(pod)对象,然后创建podPresets,因此我从podPreset中获得的值不会应用于该pod,但是当我手动进行时首先创建podPreset,然后正确部署预置,是否可以通过一种方式指定应该首先创建哪个对象。

2 个答案:

答案 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