按特定顺序进行头盔安装



我正在尝试使用以下资源创建一个 Helm 图表:

  1. 秘密
  2. 配置地图
  3. 服务
  4. 工作
  5. 部署

这些也按照我希望部署它们的顺序排列。我在部署中放置了一个钩子,以便它是安装后,但是 Helm 没有将其视为资源,我必须手动管理它。

作业需要 Secret 和 ConfigMap 中的信息,否则我会将其作为预安装钩子。但是我不能把所有东西都变成一个钩子,否则在我的版本中什么都不会管理。

是否有人有解决方案或想法能够管理 Helm 版本中的所有资源并确保作业在部署开始之前完成?

我现在唯一的想法是两个制作两个图表:一个是 1-4,第二个是 5,这取决于第一个。

Helm收集给定图表及其依赖项中的所有资源,按资源类型对它们进行分组,然后按以下顺序安装它们(请参阅此处 - Helm 2.10(:

  1. Namespace
  2. 资源配额
  3. 极限范围
  4. PodSecurityPolicy
  5. 秘密
  6. 配置地图
  7. 存储类
  8. 持久卷
  9. 持久卷声明
  10. 服务帐户
  11. 自定义资源定义
  12. 集群角色
  13. 群集角色绑定
  14. 角色
  15. 角色绑定
  16. 服务
  17. 守护程序集
  18. 复制控制器
  19. 副本集
  20. 部署
  21. 有状态集
  22. 工作
  23. 克朗乔布斯
  24. 入口
  25. APIService

在卸载发行版期间,顺序颠倒(请参阅此处(。

按照此逻辑,在创建作业资源的情况下,机密和配置映射都已应用,但 Helm 不会等待作业完成即可应用部署。 如果将图表拆分为两部分(1-4、5(并按顺序安装它们,则仍然会遇到在作业完成之前可能应用部署的问题。 我的建议是将图表分为两部分(1-3,4-5(,其中作业有一个预安装钩子,这将确保它在应用部署之前完成。

Helm 尝试按特定顺序安装东西,但在继续之前不会检查 pod/部署/作业是否正在运行/已完成。另请注意,图表及其依赖项是同时安装的,因此不能使用具有依赖项的图表来重新排序 Helm 安装资源的方式。

您可以使用图表挂钩来更改顺序,但这些不是托管资源。就我而言,问题是我们需要自定义资源,然后我们需要一个简短的脚本来运行,然后我们需要开始部署。使用--wait,如果脚本所在的 pod 已完成,Helm 会将升级/安装标记为失败并回滚。在这种情况下,解决方案只是使用 Job 而不是 Pod,这个问题的评论者比我有更多的问题,然后接受部署会在一切最终准备就绪之前重新启动几次。

Helm 3.7 安装顺序:

  1. Namespace
  2. 网络政策
  3. 资源配额
  4. 极限范围
  5. PodSecurityPolicy
  6. 豆荚中断预算
  7. 服务帐户
  8. 秘密
  9. 机密列表
  10. 配置地图
  11. 存储类
  12. 持久卷
  13. 持久卷声明
  14. 自定义资源定义
  15. 集群角色
  16. 群集角色列表
  17. 群集角色绑定
  18. 群集角色绑定列表
  19. 角色
  20. 角色列表
  21. 角色绑定
  22. 角色绑定列表
  23. 服务
  24. 守护程序集
  25. 复制控制器
  26. 副本集
  27. 部署
  28. HorizontalPodAutoscaler
  29. 有状态集
  30. 工作
  31. 克朗乔布斯
  32. 入口
  33. APIService
  34. 这个关闭的 Git 问题告诉我们CustomResource最后安装。

源。 与上面的唯一区别是更多的资源类型,并且服务帐户在列表中略微上推。

最新更新