gta*_*ato 11 kubernetes kubernetes-helm kubernetes-custom-resources
我有一个 helm 图表 A,它依赖于第三方子图表 B。图表 B 定义了图表 A 使用的一些 CRD。但是,当我安装图表 A(因此也是 B)时,我收到一条错误消息,指出 CRD 是未能识别。看来 CR 是在 CRD 之前存储的。
有关CRD的 Helm 文档 描述了两种处理此订单的方法,要么将 CRD 放在名为 crds 的文件夹中,要么使用两个单独的图表并一个接一个地安装它们。
我的问题如下:
(您不必回答所有问题,只要回答其中任何一个问题即可)
有一种非常简单的方法可以让主图表安装由依赖图表的 CRD 定义的对象。只需使用post-install和post-upgrade挂钩安装和升级它们即可。
只是给你一个简单的例子。让我们想象一下,您需要安装一个 cert-manager 作为子图表,然后您的主图表需要安装一个Issuer. 显然,初始安装失败,因为尚未安装 CRD,因此Issuer未通过验证。但是,如果您使用钩子(通过将以下注释添加到您的Issuer:模板中"helm.sh/hook": post-install,post-upgrade),那么Issuer只会在安装过程的最后,当 cert-manager 启动并启动时安装。
有关 Helm 如何处理 CRD 的完整推理可以在hip-0011中找到。我建议阅读它,但简而言之:
1.“核心问题是 CRD(作为全局共享资源)很脆弱。安装 CRD 后,我们通常必须假设它在命名空间和用户组之间共享。因此,安装、修改和删除 CRD 是一个对该集群的所有用户和系统都有影响的过程。”
和
“由于存在意外数据丢失的危险,这是经过多次社区讨论后做出的明确决定”
不,依赖项也可以用于其他目的。
恐怕会很复杂,请查看此处的讨论。
| 归档时间: |
|
| 查看次数: |
4180 次 |
| 最近记录: |