kubernetes - Helm 图表部署排序
问题描述
我创建了一个包含 2 个 podPreset 和 2 个部署的新图表,当我运行 helm install 时,首先创建了部署(pod)对象,然后创建了 podPresets,因此来自 podPreset 的值不会应用于 pod,但是当我首先手动创建 podPreset然后部署正确应用预设,有没有一种方法可以在 helm 中指定应该首先创建哪个对象。
解决方案
将其发布为社区 Wiki 以获得更好的可见性,因为答案在@Rastko 的另一个答案下方的评论中提供。
PodPresents
Pod Preset 是一种 API 资源,用于在创建时向 Pod 注入额外的运行时需求。使用 Pod 预设允许 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 问题。
推荐阅读
- flutter - 如何在 GridView 中每 6 个不同的项目渲染一个图像?
- reactjs - 使用到达路由器检测路由是否是初始页面加载?
- c# - 如何从 .py 文件中读取代码作为 C# 中的字符串?
- python - Django:如何通过唯一约束字段的验证以更新模型记录
- javascript - 反应导航向我发送此错误:路由路由器的组件必须是反应组件
- java - JBOSS - 未能执行目标,重新部署失败
- python - 当我在 python 中写 "a, b, c = [[],] * 3" 时发生了什么?似乎a,b,c是同一个对象
- swift - 如何在 Swift 5 中使 Decimal 符合 LosslessStringConvertible?
- angular7 - 如何使用带有表单控件而不是 ngModel 的 NgIF 条件
- python - 将用户定义的函数应用于 DataFrame 失败,Python 3.6