1

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

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

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

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

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

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

4

2 回答 2

2

只需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 安装,可能会发生冲突)。如果您需要单独管理版本,请考虑将图表安装为单独的顶级版本。

于 2021-08-19T14:53:12.740 回答
0

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

一旦进入 Helm 图表目录,在哪里Chart.yaml生活,运行

$ helm dependency update

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

$ helm repo update && helm dependency update

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

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

于 2021-09-27T08:26:21.573 回答