【问题标题】:Helm install in certain orderHelm 按特定顺序安装
【发布时间】:2019-01-28 04:09:15
【问题描述】:

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

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

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

作业需要 Secret 和 ConfigMap 中的信息,否则我会将其作为预安装挂钩。但我不能让所有东西都成为钩子,否则我的版本中不会管理任何东西。

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

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

【问题讨论】:

  • 您是否已经尝试过使用a multi-document YAML file?多文档 YAML 是一个有序列表,但我不知道它们是否按该顺序应用。我会希望如此但我希望很多事情
  • 出于兴趣,Job 做了什么?
  • 我问的部分原因是我想知道您是否可以在部署中放置一个 initContainer 并将 Job 的逻辑移到那里。无论如何,应该首先使用 helm 的资源排序来创建 configmap 和 secret
  • @RyanDawson 作业准备数据库,我不希望它为每个部署 Pod 运行。
  • 如果您选择这样做,您可以在开始时通过检查使其具有幂等性。有关从官方 helm/charts repo 执行此操作的示例,请参阅 github.com/helm/charts/…github.com/helm/charts/blob/master/stable/keycloak/templates/…

标签: kubernetes kubernetes-helm


【解决方案1】:

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

  1. 命名空间
  2. 资源配额
  3. 限制范围
  4. PodSecurityPolicy
  5. 秘密
  6. 配置映射
  7. 存储类
  8. 持久卷
  9. PersistentVolumeClaim
  10. 服务帐户
  11. 自定义资源定义
  12. 集群角色
  13. 集群角色绑定
  14. 角色
  15. 角色绑定
  16. 服务
  17. 守护程序集
  18. 吊舱
  19. 复制控制器
  20. 副本集
  21. 部署
  22. 有状态集
  23. 工作
  24. CronJob
  25. 入口
  26. API 服务

在卸载版本期间,顺序颠倒(请参阅here)。

按照这个逻辑,当你的 Job 资源被创建时,Secret 和 ConfigMap 都已经被应用了,但是 Helm 在应用 Deployment 之前不会等待 Job 完成。 如果您将图表分成两部分(1-4、5)并按顺序安装它们,您仍然会遇到部署可能在作业完成之前应用的问题。 我建议将您的图表分成两部分(1-3、4-5),其中作业有一个预安装挂钩,这将确保它在应用部署之前完成。

【讨论】:

  • 感谢您的建议,我将阅读更多有关图表依赖项的内容并尝试将其拆分为 (1-3,4-5)。我的后续问题是,这是一个“最佳实践”还是我已经从我的问题开始偏离了那个理想?另外,感谢您提供代码链接,我很难找到这样有用的东西!
  • 我不确定这里的最佳实践是什么,但据我所知,有两种选择 - 拆分图表或使用 init 容器使您的 k8s 资源具有幂等性。两者各有利弊(主要是在选择拆分图表时具有更简单的 k8s 资源和不太复杂的逻辑,但在应用 Helm 图表和管理版本时需要更复杂的逻辑)。恕我直言,我会根据您的情况拆分图表。
  • 不错的答案和简单的解释
  • List 类型的顺序是什么?
【解决方案2】:

Helm 3.7 的顺序如下(撰写本文时的最新版本):

  1. 命名空间
  2. 网络策略
  3. 资源配额
  4. 限制范围
  5. PodSecurityPolicy
  6. PodDisruptionBudget
  7. 服务帐户
  8. 秘密
  9. 秘密清单
  10. 配置映射
  11. 存储类
  12. 持久卷
  13. PersistentVolumeClaim
  14. 自定义资源定义
  15. 集群角色
  16. 集群角色列表
  17. 集群角色绑定
  18. ClusterRoleBindingList
  19. 角色
  20. 角色列表
  21. 角色绑定
  22. 角色绑定列表
  23. 服务
  24. 守护程序集
  25. 吊舱
  26. 复制控制器
  27. 副本集
  28. 部署
  29. Horizo​​ntalPodAutoscaler
  30. 有状态集
  31. 工作
  32. CronJob
  33. 入口
  34. API 服务

Source。 与上面的唯一区别是资源类型更多,ServiceAccount 在列表中略微上推。

另外,根据this closed git issueCustomResources 是在上面列出的所有内容之后最后安装的。

另请注意,如果您想更改此顺序并在其他所有操作之前创建某个资源,您可以使用chart hooks 进行此操作

【讨论】:

    猜你喜欢
    • 2020-04-26
    • 1970-01-01
    • 2019-09-30
    • 2014-08-17
    • 1970-01-01
    • 2021-09-18
    • 1970-01-01
    • 2021-11-16
    • 1970-01-01
    相关资源
    最近更新 更多