簡體   English   中英

Helm chart 部署順序

[英]Helm chart deployment ordering

我創建了一個包含 2 個 podPresets 和 2 個部署的新圖表,當我去運行 helm install 時,首先創建了部署(pod)對象,然后是 podPresets,因此我從 podPreset 中的值不會應用於 pods,但是當我首先手動創建 podPreset 時然后部署正確應用預設,有沒有辦法可以在掌舵中指定應該首先創建哪個對象。

既然您正在使用 Helm charts 並完全控制這部分,為什么不在您的 helm charts 中創建可以使用外部值激活的可選部分?

這將是更“Helm native”的方式:

{{- if eq .Values.prodSecret "enabled"}}
      - name: prod_db_password
        valueFrom:
          secretKeyRef:
            name: prod_db_password
            key: password
{{- end}}

然后你只需要在執行你的 Helm 圖表時添加--set prodSecret=enabled

將此作為社區 Wiki 發布以獲得更好的可見性,因為在@Rastko 的另一個答案下方的評論中提供了答案。

PodPresents

Pod Preset 是一種 API 資源,用於在創建時將額外的運行時需求注入到 Pod 中。 使用 Pod Preset 允許 Pod 模板作者不必明確提供每個 Pod 的所有信息。 這樣,使用特定服務的 pod 模板的作者不需要知道有關該服務的所有詳細信息。

有關更多信息,請查看 官方文檔

在 Helm 中部署對象的順序

部署順序在Helm硬編碼。 列表可以在這里找到。

此外,如果資源不在列表中,它將作為最后一個執行。

從評論中回答問題*

回答您的問題 - 要實現與默認順序不同的順序,您可以創建兩個掌舵圖表,其中一個帶有部署,然后使用preinstall hook執行,確保預設存在。

預安裝掛鈎注釋允許在呈現模板之后但在創建任何資源之前執行。

Github線程上提到了此解決方法。 服務示例:

apiVersion: v1
kind: Service
metadata:
  name: foo
  annotations:
    "helm.sh/hook": "pre-install"

作為附加信息,可以為掛鈎定義權重,這將有助於構建確定性的執行順序。

 annotations: "helm.sh/hook-weight": "5"

有關此注釋的更多詳細信息,請查看此Stackoverflow 問題

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM