gpt4 book ai didi

kubernetes - 2 个具有共享 Redis 依赖关系的 Helm Charts

转载 作者:行者123 更新时间:2023-12-04 15:38:04 25 4
gpt4 key购买 nike

目前,我有 2 个 Helm 图表 - 图表 A 和图表 B。图表 A 和图表 B 对 Redis 实例具有相同的依赖性,如 Chart.yaml 文件中所定义:

dependencies:
- name: redis
version: 1.1.21
repository: https://kubernetes-charts.storage.googleapis.com/

我还覆盖了 Redis 的名称,因为连续应用 2 个图表会产生 2 个 Redis 实例,如下所示:

redis:
fullnameOverride: "redis"

当我尝试安装图表 A 然后安装图表 B 时,出现以下错误:

错误:呈现的 list 包含已存在的资源。无法继续安装:现有资源冲突:种类:PersistentVolumeClaim,命名空间:默认,名称:redis

给我的印象是,如果实例已经存在,那么具有相同依赖关系的 2 个图表会使用相同的实例吗?

最佳答案

当您使用 Helm 安装 chart 时,它通常希望每个 release 都有自己独立的 Kubernetes 对象集。在您展示的基本示例中,我希望看到 Kubernetes 服务对象的名称类似于

release-a-application-a
release-a-redis
release-b-application-b
release-b-redis

一般约定对象的命名以{{ .Release.Name }}开头,所以两个Redise是分开的。

这实际上是预期的设置。构建微服务的典型规则是每个服务都包含自己的隔离存储,并且服务之间永远不会共享存储。这个 Helm 模式支持这一点,并且拥有这个设置并没有真正的缺点。

如果您真的希望这两个图表共享一个 Redis 安装,您可以编写一个“伞形”图表,它本身不执行任何操作,但依赖于两个应用程序图表。该图表将有一个 Chart.yaml 文件和(在 Helm 2 中)一个 requirements.yaml 文件,该文件引用其他两个图表,但不是 templates 自己的目录。这将导致 Helm 得出结论,单个 Redis 可以支持这两个应用程序,并且您最终会得到类似的东西

umbrella-application-a
umbrella-application-b
umbrella-redis

(根据我的经验,您通常想要这个——您确实想要每个应用程序一个单独的 Redis——因此尝试使用伞形图管理多个安装并不'工作特别好。)

关于kubernetes - 2 个具有共享 Redis 依赖关系的 Helm Charts,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59093888/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com