【问题标题】:How to Helm upgrade only subchart如何 Helm 仅升级子图
【发布时间】:2021-08-18 15:35:48
【问题描述】:

我在一个舵图下有多个子图。我使用命令安装那些

helm install my-app . --values values.dev.yaml

它工作正常。所有子图表都是一个版本的一部分。现在我要求其他成员将开始使用这些单独的子图表,并希望在不删除/升级整个应用程序的子图表的情况下升级他们的子图表并在同一个版本中

所以当升级一个说前端子图时。我试过了

helm upgrade my-app ./charts/frontend --values values.dev.yaml.

它将终止所有其他 pod 并仅保留此子图表前端的 pod 运行。有没有办法只升级应用程序的子图表而不触及其他子图表?

【问题讨论】:

    标签: kubernetes-helm helm3


    【解决方案1】:

    在顶层图表上正常运行helm upgrade即可

    rm requirements.lock
    helm dependency update
    helm upgrade my-app . -f values.dev.yaml
    

    这将“重新部署”整个图表,包括其所有子图表,但 Helm 知道不会将未更改的对象重新提交给 Kubernetes,并且 Kubernetes 知道在提交未修改的对象时不会采取行动。

    Helm 子图有一些限制;除了你在这里描述的不能单独管理子图表的版本之外,它们还会将递归依赖关系扁平化(如果 A 依赖 B 依赖 Redis,A 依赖 C 依赖 Redis,B 和 C 将共享一个单个 Redis 安装,可能会发生冲突)。如果您需要单独管理版本,请考虑将图表安装为单独的顶级版本。

    【讨论】:

    • 是的。我想如果只有一个版本,我们就不能在子图表级别管理版本。因此为不同的子图表创建了不同的版本。到目前为止工作正常
    【解决方案2】:

    如果您的子图表是第 3 方依赖项(即您将一些图表组合在一个图表中),您可以通过更新 Helm 依赖项来更新外部图表:

    Chart.yaml 所在的 Helm 图表目录中,运行

    $ helm dependency update
    

    为确保您获得最新的依赖项,请先更新 Helm 存储库:

    $ helm repo update && helm dependency update
    

    这将下载最新的相关图表(或允许的最新图表,具体取决于您的 Chart.yaml 配置。

    请注意helm dependency update 将下载 txz 文件。如果不采取任何措施(即在 git 中忽略它们),它们最终可能会在您的 git 存储库中受版本控制。

    【讨论】:

      猜你喜欢
      • 2023-03-08
      • 2022-11-11
      • 2021-01-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-06-16
      相关资源
      最近更新 更多